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

Reply via email to