Приветствую всех. Работаю с видео при помощи vfw. Есть такой код:
| Код | /* функция извлечения кадра по индексу */ HBITMAP GetFrame(unsigned int FrameIndex) { HBITMAP hBmp; gapgf=AVIStreamGetFrameOpen(AviStream,NULL); //готовим поток к декомпрессии кадров if(gapgf==NULL) { UnloadAvi(); return NULL; } lpbi=(PBITMAPINFOHEADER)AVIStreamGetFrame(gapgf,FrameIndex); //получаем адрес кадра по индексу if(lpbi==NULL) { AVIStreamGetFrameClose(gapgf); //освобождаем ресурсы выделенные для декомпрессии кадров return NULL; } bits=(char*)(int)lpbi+sizeof(BITMAPINFOHEADER); DC_Handle=CreateDC("Display",NULL,NULL,NULL); try { hBmp=CreateDIBitmap(DC_Handle,lpbi,4,bits,(PBITMAPINFO)lpbi,0); } finally { DeleteDC(DC_Handle); } AVIStreamGetFrameClose(gapgf); return hBmp; }
|
Проблема такая: через каждые 104-105 кадров функция возвращает ноль. Из-за чего может быть такое? Может в коде ошибка? Буду признателен за любую помощь! |