This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 6dad70507f0dea5e288fb1166c695658a5c7326c
Author:     James Almer <[email protected]>
AuthorDate: Mon Dec 8 22:35:33 2025 -0300
Commit:     James Almer <[email protected]>
CommitDate: Fri Dec 12 15:21:48 2025 -0300

    avcodec/cbs_sei: store a pointer to the start of Registered and 
Unregistered SEI messages
    
    Required for the following commit, where a parsing function expects the 
buffer
    to include the country code bytes.
    
    Signed-off-by: James Almer <[email protected]>
---
 libavcodec/cbs_sei.c                 |  4 ++--
 libavcodec/cbs_sei.h                 |  6 ++++--
 libavcodec/cbs_sei_syntax_template.c | 15 ++++++++++++++-
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/libavcodec/cbs_sei.c b/libavcodec/cbs_sei.c
index acc3578aa9..d57901f15d 100644
--- a/libavcodec/cbs_sei.c
+++ b/libavcodec/cbs_sei.c
@@ -28,13 +28,13 @@
 static void cbs_free_user_data_registered(AVRefStructOpaque unused, void *obj)
 {
     SEIRawUserDataRegistered *udr = obj;
-    av_refstruct_unref(&udr->data);
+    av_refstruct_unref(&udr->data_ref);
 }
 
 static void cbs_free_user_data_unregistered(AVRefStructOpaque unused, void 
*obj)
 {
     SEIRawUserDataUnregistered *udu = obj;
-    av_refstruct_unref(&udu->data);
+    av_refstruct_unref(&udu->data_ref);
 }
 
 int ff_cbs_sei_alloc_message_payload(SEIRawMessage *message,
diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h
index 81867b79a7..decc4e19e1 100644
--- a/libavcodec/cbs_sei.h
+++ b/libavcodec/cbs_sei.h
@@ -33,13 +33,15 @@ typedef struct SEIRawFillerPayload {
 typedef struct SEIRawUserDataRegistered {
     uint8_t      itu_t_t35_country_code;
     uint8_t      itu_t_t35_country_code_extension_byte;
-    uint8_t     *data; ///< RefStruct reference
+    uint8_t     *data;
+    uint8_t     *data_ref; ///< RefStruct reference
     size_t       data_length;
 } SEIRawUserDataRegistered;
 
 typedef struct SEIRawUserDataUnregistered {
     uint8_t      uuid_iso_iec_11578[16];
-    uint8_t     *data; ///< RefStruct reference
+    uint8_t     *data;
+    uint8_t     *data_ref; ///< RefStruct reference
     size_t       data_length;
 } SEIRawUserDataUnregistered;
 
diff --git a/libavcodec/cbs_sei_syntax_template.c 
b/libavcodec/cbs_sei_syntax_template.c
index e6863a0fd7..f70eb24d80 100644
--- a/libavcodec/cbs_sei_syntax_template.c
+++ b/libavcodec/cbs_sei_syntax_template.c
@@ -57,9 +57,16 @@ SEI_FUNC(user_data_registered, (CodedBitstreamContext *ctx, 
RWContext *rw,
         return AVERROR_INVALIDDATA;
     }
     current->data_length = state->payload_size - i;
-#endif
 
+    allocate(current->data_ref, state->payload_size);
+    current->data = current->data_ref;
+
+    *current->data++ = current->itu_t_t35_country_code;
+    if (current->itu_t_t35_country_code == 0xff)
+        *current->data++ = current->itu_t_t35_country_code_extension_byte;
+#else
     allocate(current->data, current->data_length);
+#endif
     for (j = 0; j < current->data_length; j++)
         xu(8, itu_t_t35_payload_byte[], current->data[j], 0x00, 0xff, 1, i + 
j);
 
@@ -86,7 +93,13 @@ SEI_FUNC(user_data_unregistered, (CodedBitstreamContext 
*ctx, RWContext *rw,
     for (i = 0; i < 16; i++)
         us(8, uuid_iso_iec_11578[i], 0x00, 0xff, 1, i);
 
+#ifdef READ
+    allocate(current->data_ref, state->payload_size);
+    memcpy(current->data_ref, current->uuid_iso_iec_11578, 
sizeof(current->uuid_iso_iec_11578));
+    current->data = current->data_ref + 16;
+#else
     allocate(current->data, current->data_length);
+#endif
 
     for (i = 0; i < current->data_length; i++)
         xu(8, user_data_payload_byte[i], current->data[i], 0x00, 0xff, 1, i);

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to