Browse code

Merge remote-tracking branch 'qatar/master'

* qatar/master:
ARM: enable UAL syntax in asm.S
v4l2: don't leak video standard string on error.
swscale: Remove disabled code.
avfilter: Surround function only used in debug mode by appropriate #ifdef.
vf_crop: Replace #ifdef DEBUG + av_log() by av_dlog().
build: remove BUILD_ROOT variable
vp8: use av_clip_uintp2() where possible

Merged-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2011/05/30 08:23:11
Showing 14 changed files
... ...
@@ -208,15 +208,15 @@ ffservertest: ffserver$(EXESUF) tests/vsynth1/00.pgm tests/data/asynth1.sw
208 208
 
209 209
 tests/vsynth1/00.pgm: tests/videogen$(HOSTEXESUF)
210 210
 	@mkdir -p tests/vsynth1
211
-	$(M)$(BUILD_ROOT)/$< 'tests/vsynth1/'
211
+	$(M)./$< 'tests/vsynth1/'
212 212
 
213 213
 tests/vsynth2/00.pgm: tests/rotozoom$(HOSTEXESUF)
214 214
 	@mkdir -p tests/vsynth2
215
-	$(M)$(BUILD_ROOT)/$< 'tests/vsynth2/' $(SRC_PATH)/tests/lena.pnm
215
+	$(M)./$< 'tests/vsynth2/' $(SRC_PATH)/tests/lena.pnm
216 216
 
217 217
 tests/data/asynth1.sw: tests/audiogen$(HOSTEXESUF)
218 218
 	@mkdir -p tests/data
219
-	$(M)$(BUILD_ROOT)/$< $@
219
+	$(M)./$< $@
220 220
 
221 221
 tests/data/asynth1.sw tests/vsynth%/00.pgm: TAG = GEN
222 222
 
... ...
@@ -12,12 +12,6 @@ vpath %.S   $(SRC_DIR)
12 12
 vpath %.asm $(SRC_DIR)
13 13
 vpath %.v   $(SRC_DIR)
14 14
 
15
-ifeq ($(SRC_DIR),$(SRC_PATH_BARE))
16
-BUILD_ROOT_REL = .
17
-else
18
-BUILD_ROOT_REL = ..
19
-endif
20
-
21 15
 ifndef V
22 16
 Q      = @
23 17
 ECHO   = printf "$(1)\t%s\n" $(2)
... ...
@@ -33,7 +27,7 @@ endif
33 33
 
34 34
 ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale
35 35
 
36
-IFLAGS   := -I$(BUILD_ROOT_REL) -I$(SRC_PATH)
36
+IFLAGS   := -I. -I$(SRC_PATH)
37 37
 CPPFLAGS := $(IFLAGS) $(CPPFLAGS)
38 38
 CFLAGS   += $(ECFLAGS)
39 39
 YASMFLAGS += $(IFLAGS) -Pconfig.asm
... ...
@@ -85,7 +79,7 @@ FFLIBS    := $(FFLIBS-yes) $(FFLIBS)
85 85
 TESTPROGS += $(TESTPROGS-yes)
86 86
 
87 87
 FFEXTRALIBS := $(addprefix -l,$(addsuffix $(BUILDSUF),$(FFLIBS))) $(EXTRALIBS)
88
-FFLDFLAGS   := $(addprefix -L$(BUILD_ROOT)/lib,$(ALLFFLIBS)) $(LDFLAGS)
88
+FFLDFLAGS   := $(addprefix -Llib,$(ALLFFLIBS)) $(LDFLAGS)
89 89
 
90 90
 EXAMPLES  := $(addprefix $(SUBDIR),$(addsuffix -example$(EXESUF),$(EXAMPLES)))
91 91
 OBJS      := $(addprefix $(SUBDIR),$(sort $(OBJS)))
... ...
@@ -94,7 +88,7 @@ TESTPROGS := $(addprefix $(SUBDIR),$(addsuffix -test$(EXESUF),$(TESTPROGS)))
94 94
 HOSTOBJS  := $(addprefix $(SUBDIR),$(addsuffix .o,$(HOSTPROGS)))
