From 99a283331c8ee63ff9fa92aa551f2a827e6fae2b Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 11 Sep 2013 14:56:46 +0000 Subject: avfilter/vf_traspose: move switch out of loop Signed-off-by: Paul B Mahol --- libavfilter/vf_transpose.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'libavfilter/vf_transpose.c') diff --git a/libavfilter/vf_transpose.c b/libavfilter/vf_transpose.c index 2170b8aa0f..0a5fb0fe09 100644 --- a/libavfilter/vf_transpose.c +++ b/libavfilter/vf_transpose.c @@ -174,38 +174,46 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, dstlinesize *= -1; } - for (y = start; y < end; y++) { - switch (pixstep) { - case 1: + switch (pixstep) { + case 1: + for (y = start; y < end; y++, dst += dstlinesize) for (x = 0; x < outw; x++) dst[x] = src[x*srclinesize + y]; - break; - case 2: + break; + case 2: + for (y = start; y < end; y++, dst += dstlinesize) { for (x = 0; x < outw; x++) *((uint16_t *)(dst + 2*x)) = *((uint16_t *)(src + x*srclinesize + y*2)); - break; - case 3: + } + break; + case 3: + for (y = start; y < end; y++, dst += dstlinesize) { for (x = 0; x < outw; x++) { int32_t v = AV_RB24(src + x*srclinesize + y*3); AV_WB24(dst + 3*x, v); } - break; - case 4: + } + break; + case 4: + for (y = start; y < end; y++, dst += dstlinesize) { for (x = 0; x < outw; x++) *((uint32_t *)(dst + 4*x)) = *((uint32_t *)(src + x*srclinesize + y*4)); - break; - case 6: + } + break; + case 6: + for (y = start; y < end; y++, dst += dstlinesize) { for (x = 0; x < outw; x++) { int64_t v = AV_RB48(src + x*srclinesize + y*6); AV_WB48(dst + 6*x, v); } - break; - case 8: + } + break; + case 8: + for (y = start; y < end; y++, dst += dstlinesize) { for (x = 0; x < outw; x++) *((uint64_t *)(dst + 8*x)) = *((uint64_t *)(src + x*srclinesize + y*8)); - break; } - dst += dstlinesize; + break; } } -- cgit v1.2.3