Browse Source

h264_metadata: Fix AUD writing

The aud structure exists on the stack, so the variable was previously
out-of-scope when the unit is written.
tags/n4.1
Mark Thompson 7 years ago
parent
commit
9d375e114a
1 changed files with 5 additions and 4 deletions
  1. +5
    -4
      libavcodec/h264_metadata_bsf.c

+ 5
- 4
libavcodec/h264_metadata_bsf.c View File

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


Loading…
Cancel
Save