95 95
 HOSTPROGS := $(addprefix $(SUBDIR),$(addsuffix $(HOSTEXESUF),$(HOSTPROGS)))
96 96
 
97
-DEP_LIBS := $(foreach NAME,$(FFLIBS),$(BUILD_ROOT_REL)/lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
97
+DEP_LIBS := $(foreach NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
98 98
 
99 99
 ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
100 100
 SKIPHEADERS += $(addprefix $(ARCH)/,$(ARCH_HEADERS))
... ...
@@ -3046,7 +3046,7 @@ enabled extra_warnings && check_cflags -Winline
3046 3046
 
3047 3047
 # add some linker flags
3048 3048
 check_ldflags -Wl,--warn-common
3049
-check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
3049
+check_ldflags -Wl,-rpath-link,libpostproc -Wl,-rpath-link,libswscale -Wl,-rpath-link,libavfilter -Wl,-rpath-link,libavdevice -Wl,-rpath-link,libavformat -Wl,-rpath-link,libavcodec -Wl,-rpath-link,libavutil
3050 3050
 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
3051 3051
 
3052 3052
 echo "X{};" > $TMPV
... ...
@@ -3316,7 +3316,6 @@ DATADIR=\$(DESTDIR)$datadir
3316 3316
 MANDIR=\$(DESTDIR)$mandir
3317 3317
 SRC_PATH="$source_path"
3318 3318
 SRC_PATH_BARE=$source_path
3319
-BUILD_ROOT="$PWD"
3320 3319
 CC_IDENT=$cc_ident
3321 3320
 ARCH=$arch
3322 3321
 CC=$cc
... ...
@@ -26,6 +26,8 @@
26 26
 #   define ELF @
27 27
 #endif
28 28
 
29
+        .syntax unified
30
+
29 31
 .macro  require8 val=1
30 32
 ELF     .eabi_attribute 24, \val
31 33
 .endm
... ...
@@ -21,7 +21,6 @@
21 21
 #include "config.h"
22 22
 #include "asm.S"
23 23
 
24
-        .syntax unified
25 24
 /*
26 25
  * VFP is a floating point coprocessor used in some ARM cores. VFP11 has 1 cycle
27 26
  * throughput for almost all the instructions (except for double precision
... ...
@@ -21,8 +21,6 @@
21 21
 #include "config.h"
22 22
 #include "asm.S"
23 23
 
24
-        .syntax unified
25
-
26 24
 /**
27 25
  * ARM VFP optimized float to int16 conversion.
28 26
  * Assume that len is a positive number and is multiple of 8, destination
... ...
@@ -95,7 +95,7 @@ function ff_dct_unquantize_h263_armv5te, export=1
95 95
         strh            lr, [r0], #2
96 96
 
97 97
         subs            r3, r3, #8
98
-        ldrgtd          r4, [r0, #0] /* load data early to avoid load/use pipeline stall */
98
+        ldrdgt          r4, [r0, #0] /* load data early to avoid load/use pipeline stall */
99 99
         bgt             1b
100 100
 
101 101
         adds            r3, r3, #2
... ...
@@ -20,8 +20,6 @@
20 20
 
21 21
 #include "asm.S"
22 22
 
23
-        .syntax         unified
24
-
25 23
 .macro rac_get_prob     h, bs, buf, cw, pr, t0, t1
26 24
         adds            \bs, \bs, \t0
27 25
         lsl             \cw, \cw, \t0
... ...
@@ -166,12 +166,12 @@ static void get_quants(VP8Context *s)
166 166
         } else
167 167
             base_qi = yac_qi;
168 168
 
169
-        s->qmat[i].luma_qmul[0]    =       vp8_dc_qlookup[av_clip(base_qi + ydc_delta , 0, 127)];
170
-        s->qmat[i].luma_qmul[1]    =       vp8_ac_qlookup[av_clip(base_qi             , 0, 127)];
171
-        s->qmat[i].luma_dc_qmul[0] =   2 * vp8_dc_qlookup[av_clip(base_qi + y2dc_delta, 0, 127)];
172
-        s->qmat[i].luma_dc_qmul[1] = 155 * vp8_ac_qlookup[av_clip(base_qi + y2ac_delta, 0, 127)] / 100;
173
-        s->qmat[i].chroma_qmul[0]  =       vp8_dc_qlookup[av_clip(base_qi + uvdc_delta, 0, 127)];
174
-        s->qmat[i].chroma_qmul[1]  =       vp8_ac_qlookup[av_clip(base_qi + uvac_delta, 0, 127)];
169
+        s->qmat[i].luma_qmul[0]    =       vp8_dc_qlookup[av_clip_uintp2(base_qi + ydc_delta , 7)];
170
+        s->qmat[i].luma_qmul[1]    =       vp8_ac_qlookup[av_clip_uintp2(base_qi             , 7)];
171
+        s->qmat[i].luma_dc_qmul[0] =   2 * vp8_dc_qlookup[av_clip_uintp2(base_qi + y2dc_delta, 7)];
172
+        s->qmat[i].luma_dc_qmul[1] = 155 * vp8_ac_qlookup[av_clip_uintp2(base_qi + y2ac_delta, 7)] / 100;
173
+        s->qmat[i].chroma_qmul[0]  =       vp8_dc_qlookup[av_clip_uintp2(base_qi + uvdc_delta, 7)];
174
+        s->qmat[i].chroma_qmul[1]  =       vp8_ac_qlookup[av_clip_uintp2(base_qi + uvac_delta, 7)];
175 175
 
176 176
         s->qmat[i].luma_dc_qmul[1] = FFMAX(s->qmat[i].luma_dc_qmul[1], 8);
177 177
         s->qmat[i].chroma_qmul[0]  = FFMIN(s->qmat[i].chroma_qmul[0], 132);
... ...
@@ -501,7 +501,6 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
501 501
             return AVERROR(EIO);
502 502
         }
503 503
     }
