[FFmpeg-devel] [PATCH] [RFC] libavcodec/h264_mp4toannexb_bsf.c: Copy const data

Benoit Fouet benoit.fouet
Mon Feb 16 21:24:45 CET 2009


Patrik Kullman wrote :
> On Mon, 2009-02-16 at 17:44 +0100, Benoit Fouet wrote:
>   
>> On 02/16/2009 04:50 PM, Benjamin Larsson wrote:
>>     
>>> Benoit Fouet wrote:
>>>   
>>>       
>>>>> ===================================================================
>>>>> --- libavcodec/h264_mp4toannexb_bsf.c	(revision 17373)
>>>>> +++ libavcodec/h264_mp4toannexb_bsf.c	(working copy)
>>>>> @@ -58,7 +58,7 @@
>>>>>  
>>>>>      /* nothing to filter */
>>>>>      if (!avctx->extradata || avctx->extradata_size < 6) {
>>>>> -        *poutbuf = (uint8_t*) buf;
>>>>> +        memcpy(*poutbuf, buf, buf_size);
>>>>>          *poutbuf_size = buf_size;
>>>>>          return 0;
>>>>>      }
>>>>>
>>>>>     
>>>>>       
>>>>>           
>>>> Index: libavcodec/h264_mp4toannexb_bsf.c
>>>>
>>>> you are missing the fact that output buffer is not allocated at that time.
>>>> BTW, I don't think copying is a good idea, but the fact that output and input data can be the same should be documented, as already told someone else.
>>>>
>>>> Ben
>>>>
>>>>   
>>>>     
>>>>         
>>> Thus violating the const qualifier ?
>>>
>>>   
>>>       
>> the BSF part is weird regarding that case.
>> If the input is not filtered, it just overwrites the output buffer
>> address...
>> I don't know what should be done:
>>  - let things as they are, but document them;
>>  - change the input to not const, and document why;
>>  - break the BSF API and use a special return value when no process has
>> been done, and user should use its input as output;
>>  - your ad here
>>
>> really, I don't know, but I must admit this is not something that
>> bothers me that much ;)
>>
>> Ben
>>     
>
> Can't the API just pass one buffer and the filter can do what it wants
> with it?
>
> Input/output sounds like unnecessary copying even if filtering is done?
>   

at the moment, no useless copy is done, but I agree the documentation is
missing for BSFs

> Some filters might be able to just modify the buffer, and some might
> have to create small buffers and then write back, but overall it should
> mean less copying?
>
>   

and some would need to create anyway another buffer, either larger than
the input one or not, to handle what they have to.

What's wrong with documenting the current behavior ?

Ben




More information about the ffmpeg-devel mailing list