[FFmpeg-devel] [PATCH 00/18] AVPacketList public API

James Almer jamrial at gmail.com
Wed Nov 18 18:52:29 EET 2020


This is an attempt at introducing a public packet list API, after the
need for it outside of libavformat became evident.

It reuses the existing AVPacketList struct by making it opaque, so we
can have a head and tail pointers internally instead of having to expose
them in a very awkward way in the functions, like it's currently the case
with the private packet list functions.
Since AVPacketList is already a public struct, the only way to reuse it
was by deprecating all of its fields and scheduling making it opaque in
a soname bump >= 2 years from now.

James Almer (18):
  avcodec/packet_internal: add a PacketListEntry struct
  avformat/internal: make last_in_packet_buffer of type PacketListEntry
  avcodec/avpacket: make avpriv_packet_* use PacketListEntry
  avcodec/avpacket: add a new public AVPacketList API
  avcodec/decode: port to the new packet list API
  avformat: port AVFormatInternal->packet_buffer to the new packet list
    API
  avformat: port AVFormatInternal->raw_packet_buffer to the new packet
    list API
  avformat: port AVFormatInternal->parse_queue to the new packet list
    API
  avdevice/dshow: port to the new packet list API
  avdevice/decklink_dec: port to the new packet list API
  avdevice/vfwcap: port to the new packet list API
  avformat/ttaenc: port to the new packet list API
  avformat/mp3enc: port to the new packet list API
  avformat/flacenc: port to the new packet list API
  avformat/aiffenc: port to the new packet list API
  avformat/matroskadec: port to the new packet list API
  avcodec/avpacket: schedule the removal of avpriv_packet_list_*
  avcodec/avpacket: make the AVPacketList API thread safe

 libavcodec/avpacket.c         | 189 ++++++++++++++++++++++++++++++++--
 libavcodec/decode.c           |  20 ++--
 libavcodec/internal.h         |   1 -
 libavcodec/packet.h           |  88 +++++++++++++++-
 libavcodec/packet_internal.h  |  24 ++++-
 libavcodec/utils.c            |  11 +-
 libavcodec/version.h          |   3 +
 libavdevice/decklink_common.h |   2 +-
 libavdevice/decklink_dec.cpp  |  53 ++++------
 libavdevice/dshow.c           |  52 +++++-----
 libavdevice/vfwcap.c          |  49 ++++-----
 libavformat/aiffenc.c         |  22 ++--
 libavformat/flacenc.c         |  13 ++-
 libavformat/internal.h        |   6 +-
 libavformat/matroskadec.c     |  29 +++---
 libavformat/mp3enc.c          |  13 ++-
 libavformat/mux.c             |  64 +++++++-----
 libavformat/mxfenc.c          |  23 +++--
 libavformat/options.c         |  13 +++
 libavformat/ttaenc.c          |  14 +--
 libavformat/utils.c           | 128 ++++++++++++++++-------
 21 files changed, 583 insertions(+), 234 deletions(-)

-- 
2.29.2



More information about the ffmpeg-devel mailing list