Module: libav
Branch: master
Commit: 78fa0b9033c0834c049e2aedf71a8c613fed87ab

Author:    Mark Thompson <s...@jkqxz.net>
Committer: Mark Thompson <s...@jkqxz.net>
Date:      Sun Feb 11 15:41:07 2018 +0000

h264_metadata: Always add the SEI user data to the first access unit

This should be added even if the first access unit does not contain
parameter sets.

---

 libavcodec/h264_metadata_bsf.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c
index 356daef..d8d5487 100644
--- a/libavcodec/h264_metadata_bsf.c
+++ b/libavcodec/h264_metadata_bsf.c
@@ -62,6 +62,7 @@ typedef struct H264MetadataContext {
     int crop_bottom;
 
     const char *sei_user_data;
+    int sei_first_au;
 } H264MetadataContext;
 
 
@@ -287,14 +288,17 @@ static int h264_metadata_filter(AVBSFContext *bsf, 
AVPacket *out)
         }
     }
 
-    // Only insert the SEI in access units containing SPSs.
-    if (has_sps && ctx->sei_user_data) {
+    // Only insert the SEI in access units containing SPSs, and also
+    // unconditionally in the first access unit we ever see.
+    if (ctx->sei_user_data && (has_sps || !ctx->sei_first_au)) {
         H264RawSEIPayload payload = {
             .payload_type = H264_SEI_TYPE_USER_DATA_UNREGISTERED,
         };
         H264RawSEIUserDataUnregistered *udu =
             &payload.payload.user_data_unregistered;
 
+        ctx->sei_first_au = 1;
+
         for (i = j = 0; j < 32 && ctx->sei_user_data[i]; i++) {
             int c, v;
             c = ctx->sei_user_data[i];

_______________________________________________
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to