- p_sys->pool = picture_pool_New (count, pic_array);
- /* TODO release picture resources if NULL */
- xcb_flush (p_sys->conn);
+ /* Allocate further planes as specified by XVideo */
+ /* We assume that offsets[0] is zero */
+ for (unsigned i = 1; i < num_planes; i++)
+ res->p[i].p_pixels = res->p[0].p_pixels + offsets[i];
+
+ if (p_sys->swap_uv)
+ { /* YVU: swap U and V planes */
+ uint8_t *buf = res->p[2].p_pixels;
+ res->p[2].p_pixels = res->p[1].p_pixels;
+ res->p[1].p_pixels = buf;
+ }
+
+ pic_array[count] = picture_NewFromResource (&vd->fmt, res);
+ if (!pic_array[count])
+ {
+ PictureResourceFree (res, p_sys->conn);
+ memset (res, 0, sizeof(*res));
+ break;
+ }