diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 0fe162bbc3..4fbc71dc5f 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -169,7 +169,6 @@ static const MXFContainerEssenceEntry mxf_essence_container_uls[] = { typedef struct MXFContext { int64_t footer_partition_offset; int essence_container_count; - uint8_t essence_containers_indices[FF_ARRAY_ELEMS(mxf_essence_container_uls)]; AVRational time_base; int header_written; MXFIndexEntry *index_entries; @@ -427,8 +426,8 @@ static void mxf_write_essence_container_refs(AVFormatContext *s) mxf_write_refs_count(pb, c->essence_container_count); av_log(s,AV_LOG_DEBUG, "essence container count:%d\n", c->essence_container_count); for (i = 0; i < c->essence_container_count; i++) { - put_buffer(pb, mxf_essence_container_uls[c->essence_containers_indices[i]].container_ul, 16); - PRINT_KEY(s, "essence container ul:\n", mxf_essence_container_uls[c->essence_containers_indices[i]].container_ul); + MXFStreamContext *sc = s->streams[i]->priv_data; + put_buffer(pb, mxf_essence_container_uls[sc->index].container_ul, 16); } } @@ -731,8 +730,10 @@ static void mxf_write_multi_descriptor(AVFormatContext *s) mxf_write_local_tag(pb, 16, 0x3004); if (mxf->essence_container_count > 1) ul = multiple_desc_ul; - else - ul = mxf_essence_container_uls[mxf->essence_containers_indices[0]].container_ul; + else { + MXFStreamContext *sc = s->streams[0]->priv_data; + ul = mxf_essence_container_uls[sc->index].container_ul; + } put_buffer(pb, ul, 16); // write sub descriptor refs @@ -1467,8 +1468,8 @@ static int mxf_write_header(AVFormatContext *s) sc->codec_ul = &mxf_essence_container_uls[sc->index].codec_ul; if (!present[sc->index]) { - mxf->essence_containers_indices[mxf->essence_container_count++] = sc->index; present[sc->index] = 1; + mxf->essence_container_count++; } else present[sc->index]++; @@ -1548,8 +1549,10 @@ static void mxf_write_system_item(AVFormatContext *s) put_be16(pb, frame); // continuity count if (mxf->essence_container_count > 1) put_buffer(pb, multiple_desc_ul, 16); - else - put_buffer(pb, mxf_essence_container_uls[mxf->essence_containers_indices[0]].container_ul, 16); + else { + MXFStreamContext *sc = s->streams[0]->priv_data; + put_buffer(pb, mxf_essence_container_uls[sc->index].container_ul, 16); + } put_byte(pb, 0); put_be64(pb, 0); put_be64(pb, 0); // creation date/time stamp