fedora6 | Salut à tous(te) J'utilise l'ISampleGrabber de MSDN et je fait appel à la fonctin GetCurrentBuffer qui ne récupére rien en faite et je sais pas où est le probléme. Mon code ne génére pas des errors, mais en insérant un breakpoint au début et en suivant les instructions pas à pas je trouve que la fonction GetCurrentBuffer ne récupére rien.
c'est ma partie de code et comme je vous ai dis as des errors donc ne me posé pas des questions de genre cette variable n'est pas declarée ou quelque chose pareil parceque tout à l'air de bien tourné .Donc si quelqu'un peut me dire qu'est-ce qui manque ou bien quel est le probléme de la non récupération du buffer:
Code :
- long CCaptureVideo::CaptureImage()
- {
- int x,y,w,h;
- pGrabber = NULL;
- HRESULT hr;
- hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pGrabberF);
- if (FAILED(hr))
- {
- AfxMessageBox("error" );
- }
- hr = m_pGraph->AddFilter(pGrabberF, L"Sample Grabber" );
- if (FAILED(hr))
- {
- AfxMessageBox("error" );
- }
- pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&pGrabber);
- getTailleImage(&w, &h);
- x=w;
- y=h;
- long size = x * y * 3;
-
- hr = pGrabber->GetCurrentBuffer(&size, NULL);
- if (FAILED(hr))
- {
- return 0;
- AfxMessageBox("can't retreive buffer size" );
- }
- char *pBuffer = new char[size];
- hr = pGrabber->GetCurrentBuffer(&size, (long*)pBuffer);
- if (FAILED(hr))
- {
- return 0;
- AfxMessageBox("can't retreive buffer" );
- }
- else {
- AfxMessageBox("buffer retreived" );
- return (long)pBuffer;
- }
- }
|
merci d'avance pour toute personne qui peut m'aider. Message édité par fedora6 le 05-05-2008 à 21:36:15 ---------------
fedora6
|