mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 13:41:07 +00:00
testdmabuf: Fix NV12
The code was computing the wrong size.
This commit is contained in:
parent
2d9fbb16bc
commit
7ab9056c11
@ -180,7 +180,7 @@ nv12_create_buffer (uint32_t drm_format,
|
||||
int x, y;
|
||||
uint32_t *rgb_row;
|
||||
uint8_t *y_base;
|
||||
uint16_t *uv_base;
|
||||
uint8_t *uv_base;
|
||||
uint8_t *y_row;
|
||||
uint16_t *uv_row;
|
||||
uint32_t argb;
|
||||
@ -190,21 +190,22 @@ nv12_create_buffer (uint32_t drm_format,
|
||||
|
||||
g_assert (drm_format == DRM_FORMAT_NV12);
|
||||
|
||||
/* Full size Y, quarter UV */
|
||||
/* Full size Y plane, half size UV plane */
|
||||
bytes = rgb_width * rgb_height +
|
||||
(rgb_width / 2) * (rgb_height / 2) * sizeof (uint16_t);
|
||||
rgb_width * (rgb_height / 2);
|
||||
*size = bytes;
|
||||
|
||||
buf = g_new0 (guchar, bytes);
|
||||
|
||||
*uv_offset = rgb_width * rgb_height;
|
||||
y_base = buf;
|
||||
uv_base = (uint16_t *)(y_base + rgb_width * rgb_height);
|
||||
uv_base = y_base + rgb_width * rgb_height;
|
||||
|
||||
for (y = 0; y < rgb_height; y++)
|
||||
{
|
||||
rgb_row = (uint32_t *) (rgb_data + y * 4 * rgb_width);
|
||||
y_row = y_base + y * rgb_width;
|
||||
uv_row = (uint16_t *) (uv_base + (y / 2) * (rgb_width / 2));
|
||||
uv_row = (uint16_t *) (uv_base + (y / 2) * rgb_width);
|
||||
|
||||
for (x = 0; x < rgb_width; x++)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user