A question regarding stride in YUV buffers

Nicolas Dufresne nicolas at ndufresne.ca
Tue Jul 16 01:10:18 UTC 2019


Le lundi 15 juillet 2019 à 19:46 +0200, Neil Young a écrit :
> Hi,
> 
> I'm referring to this documentation
> 
> https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c
> 
> Up to now I received namely I420 buffers with a size of 1.5*width/height, as expected default YUV size. 
> 
> video/x-raw, format=(string)I420, width=(int)720, height=(int)540, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)0/1;
> 
> Frame buffer size is 583200 byte.
> 
> 
> Today for the first time I got this:
> 
> video/x-raw(memory:VASurface), format=(string)NV12, width=(int)720, height=(int)540, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
> 
> with a frame buffer size of 622080 byte, which is cleary more than 1.5 * w * h.
> 
> Now I'm wondering, how to understand the values of rstride and pstride in the above document. Could somebody help please?

pstride only exist for simple pixel formats. It represent the distance
in bytes betwen two pixels. This value, when it exists, is constant for
a specific format.

rtstride (row stride), is the size, in bytes, of one two. In general,
it must be larger or equal to pstride * width, when pstride exist for
your format. This design document outline the calculation of the
default strides and offsets withing the libgstvideo library. Notice the
use of RU4 or RU2, which are round up, these are used to ensure the
each row starts on an align pointer. This simplify memory access in
software processing.

When you use VAAPI, you are using some HW accelerators. These
accelerators have wider memory alignment requirement, hence the end
results is that strides will be larger, and sometimes there will also
be couple of padding rows.

> 
> TIA
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190715/ad7e61a3/attachment-0001.sig>


More information about the gstreamer-devel mailing list