[FFmpeg-devel] [PATCH 09/17] avformat/mxfenc: Avoid allocation for timecode track
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Tue Nov 9 23:28:05 EET 2021
Tomas Härdin:
> tis 2021-11-09 klockan 19:01 +0100 skrev Andreas Rheinhardt:
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
>> ---
>> libavformat/mxfenc.c | 10 +++-------
>> 1 file changed, 3 insertions(+), 7 deletions(-)
>>
>> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
>> index cf63340313..aa9857fcff 100644
>> --- a/libavformat/mxfenc.c
>> +++ b/libavformat/mxfenc.c
>> @@ -421,6 +421,7 @@ typedef struct MXFContext {
>> int track_instance_count; // used to generate MXFTrack uuids
>> int cbr_index; ///< use a constant bitrate index
>> uint8_t unused_tags[MXF_NUM_TAGS]; ///< local tags that we know
>> will not be used
>> + MXFStreamContext timecode_track_priv;
>> } MXFContext;
>>
>> static void mxf_write_uuid(AVIOContext *pb, enum MXFMetadataSetType
>> type, int value)
>> @@ -2712,9 +2713,7 @@ static int mxf_init(AVFormatContext *s)
>> mxf->timecode_track = av_mallocz(sizeof(*mxf->timecode_track));
>> if (!mxf->timecode_track)
>> return AVERROR(ENOMEM);
>> - mxf->timecode_track->priv_data =
>> av_mallocz(sizeof(MXFStreamContext));
>> - if (!mxf->timecode_track->priv_data)
>> - return AVERROR(ENOMEM);
>> + mxf->timecode_track->priv_data = &mxf->timecode_track_priv;
>> mxf->timecode_track->index = -1;
>>
>> return 0;
>> @@ -3087,10 +3086,7 @@ static void mxf_deinit(AVFormatContext *s)
>>
>> av_freep(&mxf->index_entries);
>> av_freep(&mxf->body_partition_offset);
>> - if (mxf->timecode_track) {
>> - av_freep(&mxf->timecode_track->priv_data);
>> - av_freep(&mxf->timecode_track);
>> - }
>> + av_freep(&mxf->timecode_track);
>> }
>>
>> static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket
>> *out, int flush)
>
> Looks OK. We never have more than one timecode track.
>
We also avoid the allocation of the extra AVStream, but somehow it feels
even more of a hack to put it into the context than allocating it,
although it actually isn't any more of a hack.
- Andreas
More information about the ffmpeg-devel
mailing list