[FFmpeg-devel] [PATCH] Introduce av_fill_image_planesizes() (was: swscale-test: add md5 output)

Ramiro Polla ramiro.polla
Tue Sep 14 17:47:24 CEST 2010


On Tue, Sep 14, 2010 at 12:18 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Mon, Sep 13, 2010 at 11:25:23PM -0300, Ramiro Polla wrote:
>> On Thu, Sep 9, 2010 at 12:53 PM, Ramiro Polla <ramiro.polla at gmail.com> wrote:
>> > On Wed, Sep 8, 2010 at 11:52 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
>> >> On Sat, Sep 04, 2010 at 01:56:42PM -0300, Ramiro Polla wrote:
>> >> [...]
>> >>> @@ -93,6 +93,18 @@ int av_fill_image_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int heigh
>> >>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? uint8_t *ptr, const int linesizes[4]);
>> >>>
>> >>> ?/**
>> >>> + * Fill plane sizes for an image with pixel format pix_fmt and height height.
>> >>> + *
>> >>> + * @param planesizes[4] array to be filled with the size for each image plane
>> >>> + * @param linesizes[4] the array containing the linesize for each
>> >>> + * plane, should be filled by av_fill_image_linesizes()
>> >>> + * @return the size in bytes required for the image buffer, a negative
>> >>> + * error code in case of failure
>> >>> + */
>> >>> +int av_fill_image_planesizes(int planesizes[4], enum PixelFormat pix_fmt, int height,
>> >>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? const int linesizes[4]);
>> >>> +
>> >>
>> >> this needs to be updated to the hierachical naming
>> >
>> > Updated.
>>
>> use_* patch updated. add_* patch remains the same.
>
>> ?swscale-test.c | ? 58 +++++++++++++++++++++++++++++++--------------------------
>> ?1 file changed, 32 insertions(+), 26 deletions(-)
>> dc7bd92cc3ed41386e90ff1037173e271468dbed ?use_av_image_fill_planesizes_2.diff
>
> am i confused or is a patch that is supposed to simplify code making it
> bigger?

It's more correct:
-        if (dstStride[i])
-            dst[i]= av_mallocz(dstStride[i]*dstH+16);
-        if (dstStride[i] && !dst[i]) {
+        if (dst_planesizes[i])
+            dst[i]= av_mallocz(dst_planesizes[i]+16);
+        if (dst_planesizes[i] && !dst[i]) {

The current code makes no distinction of height for chroma planes.
Sure we could >>1 here and there but with av_image_fill_planesizes()
we can get the proper size for each buffer for all pixel formats.



More information about the ffmpeg-devel mailing list