vp9dec: optimize vpx image to gstbuffer copy when strides match

Solving this FIXME. Copy the full plane when strides are the same
This commit is contained in:
Thiago Santos 2015-04-16 15:11:05 -03:00
parent 6e3835594c
commit 3270137702

View File

@ -387,14 +387,20 @@ gst_vp9_dec_image_to_buffer (GstVP9Dec * dec, const vpx_image_t * img,
deststride = GST_VIDEO_FRAME_COMP_STRIDE (&frame, comp); deststride = GST_VIDEO_FRAME_COMP_STRIDE (&frame, comp);
srcstride = img->stride[comp]; srcstride = img->stride[comp];
/* FIXME (Edward) : Do a plane memcpy is srcstride == deststride instead if (srcstride == deststride) {
* of copying line by line */ GST_TRACE_OBJECT (dec, "Stride matches. Comp %d: %d, copying full plane",
comp, srcstride);
memcpy (dest, src, srcstride * height);
} else {
GST_TRACE_OBJECT (dec, "Stride mismatch. Comp %d: %d != %d, copying "
"line by line.", comp, srcstride, deststride);
for (line = 0; line < height; line++) { for (line = 0; line < height; line++) {
memcpy (dest, src, width); memcpy (dest, src, width);
dest += deststride; dest += deststride;
src += srcstride; src += srcstride;
} }
} }
}
gst_video_frame_unmap (&frame); gst_video_frame_unmap (&frame);
} }