Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Ошибка в коде. Работа с avi


Автор: Predator_2004 13.4.2011, 13:35
Приветствую всех. Работаю с видео при помощи 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 кадров функция возвращает ноль. Из-за чего может быть такое? Может в коде ошибка? Буду признателен за любую помощь!

Автор: Predator_2004 14.4.2011, 08:00
Вопрос решен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)