mbox series

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

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

Message

Jan Ekström June 30, 2022, 6:42 a.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 v4:
* Reverted to v1 base (extending the avpriv) as it was preferred in review.
* Reutilized the ac3_bit_rate_code variable in the parser instead of doing
  `frame_size_code>>1` again.
* Added avcodec minor bump as it seems like we're heading towards the end here.

Jan

Jan Ekström (7):
  avcodec/ac3_parser{,_internal}: expose AC-3 bit_rate_code
  {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
  avformat/movenc: limit ISOBMFF AC-3 mapping to bsids <=8

 configure                        |   2 +-
 libavcodec/ac3_parser.c          |   5 +-
 libavcodec/ac3_parser_internal.h |   1 +
 libavcodec/version.h             |   2 +-
 libavformat/movenc.c             | 131 +++++++++++++++++--------------
 5 files changed, 79 insertions(+), 62 deletions(-)

Comments

Jan Ekström June 30, 2022, 1:18 p.m. UTC | #1
On Thu, Jun 30, 2022 at 9:42 AM 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 v4:
> * Reverted to v1 base (extending the avpriv) as it was preferred in review.
> * Reutilized the ac3_bit_rate_code variable in the parser instead of doing
>   `frame_size_code>>1` again.
> * Added avcodec minor bump as it seems like we're heading towards the end here.
>
> Jan

Applied series to master, with the following minor adjustment:

-    } else if (par->codec_id == AV_CODEC_ID_EAC3 ||
-               par->codec_id == AV_CODEC_ID_AC3) {
+    } else if (par->codec_id == AV_CODEC_ID_AC3 ||
+               par->codec_id == AV_CODEC_ID_EAC3) {

Thanks for the reviews.

Jan