switch (vinfo->finfo->format) {
case GST_VIDEO_FORMAT_I420:{
- gint i, j, height;
+ gint i, j, height, width;
guint8 *src, *dest;
gint src_stride, dest_stride;
(port_def->format.video.nStride / 2);
dest = GST_VIDEO_FRAME_COMP_DATA (&frame, i);
- height = GST_VIDEO_FRAME_HEIGHT (&frame);
+ height = GST_VIDEO_FRAME_COMP_HEIGHT (&frame, i);
+ width = GST_VIDEO_FRAME_COMP_WIDTH (&frame, i);
for (j = 0; j < height; j++) {
- memcpy (dest, src, MIN (src_stride, dest_stride));
+ memcpy (dest, src, width);
src += src_stride;
dest += dest_stride;
}
break;
}
case GST_VIDEO_FORMAT_NV12:{
- gint i, j, height;
+ gint i, j, height, width;
guint8 *src, *dest;
gint src_stride, dest_stride;
port_def->format.video.nStride;
dest = GST_VIDEO_FRAME_COMP_DATA (&frame, i);
- height = GST_VIDEO_FRAME_HEIGHT (&frame);
+ height = GST_VIDEO_FRAME_COMP_HEIGHT (&frame, i);
+ width = GST_VIDEO_FRAME_COMP_WIDTH (&frame, i) * (i == 0 ? 1 : 2);
for (j = 0; j < height; j++) {
- memcpy (dest, src, MIN (src_stride, dest_stride));
+ memcpy (dest, src, width);
src += src_stride;
dest += dest_stride;
}