[FFmpeg-devel] Moving enum AVFieldOrder to libavutil?

Devin Heitmueller dheitmueller at ltnglobal.com
Fri Mar 23 18:31:55 EET 2018


I am in the process of reworking libavfilter to pass along the field order across links.  For the moment I followed the model found in AVFrame where there are two int fields: “interlaced_frame” and “top_field_first”.  However it seems like it would be more appropriate to use the enum AVFieldOrder, which is a single field and provides more flexibility (including being able to be set to “unknown” if appropriate).

Does anyone have an objection to moving the definition of AVFieldOrder to libavutil, so it can be taken advantage of by libavfilter?  Right now it’s in libavcodec, and from what I understand libavfilter does not depend on libavcodec.

For what it’s worth, it looks like I’ve basically got it working - I’ve extended buffersrc/buffersink/AVFilterLink and ffmpeg, and I’m now able to propagate the interlaced state all the way from the H.264 decoder to the Decklink output during write_header(), and thus select the proper output format.  This includes it being preserved through any video filters that might be in the pipeline.  At this point it’s largely just a question of how to rework the patch to be as non-invasive as possible so it can be accepted upstream.

This approach could also be useful in the longer term for better automatic construction of pipelines - for example to be able to automatically insert a deinterlace filter if a downstream filter or encoder requires progressive video as input (similar to the way we automatically add the scaler for format conversion as needed).


Devin Heitmueller - LTN Global Communications
dheitmueller at ltnglobal.com

More information about the ffmpeg-devel mailing list