[FFmpeg-devel] Can BSF delay packets?

wm4 nfxjfg at googlemail.com
Mon Feb 6 16:33:57 EET 2017


On Mon, 6 Feb 2017 09:06:37 -0500
"Ronald S. Bultje" <rsbultje at gmail.com> wrote:

> Please don't top-post.
> 
> I have to admit the new BSF API is super-confusing. I think you return
> EAGAIN but you also have to deallocate the "out" AVPacket. See
> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavcodec/vp9_superframe_bsf.c;h=b686adbe1673f564d252a30cff11c5895a9a3b55;hb=HEAD
> as an example.
> 
> The EAGAIN is handled here:
> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavcodec/bitstream_filter.c;h=02878e3bf3e9771f5921ce218771f041e19f2d59;hb=HEAD#l144
> and the unref will zero the packet, which invokes this code:
> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/utils.c;h=07113107920a910d3b3094f01a1b3f8a58b11072;hb=HEAD#l5256
> and then it will skip the packet and wait for the next.

Internal and external APIs are rather different, I guess.

> I'm not sure how to retrieve delayed packets though, it seems that's simply
> not possible ATM, not in FFmpeg but also not in Libav - at least using the
> av_bitstream_filter_filter() function... (?)

That function is deprecated, and probably can't do everything the
new "proper" API can (the send/receive ones).


More information about the ffmpeg-devel mailing list