Hi,

I'm working on an application for a hardware device I built. In essence, I 
obtain raw data from an optical receiver, which can be AC3, DTS, etc, and use 
ffmpeg to decode this into multi-channel analog output. It all works, but I was 
wondering what I can do to speed up the detection of the codec, especially if 
header packets are missed (because it captures mid-stream).

To give ffmpeg IO, I make my own AVIOContext [1] with a callback function that 
reads from a semaphore controlled buffer. I assign that to avFormatContext->pb 
[2]. Then I open the stream with:

  avformat_open_input(&avFormatContext, NULL, NULL, NULL) [3]

This function blocks until a good codec is detected (or gives up?). Especially 
for DTS, this can take a very long time, especially when it missed headers.

Is there a way to speed this up? Would it help for instance to not use 
av_register_all() and avcodec_register_all()? If so, how and what do I register 
what I need (documentation is unclear to me; it doesn't give examples).

If there is any information in the original s/pdif bitstream, that is lost. The 
DIR9001 chip only outputs the contents.

Regards,

Wiebe



[1] http://ffmpeg.org/doxygen/trunk/structAVIOContext.html
[2] http://ffmpeg.org/doxygen/trunk/structAVFormatContext.html
[3] 
http://ffmpeg.org/doxygen/3.4/group__lavf__decoding.html#ga31d601155e9035d5b0e7efedc894ee49
_______________________________________________
Libav-user mailing list
Libav-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to