On 24/04/18 23:22, James Almer wrote:
> On 4/23/2018 11:17 PM, James Almer wrote:
>> Signed-off-by: James Almer <jamr...@gmail.com>
>> ---
>>  libavcodec/cbs_mpeg2.c | 15 +++++++++------
>>  1 file changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c
>> index bfb64a0851..086d08ed64 100644
>> --- a/libavcodec/cbs_mpeg2.c
>> +++ b/libavcodec/cbs_mpeg2.c
>> @@ -146,14 +146,17 @@ static int 
>> cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx,
>>              unit_size = (end - 4) - (start - 1);
>>          }
>>  
>> -        unit_data = av_malloc(unit_size + AV_INPUT_BUFFER_PADDING_SIZE);
>> -        if (!unit_data)
>> -            return AVERROR(ENOMEM);
>> -        memcpy(unit_data, start - 1, unit_size);
>> -        memset(unit_data + unit_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
>> +        if (header) {
>> +            unit_data = av_malloc(unit_size + AV_INPUT_BUFFER_PADDING_SIZE);
>> +            if (!unit_data)
>> +                return AVERROR(ENOMEM);
>> +            memcpy(unit_data, start - 1, unit_size);
>> +            memset(unit_data + unit_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
>> +        } else
>> +            unit_data = (uint8_t *)start - 1;
>>  
>>          err = ff_cbs_insert_unit_data(ctx, frag, i, unit_type,
>> -                                      unit_data, unit_size, NULL);
>> +                                      unit_data, unit_size, frag->data_ref);
>>          if (err < 0) {
>>              av_freep(&unit_data);
>>              return err;
> 
> The alternative is to make ff_cbs_read_extradata() create an AVBufferRef
> with the contents of par->extradata, so every
> CodedBitstreamType->split_fragment() function can safely assume the
> fragment will always be reference counted.
> 
> I think that would be cleaner overall.

I agree, it would be much cleaner if we can assume that the input fragment is 
always refcounted.  (The AV1 code here assumes it already too, though we didn't 
have extradata for it at the time.)

- Mark
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to