From 4a4d652dd47c1d9082a042cd7de7603ac8bf17a5 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 14 Jan 2011 18:50:41 +0100 Subject: [PATCH] mpeg2dec: Copy planes in one go when possible --- ext/mpeg2dec/gstmpeg2dec.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c index 51c47e66d6..5c3d2a0e9b 100644 --- a/ext/mpeg2dec/gstmpeg2dec.c +++ b/ext/mpeg2dec/gstmpeg2dec.c @@ -357,10 +357,20 @@ gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf) gst_video_format_get_component_height (dec->format, c, dec->height); c_width = gst_video_format_get_component_width (dec->format, c, dec->width); - for (line = 0; line < c_height; line++) { - memcpy (dest, src, c_width); - dest += stride_out; - src += stride_in; + GST_DEBUG ("stride_in:%d _out:%d c_width:%d c_height:%d", + stride_in, stride_out, c_width, c_height); + + if (stride_in == stride_out && stride_in == c_width) { + /* FAST PATH */ + memcpy (dest, src, c_height * stride_out); + dest += stride_out * c_height; + src += stride_out * c_height; + } else { + for (line = 0; line < c_height; line++) { + memcpy (dest, src, c_width); + dest += stride_out; + src += stride_in; + } } }