Estoy escribiendo algunos programas que usan ffmpeg de manera extensiva y es multihebra, con instancias de clases múltiples.detectando un tiempo de espera en ffmpeg
Si la conexión de red se cae, ffmpeg se bloquea al leer. He encontrado un método para asignar una devolución de llamada que ffmpeg incendios periódicamente para comprobar si se debe abortar o no:
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) {...}
esto está bien, pero en ninguna parte en la web puedo encontrar qué * ctx contiene y cómo determinar si la devolución de llamada debería devolver 1 o 0. No puedo asignar un indicador estático de "abortar" ya que la clase tiene muchas instancias. Tampoco puedo depurar el código porque, por algún motivo, visual studio se niega a establecer un punto de interrupción en el retorno 0; línea, afirmando que no hay código ejecutable asociado a la ubicación. ¿Algunas ideas?
Hola, gracias, sí, lo leí, no tengo ni idea de qué paque contiene. – Sean
Ah, bien, entonces, ¿qué debería poner allí? Si se trata de una constante estática, no funcionará bien con varias instancias ... – Sean
OK brilliant, thanks! Con acceso al formatoContexto, ¿cómo puedo detectar que la transmisión ha expirado? – Sean