Browse code

avfilter/vf_traspose: move switch out of loop

Signed-off-by: Paul B Mahol <onemda@gmail.com>

Paul B Mahol authored on 2013/09/11 23:56:46
Showing 1 changed files
... ...
@@ -174,38 +174,46 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr,
174 174
             dstlinesize *= -1;
175 175
         }
176 176
 
177
-        for (y = start; y < end; y++) {
178
-            switch (pixstep) {
179
-            case 1:
177
+        switch (pixstep) {
178
+        case 1:
179
+            for (y = start; y < end; y++, dst += dstlinesize)
180 180
                 for (x = 0; x < outw; x++)
181 181
                     dst[x] = src[x*srclinesize + y];
182
-                break;
183
-            case 2:
182
+            break;
183
+        case 2:
184
+            for (y = start; y < end; y++, dst += dstlinesize) {
184 185
                 for (x = 0; x < outw; x++)
185 186
                     *((uint16_t *)(dst + 2*x)) = *((uint16_t *)(src + x*srclinesize + y*2));
186
-                break;
187
-            case 3:
187
+            }
188
+            break;
189
+        case 3:
190
+            for (y = start; y < end; y++, dst += dstlinesize) {
188 191
                 for (x = 0; x < outw; x++) {
189 192
                     int32_t v = AV_RB24(src + x*srclinesize + y*3);
190 193
                     AV_WB24(dst + 3*x, v);
191 194
                 }
192
-                break;
193
-            case 4:
195
+            }
196
+            break;
197
+        case 4:
198
+            for (y = start; y < end; y++, dst += dstlinesize) {
194 199
                 for (x = 0; x < outw; x++)
195 200
                     *((uint32_t *)(dst + 4*x)) = *((uint32_t *)(src + x*srclinesize + y*4));
196
-                break;
197
-            case 6:
201
+            }
202
+            break;
203
+        case 6:
204
+            for (y = start; y < end; y++, dst += dstlinesize) {
198 205
                 for (x = 0; x < outw; x++) {
199 206
                     int64_t v = AV_RB48(src + x*srclinesize + y*6);
200 207
                     AV_WB48(dst + 6*x, v);
201 208
                 }
202
-                break;
203
-            case 8:
209
+            }
210
+            break;
211
+        case 8:
212
+            for (y = start; y < end; y++, dst += dstlinesize) {
204 213
                 for (x = 0; x < outw; x++)
205 214
                     *((uint64_t *)(dst + 8*x)) = *((uint64_t *)(src + x*srclinesize + y*8));
206
-                break;
207 215
             }
208
-            dst += dstlinesize;
216
+            break;
209 217
         }
210 218
     }
211 219