mbox series

[FFmpeg-devel,0/6,v2] avformat/movenc: normalize on AC-3 parser usage

Message ID 20220617130443.188377-1-jeebjp@gmail.com
Headers show
Series avformat/movenc: normalize on AC-3 parser usage | expand

Message

Jan Ekström June 17, 2022, 1:04 p.m. UTC
The simplified parsing currently in `mov_write_ac3_tag` trusts the content
of the packets a bit too much (the AC-3 parser returns all data fed to it,
including any possible data before the start code), while the existing E-AC-3
logic does proper header validation by utilizing the (E-)AC-3 parser.

Thus, normalize on AC-3 parser usage for both AC-3 and E-AC-3.

Difference to v1:
* Instead of expanding the avpriv parser interface, make the bit rate table
  available to libavformat as well as libavcodec. This also theoretically
  allows the calculation based on data rate, thus allowing the correct
  bit rate to be signaled with bsids 9 and 10, which have their effective
  bit rate and sample rate values divided by 2 and 4 respectively.

Jan

Jan Ekström (6):
  avcodec: make AC-3 bit rate table available in a separate header
  {configure,avformat/movenc}: enable AC-3 parser for movenc
  avformat/movenc: enable handle_eac3 to handle AC-3 tracks
  avformat/movenc: move eac3_info definition so that it can be used for
    AC-3
  avformat/movenc: utilize existing AC-3 parsing workflow for AC-3
  avformat/movenc: handle OOM situations when parsing AC-3 headers

 configure                     |   2 +-
 libavcodec/Makefile           |   8 ++-
 libavcodec/ac3_bitrate_tab.c  |  22 +++++++
 libavcodec/ac3_bitrate_tab.h  |  33 ++++++++++
 libavcodec/ac3tab.c           |   6 --
 libavformat/Makefile          |   1 +
 libavformat/ac3_bitrate_tab.c |  22 +++++++
 libavformat/movenc.c          | 121 ++++++++++++++++++----------------
 8 files changed, 148 insertions(+), 67 deletions(-)
 create mode 100644 libavcodec/ac3_bitrate_tab.c
 create mode 100644 libavcodec/ac3_bitrate_tab.h
 create mode 100644 libavformat/ac3_bitrate_tab.c

Comments

Jan Ekström June 20, 2022, 7:19 a.m. UTC | #1
On Fri, Jun 17, 2022 at 4:04 PM Jan Ekström <jeebjp@gmail.com> wrote:
>
> The simplified parsing currently in `mov_write_ac3_tag` trusts the content
> of the packets a bit too much (the AC-3 parser returns all data fed to it,
> including any possible data before the start code), while the existing E-AC-3
> logic does proper header validation by utilizing the (E-)AC-3 parser.
>
> Thus, normalize on AC-3 parser usage for both AC-3 and E-AC-3.
>
> Difference to v1:
> * Instead of expanding the avpriv parser interface, make the bit rate table
>   available to libavformat as well as libavcodec. This also theoretically
>   allows the calculation based on data rate, thus allowing the correct
>   bit rate to be signaled with bsids 9 and 10, which have their effective
>   bit rate and sample rate values divided by 2 and 4 respectively.
>

I will move towards pulling this patch set in tomorrow unless there
are objections. The earlier version of this patch set has been
successfully working in various locations, and the effective result
from this version of the patch set seems to be the same.

Jan