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]

Reply via email to