This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 19b3d47007d8925be6bb62a70c5bf78ba99a6b7d Author: James Almer <[email protected]> AuthorDate: Fri May 29 12:13:15 2026 -0300 Commit: James Almer <[email protected]> CommitDate: Tue Jun 2 19:50:39 2026 -0300 avcodec/av1dec: use the ITU-T T35 parsing helpers Signed-off-by: James Almer <[email protected]> --- configure | 2 +- libavcodec/av1dec.c | 114 +++++----------------------------------------------- 2 files changed, 11 insertions(+), 105 deletions(-) diff --git a/configure b/configure index a1afc9366b..fa170f6056 100755 --- a/configure +++ b/configure @@ -3156,7 +3156,7 @@ asv2_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp" atrac1_decoder_select="sinewin" atrac3p_decoder_select="sinewin" atrac3pal_decoder_select="sinewin" -av1_decoder_select="atsc_a53 cbs_av1 dovi_rpudec" +av1_decoder_select="cbs_av1 itut_t35" bink_decoder_select="blockdsp hpeldsp" binkaudio_dct_decoder_select="wma_freqs" binkaudio_rdft_decoder_select="wma_freqs" diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 78edb3c8d4..424bbfc431 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -968,113 +968,19 @@ fail: static int export_itut_t35(AVCodecContext *avctx, AVFrame *frame, const AV1RawMetadataITUTT35 *itut_t35) { - GetByteContext gb; AV1DecContext *s = avctx->priv_data; - int ret, provider_code, country_code; - - bytestream2_init(&gb, itut_t35->payload, itut_t35->payload_size); - - country_code = itut_t35->itu_t_t35_country_code ; - switch (country_code) { - case ITU_T_T35_COUNTRY_CODE_US: - provider_code = bytestream2_get_be16(&gb); - - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_ATSC: { - uint32_t user_identifier = bytestream2_get_be32(&gb); - switch (user_identifier) { - case MKBETAG('G', 'A', '9', '4'): { // closed captions - AVBufferRef *buf = NULL; - - ret = ff_parse_a53_cc(&buf, gb.buffer, bytestream2_get_bytes_left(&gb)); - if (ret < 0) - return ret; - if (!ret) - break; - - ret = ff_frame_new_side_data_from_buf(avctx, frame, AV_FRAME_DATA_A53_CC, &buf); - if (ret < 0) - return ret; - -#if FF_API_CODEC_PROPS -FF_DISABLE_DEPRECATION_WARNINGS - avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; -FF_ENABLE_DEPRECATION_WARNINGS -#endif - break; - } - default: // ignore unsupported identifiers - break; - } - break; - } - case ITU_T_T35_PROVIDER_CODE_SAMSUNG: { - AVDynamicHDRPlus *hdrplus; - int provider_oriented_code = bytestream2_get_be16(&gb); - int application_identifier = bytestream2_get_byte(&gb); - - if (provider_oriented_code != 1 || application_identifier != 4) - return 0; // ignore - - hdrplus = av_dynamic_hdr_plus_create_side_data(frame); - if (!hdrplus) - return AVERROR(ENOMEM); - - ret = av_dynamic_hdr_plus_from_t35(hdrplus, gb.buffer, - bytestream2_get_bytes_left(&gb)); - if (ret < 0) - return ret; - break; - } - case ITU_T_T35_PROVIDER_CODE_DOLBY: { - int provider_oriented_code = bytestream2_get_be32(&gb); - if (provider_oriented_code != 0x800) - return 0; // ignore - - ret = ff_dovi_rpu_parse(&s->dovi, gb.buffer, bytestream2_get_bytes_left(&gb), - avctx->err_recognition); - if (ret < 0) { - av_log(avctx, AV_LOG_WARNING, "Error parsing DOVI OBU.\n"); - return 0; // ignore - } + FFITUTT35 itut35 = { .country_code = itut_t35->itu_t_t35_country_code }; + FFITUTT35Aux aux = { .dovi = &s->dovi }; + int ret; - ret = ff_dovi_attach_side_data(&s->dovi, frame); - if (ret < 0) - return ret; - break; - } - default: - break; - } - break; - case ITU_T_T35_COUNTRY_CODE_UK: - bytestream2_skip(&gb, 1); // t35_uk_country_code_second_octet - - provider_code = bytestream2_get_be16(&gb); - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_VNOVA: { - AVFrameSideData *sd; - if (bytestream2_get_bytes_left(&gb) < 2) - return AVERROR_INVALIDDATA; - - ret = ff_frame_new_side_data(avctx, frame, AV_FRAME_DATA_LCEVC, - bytestream2_get_bytes_left(&gb), &sd); - if (ret < 0) - return ret; - if (!sd) - break; + ret = ff_itut_t35_parse_buffer(&itut35, itut_t35->payload, itut_t35->payload_size, + FF_ITUT_T35_FLAG_COUNTRY_CODE); + if (ret <= 0) + return ret; - bytestream2_get_bufferu(&gb, sd->data, sd->size); - break; - } - default: - break; - } - break; - default: - // ignore unsupported provider codes - break; - } + ret = ff_itut_t35_parse_payload_to_frame(&itut35, &aux, avctx, frame); + if (ret < 0) + return ret; return 0; } _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
