mbox series

[FFmpeg-devel,v5,0/6] Add support for Closed Caption FIFO

Message ID 1683237740-32743-1-git-send-email-dheitmueller@ltnglobal.com
Headers show
Series Add support for Closed Caption FIFO | expand

Message

Devin Heitmueller May 4, 2023, 10:02 p.m. UTC
This latest update to the patch series includes several fixes from
Lance Wang to the vf_ccrepack, as well as incorporating feedback
from Anton Khirnov.

The primary change across all the filters was to make the filter error
out if the ff_ccfifo_alloc() call failed.  This is reasonable because
as a result of recent changes it cannot fail for any reason other
than a memory allocation error.  This also dovetails with the change
that you're no longer allowed to call inject/extract with the AVCCFifo
structure being a NULL pointer, which is what would have happened if we
had allowed filters to continue even if the allocation of the ccfifo
failed.

We've also changed the logic such that now the caller allocates the
memory for the buffer to be injected into (per Anton's suggestion), based
on a new API call to get the size of the expected output buffer.  This
avoids dynamically allocating the buffer beforehand and then having to
memcpy() the result into whatever memory it really needs to be in
(e.g. AVPacket side data).

Devin Heitmueller (6):
  ccfifo: Properly handle CEA-708 captions through framerate conversion
  vf_fps: properly preserve CEA-708 captions
  yadif: Properly preserve CEA-708 closed captions
  tinterlace: Properly preserve CEA-708 closed captions
  vf_ccrepack: Add new filter to repack CEA-708 side data
  decklink_enc: add support for playout of 608 captions in MOV files

 doc/filters.texi              |  10 ++
 libavdevice/Makefile          |   1 +
 libavdevice/ccfifo.c          |  24 +++++
 libavdevice/decklink_common.h |   3 +
 libavdevice/decklink_enc.cpp  |  65 +++++++++++++
 libavdevice/decklink_enc_c.c  |   2 +-
 libavfilter/Makefile          |   2 +
 libavfilter/allfilters.c      |   1 +
 libavfilter/ccfifo.c          | 222 ++++++++++++++++++++++++++++++++++++++++++
 libavfilter/ccfifo.h          | 110 +++++++++++++++++++++
 libavfilter/tinterlace.h      |   2 +
 libavfilter/vf_bwdif.c        |   8 ++
 libavfilter/vf_ccrepack.c     | 102 +++++++++++++++++++
 libavfilter/vf_fps.c          |  11 ++-
 libavfilter/vf_tinterlace.c   |  11 +++
 libavfilter/vf_yadif.c        |   8 ++
 libavfilter/vf_yadif_cuda.c   |   9 ++
 libavfilter/yadif.h           |   2 +
 libavfilter/yadif_common.c    |   5 +
 19 files changed, 596 insertions(+), 2 deletions(-)
 create mode 100644 libavdevice/ccfifo.c
 create mode 100644 libavfilter/ccfifo.c
 create mode 100644 libavfilter/ccfifo.h
 create mode 100644 libavfilter/vf_ccrepack.c