504
-    av_freep(&s->standard);
505 504
 
506 505
     if (ap->time_base.num && ap->time_base.den) {
507 506
         av_log(s1, AV_LOG_DEBUG, "Setting time per frame to %d/%d\n",
... ...
@@ -670,6 +669,7 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
670 670
 out:
671 671
     av_freep(&s->video_size);
672 672
     av_freep(&s->pixel_format);
673
+    av_freep(&s->standard);
673 674
     return res;
674 675
 }
675 676
 
... ...
@@ -264,11 +264,9 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
264 264
     crop->x &= ~((1 << crop->hsub) - 1);
265 265
     crop->y &= ~((1 << crop->vsub) - 1);
266 266
 
267
-#ifdef DEBUG
268
-    av_log(ctx, AV_LOG_DEBUG,
269
-           "n:%d t:%f x:%d y:%d x+w:%d y+h:%d\n",
270
-           (int)crop->var_values[VAR_N], crop->var_values[VAR_T], crop->x, crop->y, crop->x+crop->w, crop->y+crop->h);
271
-#endif
267
+    av_dlog(ctx, "n:%d t:%f x:%d y:%d x+w:%d y+h:%d\n",
268
+            (int)crop->var_values[VAR_N], crop->var_values[VAR_T], crop->x,
269
+            crop->y, crop->x+crop->w, crop->y+crop->h);
272 270
 
273 271
     ref2->data[0] += crop->y * ref2->linesize[0];
274 272
     ref2->data[0] += crop->x * crop->max_step[0];
... ...
@@ -447,159 +447,7 @@ static int altivec_##name (SwsContext *c,                               \
447 447
 #define out_bgr24(a,b,c,ptr) vec_mstbgr24(a,b,c,ptr)
448 448
 
449 449
 DEFCSP420_CVT (yuv2_abgr, out_abgr)
450
-#if 1
451 450
 DEFCSP420_CVT (yuv2_bgra, out_bgra)
452
-#else
453
-static int altivec_yuv2_bgra32 (SwsContext *c,
454
-                                unsigned char **in, int *instrides,
455
-                                int srcSliceY,        int srcSliceH,
456
-                                unsigned char **oplanes, int *outstrides)
457
-{
458
-    int w = c->srcW;
459
-    int h = srcSliceH;
460
-    int i,j;
461
-    int instrides_scl[3];
462
-    vector unsigned char y0,y1;
463
-
464
-    vector signed char  u,v;
465
-
466
-    vector signed short Y0,Y1,Y2,Y3;
467
-    vector signed short U,V;
468
-    vector signed short vx,ux,uvx;
469
-    vector signed short vx0,ux0,uvx0;
470
-    vector signed short vx1,ux1,uvx1;
471
-    vector signed short R0,G0,B0;
472
-    vector signed short R1,G1,B1;
473
-    vector unsigned char R,G,B;
474
-
475
-    vector unsigned char *uivP, *vivP;
476
-    vector unsigned char align_perm;
477
-
478
-    vector signed short
479
-        lCY  = c->CY,
480
-        lOY  = c->OY,
481
-        lCRV = c->CRV,
482
-        lCBU = c->CBU,
483
-        lCGU = c->CGU,
484
-        lCGV = c->CGV;
485
-
486
-    vector unsigned short lCSHIFT = c->CSHIFT;
487
-
488
-    ubyte *y1i   = in[0];
489
-    ubyte *y2i   = in[0]+w;
490
-    ubyte *ui    = in[1];
491
-    ubyte *vi    = in[2];
492
-
493
-    vector unsigned char *oute
494
-        = (vector unsigned char *)
495
-          (oplanes[0]+srcSliceY*outstrides[0]);
496
-    vector unsigned char *outo
497
-        = (vector unsigned char *)
498
-          (oplanes[0]+srcSliceY*outstrides[0]+outstrides[0]);
499
-
500
-
501
-    instrides_scl[0] = instrides[0];
502
-    instrides_scl[1] = instrides[1]-w/2;  /* the loop moves ui by w/2 */
503
-    instrides_scl[2] = instrides[2]-w/2;  /* the loop moves vi by w/2 */
504
-
505
-
506
-    for (i=0;i<h/2;i++) {
507
-        vec_dstst (outo, (0x02000002|(((w*3+32)/32)<<16)), 0);
508
-        vec_dstst (oute, (0x02000002|(((w*3+32)/32)<<16)), 1);
509
-
510
-        for (j=0;j<w/16;j++) {
511
-
512
-            y0 = vec_ldl (0,y1i);
513
-            y1 = vec_ldl (0,y2i);
514
-            uivP = (vector unsigned char *)ui;
515
-            vivP = (vector unsigned char *)vi;
516
-
517
-            align_perm = vec_lvsl (0, ui);
518
-            u  = (vector signed char)vec_perm (uivP[0], uivP[1], align_perm);
519
-
520
-            align_perm = vec_lvsl (0, vi);
521
-            v  = (vector signed char)vec_perm (vivP[0], vivP[1], align_perm);
522
-            u  = (vector signed char)
523
-                 vec_sub (u,(vector signed char)
524
-                          vec_splat((vector signed char){128},0));
525
-
526
-            v  = (vector signed char)
527
-                 vec_sub (v, (vector signed char)
528
-                          vec_splat((vector signed char){128},0));
529
-
530
-            U  = vec_unpackh (u);
531
-            V  = vec_unpackh (v);
532
-
533
-
534
-            Y0 = vec_unh (y0);
535
-            Y1 = vec_unl (y0);
536
-            Y2 = vec_unh (y1);
537
-            Y3 = vec_unl (y1);
538
-
539
-            Y0 = vec_mradds (Y0, lCY, lOY);
540
-            Y1 = vec_mradds (Y1, lCY, lOY);
541
-            Y2 = vec_mradds (Y2, lCY, lOY);
542
-            Y3 = vec_mradds (Y3, lCY, lOY);
543
-
544
-            /*   ux  = (CBU*(u<<CSHIFT)+0x4000)>>15 */
545
-            ux = vec_sl (U, lCSHIFT);
546
-            ux = vec_mradds (ux, lCBU, (vector signed short){0});
547
-            ux0  = vec_mergeh (ux,ux);
548
-            ux1  = vec_mergel (ux,ux);
549
-
550
-            /* vx  = (CRV*(v<<CSHIFT)+0x4000)>>15;        */
551
-            vx = vec_sl (V, lCSHIFT);
552
-            vx = vec_mradds (vx, lCRV, (vector signed short){0});
553
-            vx0  = vec_mergeh (vx,vx);
554
-            vx1  = vec_mergel (vx,vx);
555
-            /* uvx = ((CGU*u) + (CGV*v))>>15 */
556
-            uvx = vec_mradds (U, lCGU, (vector signed short){0});
557
-            uvx = vec_mradds (V, lCGV, uvx);
558
-            uvx0 = vec_mergeh (uvx,uvx);
559
-            uvx1 = vec_mergel (uvx,uvx);
560
-            R0 = vec_add (Y0,vx0);
561
-            G0 = vec_add (Y0,uvx0);
562
-            B0 = vec_add (Y0,ux0);
563
-            R1 = vec_add (Y1,vx1);
564
-            G1 = vec_add (Y1,uvx1);
565
-            B1 = vec_add (Y1,ux1);
566
-            R  = vec_packclp (R0,R1);
567
-            G  = vec_packclp (G0,G1);
568
-            B  = vec_packclp (B0,B1);
569
-
570
-            out_argb(R,G,B,oute);
571
-            R0 = vec_add (Y2,vx0);
572
-            G0 = vec_add (Y2,uvx0);
573
-            B0 = vec_add (Y2,ux0);
574
-            R1 = vec_add (Y3,vx1);
575
-            G1 = vec_add (Y3,uvx1);
576
-            B1 = vec_add (Y3,ux1);
577
-            R  = vec_packclp (R0,R1);
578
-            G  = vec_packclp (G0,G1);
579
-            B  = vec_packclp (B0,B1);
580
-
581
-            out_argb(R,G,B,outo);
582
-            y1i  += 16;
583
-            y2i  += 16;
584
-            ui   += 8;
585
-            vi   += 8;
586
-
587
-        }
588
-
589
-        outo  += (outstrides[0])>>4;
590
-        oute  += (outstrides[0])>>4;
591
-
592
-        ui    += instrides_scl[1];
593
-        vi    += instrides_scl[2];
594
-        y1i   += instrides_scl[0];
595
-        y2i   += instrides_scl[0];
596
-    }
597
-    return srcSliceH;
598
-}
599
-
600
-#endif
601
-
602
-
603 451
 DEFCSP420_CVT (yuv2_rgba, out_rgba)
604 452
 DEFCSP420_CVT (yuv2_argb, out_argb)
605 453
 DEFCSP420_CVT (yuv2_rgb24,  out_rgb24)
... ...
@@ -574,7 +574,6 @@ static inline void planar2x_c(const uint8_t *src, uint8_t *dst, int srcWidth,
574 574
     }
575 575
 
576 576
     // last line
577
-#if 1
578 577
     dst[0]= src[0];
579 578
 
580 579
     for (x=0; x<srcWidth-1; x++) {
... ...
@@ -582,12 +581,6 @@ static inline void planar2x_c(const uint8_t *src, uint8_t *dst, int srcWidth,
582 582
         dst[2*x+2]= (  src[x] + 3*src[x+1])>>2;
583 583
     }
584 584
     dst[2*srcWidth-1]= src[srcWidth-1];
585
-#else
586
-    for (x=0; x<srcWidth; x++) {
587
-        dst[2*x+0]=
588
-        dst[2*x+1]= src[x];
589
-    }
590
-#endif
591 585
 }
592 586
 
593 587
 /**
... ...
@@ -366,28 +366,6 @@ YUV2RGBFUNC(yuv2rgb_c_16, uint16_t, 0)
366 366
     PUTRGB(dst_1,py_1,3);
367 367
 CLOSEYUV2RGBFUNC(8)
368 368
 
369
-#if 0 // Currently unused
370
-// This is exactly the same code as yuv2rgb_c_32 except for the types of
371
-// r, g, b, dst_1, dst_2
372
-YUV2RGBFUNC(yuv2rgb_c_8, uint8_t, 0)
373
-    LOADCHROMA(0);
374
-    PUTRGB(dst_1,py_1,0);
375
-    PUTRGB(dst_2,py_2,0);
376
-
377
-    LOADCHROMA(1);
378
-    PUTRGB(dst_2,py_2,1);
379
-    PUTRGB(dst_1,py_1,1);
380
-
381
-    LOADCHROMA(2);
382
-    PUTRGB(dst_1,py_1,2);
383
-    PUTRGB(dst_2,py_2,2);
384
-
385
-    LOADCHROMA(3);
386
-    PUTRGB(dst_2,py_2,3);
387
-    PUTRGB(dst_1,py_1,3);
388
-CLOSEYUV2RGBFUNC(8)
389
-#endif
390
-
391 369
 // r, g, b, dst_1, dst_2
392 370
 YUV2RGBFUNC(yuv2rgb_c_12_ordered_dither, uint16_t, 0)
393 371
     const uint8_t *d16 = dither_4x4_16[y&3];
... ...
@@ -441,36 +419,6 @@ YUV2RGBFUNC(yuv2rgb_c_8_ordered_dither, uint8_t, 0)
441 441
     PUTRGB8(dst_1,py_1,3,6);
442 442
 CLOSEYUV2RGBFUNC(8)
443 443
 
444
-#if 0 // Currently unused
445
-// This is exactly the same code as yuv2rgb_c_32 except for the types of
446
-// r, g, b, dst_1, dst_2
447
-YUV2RGBFUNC(yuv2rgb_c_4, uint8_t, 0)
448
-    int acc;
449
-#define PUTRGB4(dst,src,i)          \
450
-    Y = src[2*i];                   \
451
-    acc = r[Y] + g[Y] + b[Y];       \
452
-    Y = src[2*i+1];                 \
453
-    acc |= (r[Y] + g[Y] + b[Y])<<4; \
454
-    dst[i] = acc;
455
-
456
-    LOADCHROMA(0);
457
-    PUTRGB4(dst_1,py_1,0);
458
-    PUTRGB4(dst_2,py_2,0);
459
-
460
-    LOADCHROMA(1);
461
-    PUTRGB4(dst_2,py_2,1);
462
-    PUTRGB4(dst_1,py_1,1);
463
-
464
-    LOADCHROMA(2);
465
-    PUTRGB4(dst_1,py_1,2);
466
-    PUTRGB4(dst_2,py_2,2);
467
-
468
-    LOADCHROMA(3);
469
-    PUTRGB4(dst_2,py_2,3);
470
-    PUTRGB4(dst_1,py_1,3);
471
-CLOSEYUV2RGBFUNC(4)
472
-#endif
473
-
474 444
 YUV2RGBFUNC(yuv2rgb_c_4_ordered_dither, uint8_t, 0)
475 445
     const uint8_t *d64 =  dither_8x8_73[y&7];
476 446
     const uint8_t *d128 = dither_8x8_220[y&7];
... ...
@@ -500,28 +448,6 @@ YUV2RGBFUNC(yuv2rgb_c_4_ordered_dither, uint8_t, 0)
500 500
     PUTRGB4D(dst_1,py_1,3,6);
501 501
 CLOSEYUV2RGBFUNC(4)
502 502
 
503
-#if 0 // Currently unused
504
-// This is exactly the same code as yuv2rgb_c_32 except for the types of
505
-// r, g, b, dst_1, dst_2
506
-YUV2RGBFUNC(yuv2rgb_c_4b, uint8_t, 0)
507
-    LOADCHROMA(0);
508
-    PUTRGB(dst_1,py_1,0);
509
-    PUTRGB(dst_2,py_2,0);
510
-
511
-    LOADCHROMA(1);
512
-    PUTRGB(dst_2,py_2,1);
513
-    PUTRGB(dst_1,py_1,1);
514
-
515
-    LOADCHROMA(2);
516
-    PUTRGB(dst_1,py_1,2);
517
-    PUTRGB(dst_2,py_2,2);
518
-
519
-    LOADCHROMA(3);
520
-    PUTRGB(dst_2,py_2,3);
521
-    PUTRGB(dst_1,py_1,3);
522
-CLOSEYUV2RGBFUNC(8)
523
-#endif
524
-
525 503
 YUV2RGBFUNC(yuv2rgb_c_4b_ordered_dither, uint8_t, 0)
526 504
     const uint8_t *d64 =  dither_8x8_73[y&7];
527 505
     const uint8_t *d128 = dither_8x8_220[y&7];