我正在编写一些使用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拒绝在return 0;行上设置断点,声称该位置没有关联的可执行代码。有任何想法吗?