Hi Aleksey,

On Mon, Feb 6, 2017 at 8:45 AM, Aleksey M <hex...@gmail.com> wrote:

> Hi Ronald.
>
> Thank you for replying!
>
> If I return 0 -- how the calling function determines that I've produced an
> output packet?
>
> What do I do to signal caller that I don't want to produce an output
> packet?


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.

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... (?)

Ronald
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to