h264_metadata: Fix AUD writing
authorMark Thompson <sw@jkqxz.net>
Mon, 7 May 2018 22:12:28 +0000 (23:12 +0100)
committerMark Thompson <sw@jkqxz.net>
Thu, 10 May 2018 22:53:54 +0000 (23:53 +0100)
The aud structure exists on the stack, so the variable was previously
out-of-scope when the unit is written.

libavcodec/h264_metadata_bsf.c

index 1fbc5e3..90ad4aa 100644 (file)
@@ -220,6 +220,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     AVPacket *in = NULL;
     CodedBitstreamFragment *au = &ctx->access_unit;
     int err, i, j, has_sps;
+    H264RawAUD aud;
     uint8_t *displaymatrix_side_data = NULL;
     size_t displaymatrix_side_data_size = 0;
 
@@ -256,9 +257,6 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
                 0x3ff, // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
             };
             int primary_pic_type_mask = 0xff;
-            H264RawAUD aud = {
-                .nal_unit_header.nal_unit_type = H264_NAL_AUD,
-            };
 
             for (i = 0; i < au->nb_units; i++) {
                 if (au->units[i].type == H264_NAL_SLICE ||
@@ -281,7 +279,10 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
                 goto fail;
             }
 
-            aud.primary_pic_type = j;
+            aud = (H264RawAUD) {
+                .nal_unit_header.nal_unit_type = H264_NAL_AUD,
+                .primary_pic_type = j,
+            };
 
             err = ff_cbs_insert_unit_content(ctx->cbc, au,
                                              0, H264_NAL_AUD, &aud, NULL);