[FFmpeg-devel] [PATCH] lavu: header and documentation for AVWriter

Leo Izen leo.izen at gmail.com
Wed Aug 31 06:13:11 EEST 2022


On 8/30/22 15:37, Nicolas George wrote:
> Leo Izen (12022-08-30):
>> Is there a reason this is AVWriter wr = foo() and not AVWriter *wr = foo()?
>> Most other APIs return pointers to structs, rather than structs themselves
>> (see: av_packet_alloc). Using a pointer would prevent us from having
>> sizeof(AVWriter) as part of the ABI, as was done with AVPacket.
> 
> Yes: to return a pointer, you need somewhere to store the structure. One
> of the point of AVWriter is that you can store it on the stack to avoid
> dynamic allocations when the string is short enough.
> 
> Note that AVWriter is exactly two pointers. It will always be two
> pointers, and all the objects that I intend to introduce later will
> always be two pointers: one const pointer for the methods, one pointer
> for the object itself.
> 
> This design is essential to the features I promised for AVWriter and for
> later.
> 

I don't see how you are planning on avoiding dynamic allocations by 
stack-allocating AVWriter when AVWriter itself only contains two pointers.

I also don't see how this design is essential to the features you 
promised in a way that can't be done by just not making sizeof(AVWriter) 
part of the ABI and returning pointers to a struct.

- Leo Izen (thebombzen)


More information about the ffmpeg-devel mailing list