Hi all,
this set of patches tries to improve interlaced frames handling in libav.
First of all it updates AVFrame to use one AVFieldState variable instead of
two different integers. Then it introduces two new "states", that is when
the interlacing mode is unknown and when you know that the frame interlaced
but not if it's top field first or bottom field first. This also addresses
peculiar decoders, like png and utvideo, whose concept of interlacing is
slightly different than the other.
Finally it sliglty modifies the context information so that when
encoding/decoding, users can immediately see if a video contains interlaced
frames or not, and (optionally) override interlacing coding from the command
line.
This is my first large deprecation patchset, so please be gentle ^^.
Vittorio
Vittorio Giovara (36):
avframe: add AVFieldState enum and add it to AVFrame
avframe: use AVFieldState instead of interlaced_frame and
top_field_first
avconv: use AVFieldState instead of interlaced_frame and
top_field_first
ffv1dec: use AVFieldState instead of interlaced_frame and
top_field_first
ffv1enc: use AVFieldState instead of interlaced_frame and
top_field_first
proresdec: use AVFieldState instead of interlaced_frame and
top_field_first
proresenc: use AVFieldState instead of top_field_first
dnxhddec: use AVFieldState instead of interlaced_frame and
top_field_first
dnxhdenc: use AVFieldState instead of interlaced_frame and
top_field_first
pngdec: use AVFieldState instead of interlaced_frame
dvdec: use AVFieldState instead of interlaced_frame and
top_field_first
frwu: use AVFieldState instead of interlaced_frame and
top_field_first
utvideodec: use AVFieldState instead of interlaced_frame
libx264: use AVFieldState instead of top_field_first
mjpegdec: use AVFieldState instead of interlaced_frame and
top_field_first
mpeg12enc: use AVFieldState instead of top_field_first
mpeg4videoenc: use AVFieldState instead of top_field_first
yuv4mpeg: use AVFieldState instead of interlaced_frame and
top_field_first
v4l2: use AVFieldState instead of interlaced_frame and
top_field_first
mpegvideo: use AVFieldState instead of interlaced_frame and
top_field_first
h264: use AVFieldState instead of interlaced_frame and
top_field_first
hevc: make sure frame is set as progressive
vf_fieldorder: use AVFieldState instead of interlaced_frame and
top_field_first
vf_select: use AVFieldState instead of interlaced_frame and
top_field_first
vf_interlace: use AVFieldState instead of interlaced_frame and
top_field_first
vf_showinfo: use AVFieldState instead of interlaced_frame and
top_field_first
vf_yadif: use AVFieldState instead of interlaced_frame and
top_field_first
buffer: use AVFieldState instead of interlaced_frame and
top_field_first
vsrc_testsrc: use AVFieldState instead of interlaced_frame
setpts: use AVFieldState instead of interlaced_frame
avframe: deprecate interlaced_frame and top_field_first
avframe: add fallback AVFieldState initialization
libx264: correctly initialize interlaced mode
avconv: have -top enable interlaced flags automatically
avcodec utils: expand data dump to show field information
avcodec utils: correctly set the interlaced context
avconv.c | 21 ++++++++++++++++----
libavcodec/dnxhddec.c | 18 ++++++++++-------
libavcodec/dnxhdenc.c | 4 ++--
libavcodec/dvdec.c | 3 +--
libavcodec/ffv1dec.c | 16 +++++++--------
libavcodec/ffv1enc.c | 7 +++++--
libavcodec/frwu.c | 3 +--
libavcodec/h264.c | 46 +++++++++++++++++++++++++++----------------
libavcodec/hevc_refs.c | 1 +
libavcodec/libx264.c | 18 +++++++++++++----
libavcodec/mjpegdec.c | 9 ++++++---
libavcodec/mpeg12enc.c | 3 ++-
libavcodec/mpeg4videoenc.c | 2 +-
libavcodec/mpegvideo.c | 27 +++++++++++++++----------
libavcodec/pngdec.c | 10 +++++++---
libavcodec/proresdec.c | 29 ++++++++++++++++-----------
libavcodec/proresenc.c | 6 +++---
libavcodec/utils.c | 25 +++++++++++++++++++++++
libavcodec/utvideodec.c | 6 +++++-
libavdevice/v4l2.c | 11 ++++++++---
libavfilter/buffer.c | 13 ++++++++----
libavfilter/setpts.c | 2 +-
libavfilter/vf_fieldorder.c | 12 +++++++----
libavfilter/vf_interlace.c | 8 ++++----
libavfilter/vf_select.c | 4 ++--
libavfilter/vf_showinfo.c | 5 +++--
libavfilter/vf_yadif.c | 13 ++++++------
libavfilter/vsrc_testsrc.c | 2 +-
libavformat/yuv4mpeg.c | 35 +++++++++++++-------------------
libavutil/frame.c | 17 ++++++++++++++--
libavutil/frame.h | 22 +++++++++++++++++++++
libavutil/version.h | 5 ++++-
32 files changed, 269 insertions(+), 134 deletions(-)
--
1.7.9.5
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel