Обнаружение тайм-аута в ffmpeg

Я пишу программное обеспечение, которое широко использует ffmpeg, и оно является многопоточным, с несколькими экземплярами классов.

Если сетевое соединение обрывается, ffmpeg зависает при чтении. Я нашел метод для назначения обратного вызова, который периодически срабатывает ffmpeg, чтобы проверить, должен ли он прерываться или нет:

static int interrupt_cb(void *ctx) 
{ 

// do something 
    return 0;
} 

static const libffmpeg::AVIOInterruptCB int_cb = { interrupt_cb, NULL }; 

...

AVFormatContext* formatContext = libffmpeg::avformat_alloc_context( );
formatContext->interrupt_callback = int_cb; 
if ( libffmpeg::avformat_open_input( &formatContext, fileName, NULL, NULL ) !=0 ) {...}

Это все хорошо, но нигде в Интернете я не могу найти, что содержит *ctx и как определить должен ли обратный вызов возвращать 1 или 0. Я не могу назначить статический флаг «отмена», так как класс имеет много экземпляров. Я также не могу отладить код, так как по какой-то причине Visual Studio отказывается устанавливать точку останова при возврате 0; строка, утверждающая, что исполняемый код не связан с местоположением. Есть идеи?

8
задан Sean 19 May 2012 в 14:56
поделиться