Also implement sse2 versions.
---
 libswscale/x86/input.asm          |  199 +++++++++++++++++++++++++++++++++++++
 libswscale/x86/swscale_mmx.c      |   47 +++++----
 libswscale/x86/swscale_template.c |  159 +-----------------------------
 3 files changed, 227 insertions(+), 178 deletions(-)

diff --git a/libswscale/x86/input.asm b/libswscale/x86/input.asm
index 62d5232..fa4db2a 100644
--- a/libswscale/x86/input.asm
+++ b/libswscale/x86/input.asm
@@ -26,9 +26,208 @@
 
 SECTION_RODATA
 
+%define RY 0x20DE
+%define GY 0x4087
+%define BY 0x0C88
+%define RU 0xECFF
+%define GU 0xDAC8
+%define BU 0x3838
+%define RV 0x3838
+%define GV 0xD0E3
+%define BV 0xF6E4
+
+rgb_Yrnd:        times 4 dd 0x84000        ;  16.5 << 15
+rgb_UVrnd:       times 4 dd 0x404000       ; 128.5 << 15
+bgr_Ycoeff_12x4: times 2 dw BY, GY, 0, BY
+bgr_Ycoeff_3x56: times 2 dw RY, 0, GY, RY
+rgb_Ycoeff_12x4: times 2 dw RY, GY, 0, RY
+rgb_Ycoeff_3x56: times 2 dw BY, 0, GY, BY
+bgr_Ucoeff_12x4: times 2 dw BU, GU, 0, BU
+bgr_Ucoeff_3x56: times 2 dw RU, 0, GU, RU
+rgb_Ucoeff_12x4: times 2 dw RU, GU, 0, RU
+rgb_Ucoeff_3x56: times 2 dw BU, 0, GU, BU
+bgr_Vcoeff_12x4: times 2 dw BV, GV, 0, BV
+bgr_Vcoeff_3x56: times 2 dw RV, 0, GV, RV
+rgb_Vcoeff_12x4: times 2 dw RV, GV, 0, RV
+rgb_Vcoeff_3x56: times 2 dw BV, 0, GV, BV
+
 SECTION .text
 
 ;-----------------------------------------------------------------------------
+; RGB to Y/UV.
+;
+; void <fmt>ToY_<opt>(uint8_t *dst, const uint8_t *src, int w);
+; and
+; void <fmt>toUV_<opt>(uint8_t *dstU, uint8_t *dstV, const uint8_t *src,
+;                      const uint8_t *unused, int w);
+;-----------------------------------------------------------------------------
+
+%macro rgbToY_fn 2
+cglobal %2 %+ 24ToY, 3, 3, %1, dst, src, w
+%ifdef ARCH_X86_64
+    movsxd         wq, wd
+%endif
+    add          dstq, wq
+    neg            wq
+    pxor           m7, m7
+    mova           m4, [rgb_Yrnd]
+%if mmsize == 8
+    mova           m5, [%2_Ycoeff_12x4]
+    mova           m6, [%2_Ycoeff_3x56]
+%define coeff1 m5
+%define coeff2 m6
+%else ; mmsize == 16
+%ifdef ARCH_X86_64
+    mova          m8, [%2_Ycoeff_12x4]
+    mova          m9, [%2_Ycoeff_3x56]
+%define coeff1 m8
+%define coeff2 m9
+%else ; x86-32
+%define coeff1 [%2_Ycoeff_12x4]
+%define coeff2 [%2_Ycoeff_3x56]
+%endif ; x86-32/64
+%endif ; mmsize = 8/16
+.loop:
+    movd           m0, [srcq+0]           ; (byte) { B0, G0, R0, B1 }
+    movd           m1, [srcq+2]           ; (byte) { R0, B1, G1, R1 }
+    movd           m2, [srcq+6]           ; (byte) { B2, G2, R2, B3 }
+    movd           m3, [srcq+8]           ; (byte) { R2, B3, G3, R3 }
+%if mmsize == 16
+    punpckldq      m0, m2
+    punpckldq      m1, m3
+    movd           m2, [srcq+12]          ; (byte) { B4, G4, R4, B5 }
+    movd           m3, [srcq+14]          ; (byte) { R4, B5, G5, R5 }
+    movd           m5, [srcq+18]          ; (byte) { B6, G6, R6, B7 }
+    movd           m6, [srcq+20]          ; (byte) { R6, B7, G7, R7 }
+    punpckldq      m2, m5
+    punpckldq      m3, m6
+%endif ; mmsize == 16
+    add          srcq, 3 * mmsize / 2
+    punpcklbw      m0, m7                 ; (word) { B0, G0, R0, B1 }
+    punpcklbw      m1, m7                 ; (word) { R0, B1, G1, R1 }
+    punpcklbw      m2, m7                 ; (word) { B2, G2, R2, B3 }
+    punpcklbw      m3, m7                 ; (word) { R2, B3, G3, R3 }
+    pmaddwd        m0, coeff1             ; (dword) { B0*BY + G0*GY, B1*BY }
+    pmaddwd        m1, coeff2             ; (dword) { R0*RY, G1+GY + R1*RY }
+    pmaddwd        m2, coeff1             ; (dword) { B2*BY + G2*GY, B3*BY }
+    pmaddwd        m3, coeff2             ; (dword) { R2*RY, G3+GY + R3*RY }
+    paddd          m0, m1                 ; (dword) { Bx*BY + Gx*GY + Rx*RY 
}[0,1]
+    paddd          m2, m3                 ; (dword) { Bx*BY + Gx*GY + Rx*RY 
}[2,3]
+    paddd          m0, m4                 ; += rgb_Yrnd, i.e. (dword) { Y0, Y1 
}
+    paddd          m2, m4                 ; += rgb_Yrnd, i.e. (dword) { Y2, Y3 
}
+    psrad          m0, 15
+    psrad          m2, 15
+    packssdw       m0, m2                 ; (word) { Y0, Y1, Y2, Y3 }
+    packuswb       m0, m0                 ; (byte) { Y0, Y1, Y2, Y3 }
+    movh    [dstq+wq], m0
+    add            wq, mmsize / 2
+    jl .loop
+    REP_RET
+%endmacro
+
+%macro rgbtoUV_fn 2
+cglobal %2 %+ 24ToUV, 3, 4, %1, dstU, dstV, src, w
+%ifdef ARCH_X86_64
+    movsxd         wq, r4m
+%else ; x86-32
+    mov            wq, r4m
+%endif
+    add         dstUq, wq
+    add         dstVq, wq
+    neg            wq
+    mova           m6, [rgb_UVrnd]
+%ifdef ARCH_X86_64
+    mova           m8, [%2_Ucoeff_12x4]
+    mova           m9, [%2_Ucoeff_3x56]
+    mova          m10, [%2_Vcoeff_12x4]
+    mova          m11, [%2_Vcoeff_3x56]
+%define coeffU1 m8
+%define coeffU2 m9
+%define coeffV1 m10
+%define coeffV2 m11
+%else ; x86-32
+%define coeffU1 [%2_Ucoeff_12x4]
+%define coeffU2 [%2_Ucoeff_3x56]
+%define coeffV1 [%2_Vcoeff_12x4]
+%define coeffV2 [%2_Vcoeff_3x56]
+%endif ; x86-32/64
+    pxor           m7, m7
+.loop:
+    movd           m0, [srcq+0]           ; (byte) { B0, G0, R0, B1 }
+    movd           m1, [srcq+2]           ; (byte) { R0, B1, G1, R1 }
+    movd           m4, [srcq+6]           ; (byte) { B2, G2, R2, B3 }
+    movd           m5, [srcq+8]           ; (byte) { R2, B3, G3, R3 }
+%if mmsize == 16
+    punpckldq      m0, m4
+    punpckldq      m1, m5
+    movd           m4, [srcq+12]          ; (byte) { B4, G4, R4, B5 }
+    movd           m5, [srcq+14]          ; (byte) { R4, B5, G5, R5 }
+%endif ; mmsize == 16
+    punpcklbw      m0, m7
+    punpcklbw      m1, m7
+    mova           m2, m0
+    mova           m3, m1
+    pmaddwd        m0, coeffU1            ; (dword) { B0*BU + G0*GU, B1*BU }
+    pmaddwd        m1, coeffU2            ; (dword) { R0*BU, G1*GU + R1*BU }
+    pmaddwd        m2, coeffV1            ; (dword) { B2*BV + G2*GV, B3*BV }
+    pmaddwd        m3, coeffV2            ; (dword) { R2*BV, G3*GV + R3*BV }
+    paddd          m0, m1                 ; (dword) { Bx*BU + Gx*GU + Rx*RU 
}[0,1]
+    paddd          m2, m3                 ; (dword) { Bx*BV + Gx*GV + Rx*RV 
}[0,1]
+%if mmsize == 16
+    movd           m1, [srcq+18]          ; (byte) { B6, G6, R6, B7 }
+    movd           m3, [srcq+20]          ; (byte) { R6, B7, G7, R7 }
+    punpckldq      m4, m1
+    punpckldq      m5, m3
+%endif ; mmsize == 16
+    add          srcq, 3 * mmsize / 2
+    punpcklbw      m4, m7
+    punpcklbw      m5, m7
+    mova           m1, m4
+    mova           m3, m5
+    pmaddwd        m4, coeffU1            ; (dword) { B0*BU + G0*GU, B1*BU }
+    pmaddwd        m5, coeffU2            ; (dword) { R0*BU, G1*GU + R1*BU }
+    pmaddwd        m1, coeffV1            ; (dword) { B2*BV + G2*GV, B3*BV }
+    pmaddwd        m3, coeffV2            ; (dword) { R2*BV, G3*GV + R3*BV }
+    paddd          m4, m5                 ; (dword) { Bx*BU + Gx*GU + Rx*RU 
}[2,3]
+    paddd          m1, m3                 ; (dword) { Bx*BV + Gx*GV + Rx*RV 
}[2,3]
+    paddd          m0, m6                 ; += rgb_UVrnd, i.e. (dword) { U0, 
U1 }
+    paddd          m2, m6                 ; += rgb_UVrnd, i.e. (dword) { V0, 
V1 }
+    paddd          m4, m6                 ; += rgb_UVrnd, i.e. (dword) { U2, 
U3 }
+    paddd          m1, m6                 ; += rgb_UVrnd, i.e. (dword) { V2, 
V3 }
+    psrad          m0, 15
+    psrad          m2, 15
+    psrad          m4, 15
+    psrad          m1, 15
+    packssdw       m0, m4                 ; (word) { U0, U1, U2, U3 }
+    packssdw       m2, m1                 ; (word) { V0, V1, V2, V3 }
+    packuswb       m0, m2                 ; (byte) { U[0-3], V[0-3] }
+    movh   [dstUq+wq], m0
+%if mmsize == 16
+    movhps [dstVq+wq], m0
+%else ; mmsize == 8
+    psrlq          m0, 32
+    movh   [dstVq+wq], m0
+%endif ; mmsize == 8/16
+    add            wq, mmsize / 2
+    jl .loop
+    REP_RET
+%endmacro
+
+%ifdef ARCH_X86_32
+INIT_MMX mmx
+rgbToY_fn 0, rgb
+rgbToY_fn 0, bgr
+rgbtoUV_fn, 0, rgb
+rgbtoUV_fn, 0, bgr
+%endif
+
+INIT_XMM sse2
+rgbToY_fn 10, rgb
+rgbToY_fn 10, bgr
+rgbtoUV_fn 12, rgb
+rgbtoUV_fn 12, bgr
+
+;-----------------------------------------------------------------------------
 ; YUYV/UYVY/NV12/NV21 packed pixel shuffling.
 ;
 ; void <fmt>ToY_<opt>(uint8_t *dst, const uint8_t *src, int w);
diff --git a/libswscale/x86/swscale_mmx.c b/libswscale/x86/swscale_mmx.c
index 305fa6e..64be0e7 100644
--- a/libswscale/x86/swscale_mmx.c
+++ b/libswscale/x86/swscale_mmx.c
@@ -31,10 +31,6 @@ DECLARE_ASM_CONST(8, uint64_t, bF8)=       
0xF8F8F8F8F8F8F8F8LL;
 DECLARE_ASM_CONST(8, uint64_t, bFC)=       0xFCFCFCFCFCFCFCFCLL;
 DECLARE_ASM_CONST(8, uint64_t, w10)=       0x0010001000100010LL;
 DECLARE_ASM_CONST(8, uint64_t, w02)=       0x0002000200020002LL;
-DECLARE_ASM_CONST(8, uint64_t, bm00001111)=0x00000000FFFFFFFFLL;
-DECLARE_ASM_CONST(8, uint64_t, bm00000111)=0x0000000000FFFFFFLL;
-DECLARE_ASM_CONST(8, uint64_t, bm11111000)=0xFFFFFFFFFF000000LL;
-DECLARE_ASM_CONST(8, uint64_t, bm01010101)=0x00FF00FF00FF00FFLL;
 
 const DECLARE_ALIGNED(8, uint64_t, ff_dither4)[2] = {
     0x0103010301030103LL,
@@ -68,19 +64,6 @@ DECLARE_ALIGNED(8, const uint64_t, ff_bgr2YOffset)  = 
0x1010101010101010ULL;
 DECLARE_ALIGNED(8, const uint64_t, ff_bgr2UVOffset) = 0x8080808080808080ULL;
 DECLARE_ALIGNED(8, const uint64_t, ff_w1111)        = 0x0001000100010001ULL;
 
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toY1Coeff) = 0x0C88000040870C88ULL;
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toY2Coeff) = 0x20DE4087000020DEULL;
-DECLARE_ASM_CONST(8, uint64_t, ff_rgb24toY1Coeff) = 0x20DE0000408720DEULL;
-DECLARE_ASM_CONST(8, uint64_t, ff_rgb24toY2Coeff) = 0x0C88408700000C88ULL;
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toYOffset) = 0x0008400000084000ULL;
-
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toUV)[2][4] = {
-    {0x38380000DAC83838ULL, 0xECFFDAC80000ECFFULL, 0xF6E40000D0E3F6E4ULL, 
0x3838D0E300003838ULL},
-    {0xECFF0000DAC8ECFFULL, 0x3838DAC800003838ULL, 0x38380000D0E33838ULL, 
0xF6E4D0E30000F6E4ULL},
-};
-
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toUVOffset)= 0x0040400000404000ULL;
-
 //MMX versions
 #if HAVE_MMX
 #undef RENAME
@@ -244,19 +227,23 @@ VSCALE_FUNCS(sse2, sse2);
 VSCALE_FUNC(16, sse4);
 VSCALE_FUNCS(avx, avx);
 
+#define INPUT_Y_FUNC(fmt, opt) \
+extern void ff_ ## fmt ## ToY_  ## opt(uint8_t *dst, const uint8_t *src, \
+                                       int w, uint32_t *unused)
 #define INPUT_UV_FUNC(fmt, opt) \
 extern void ff_ ## fmt ## ToUV_ ## opt(uint8_t *dstU, uint8_t *dstV, \
                                        const uint8_t *src, const uint8_t 
*unused1, \
                                        int w, uint32_t *unused2)
 #define INPUT_FUNC(fmt, opt) \
-extern void ff_ ## fmt ## ToY_  ## opt(uint8_t *dst, const uint8_t *src, \
-                                       int w, uint32_t *unused); \
+    INPUT_Y_FUNC(fmt, opt); \
     INPUT_UV_FUNC(fmt, opt)
 #define INPUT_FUNCS(opt) \
     INPUT_FUNC(uyvy, opt); \
     INPUT_FUNC(yuyv, opt); \
     INPUT_UV_FUNC(nv12, opt); \
-    INPUT_UV_FUNC(nv21, opt)
+    INPUT_UV_FUNC(nv21, opt); \
+    INPUT_FUNC(rgb24, opt); \
+    INPUT_FUNC(bgr24, opt)
 
 #if ARCH_X86_32
 INPUT_FUNCS(mmx);
@@ -336,6 +323,14 @@ switch(c->dstBpc){ \
         case PIX_FMT_NV21:
             c->chrToYV12 = ff_nv21ToUV_mmx;
             break;
+        case PIX_FMT_RGB24:
+            c->lumToYV12 = ff_rgb24ToY_mmx;
+            c->chrToYV12 = ff_rgb24ToUV_mmx;
+            break;
+        case PIX_FMT_BGR24:
+            c->lumToYV12 = ff_bgr24ToY_mmx;
+            c->chrToYV12 = ff_bgr24ToUV_mmx;
+            break;
         default:
             break;
         }
@@ -378,6 +373,18 @@ switch(c->dstBpc){ \
         case PIX_FMT_NV21:
             c->chrToYV12 = ff_nv21ToUV_sse2;
             break;
+        case PIX_FMT_RGB24:
+            c->lumToYV12 = ff_rgb24ToY_sse2;
+            if (!c->chrSrcHSubSample)
+                c->chrToYV12 = ff_rgb24ToUV_sse2;
+            break;
+        case PIX_FMT_BGR24:
+            c->lumToYV12 = ff_bgr24ToY_sse2;
+            if (!c->chrSrcHSubSample)
+                c->chrToYV12 = ff_bgr24ToUV_sse2;
+            break;
+        default:
+            break;
         }
     }
     if (cpu_flags & AV_CPU_FLAG_SSSE3) {
diff --git a/libswscale/x86/swscale_template.c 
b/libswscale/x86/swscale_template.c
index b3d7336..2902cac 100644
--- a/libswscale/x86/swscale_template.c
+++ b/libswscale/x86/swscale_template.c
@@ -1361,148 +1361,6 @@ static void RENAME(yuv2yuyv422_1)(SwsContext *c, const 
int16_t *buf0,
     }
 }
 
-static av_always_inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, const uint8_t 
*src,
-                                                  int width, enum PixelFormat 
srcFormat)
-{
-
-    if(srcFormat == PIX_FMT_BGR24) {
-        __asm__ volatile(
-            "movq  "MANGLE(ff_bgr24toY1Coeff)", %%mm5       \n\t"
-            "movq  "MANGLE(ff_bgr24toY2Coeff)", %%mm6       \n\t"
-            :
-        );
-    } else {
-        __asm__ volatile(
-            "movq  "MANGLE(ff_rgb24toY1Coeff)", %%mm5       \n\t"
-            "movq  "MANGLE(ff_rgb24toY2Coeff)", %%mm6       \n\t"
-            :
-        );
-    }
-
-    __asm__ volatile(
-        "movq  "MANGLE(ff_bgr24toYOffset)", %%mm4   \n\t"
-        "mov                        %2, %%"REG_a"   \n\t"
-        "pxor                    %%mm7, %%mm7       \n\t"
-        "1:                                         \n\t"
-        PREFETCH"               64(%0)              \n\t"
-        "movd                     (%0), %%mm0       \n\t"
-        "movd                    2(%0), %%mm1       \n\t"
-        "movd                    6(%0), %%mm2       \n\t"
-        "movd                    8(%0), %%mm3       \n\t"
-        "add                       $12, %0          \n\t"
-        "punpcklbw               %%mm7, %%mm0       \n\t"
-        "punpcklbw               %%mm7, %%mm1       \n\t"
-        "punpcklbw               %%mm7, %%mm2       \n\t"
-        "punpcklbw               %%mm7, %%mm3       \n\t"
-        "pmaddwd                 %%mm5, %%mm0       \n\t"
-        "pmaddwd                 %%mm6, %%mm1       \n\t"
-        "pmaddwd                 %%mm5, %%mm2       \n\t"
-        "pmaddwd                 %%mm6, %%mm3       \n\t"
-        "paddd                   %%mm1, %%mm0       \n\t"
-        "paddd                   %%mm3, %%mm2       \n\t"
-        "paddd                   %%mm4, %%mm0       \n\t"
-        "paddd                   %%mm4, %%mm2       \n\t"
-        "psrad                     $15, %%mm0       \n\t"
-        "psrad                     $15, %%mm2       \n\t"
-        "packssdw                %%mm2, %%mm0       \n\t"
-        "packuswb                %%mm0, %%mm0       \n\t"
-        "movd                %%mm0, (%1, %%"REG_a") \n\t"
-        "add                        $4, %%"REG_a"   \n\t"
-        " js                        1b              \n\t"
-    : "+r" (src)
-    : "r" (dst+width), "g" ((x86_reg)-width)
-    : "%"REG_a
-    );
-}
-
-static void RENAME(bgr24ToY)(uint8_t *dst, const uint8_t *src,
-                             int width, uint32_t *unused)
-{
-    RENAME(bgr24ToY_mmx)(dst, src, width, PIX_FMT_BGR24);
-}
-
-static void RENAME(rgb24ToY)(uint8_t *dst, const uint8_t *src,
-                             int width, uint32_t *unused)
-{
-    RENAME(bgr24ToY_mmx)(dst, src, width, PIX_FMT_RGB24);
-}
-
-static av_always_inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t 
*dstV,
-                                                   const uint8_t *src, int 
width,
-                                                   enum PixelFormat srcFormat)
-{
-    __asm__ volatile(
-        "movq                    24(%4), %%mm6       \n\t"
-        "mov                        %3, %%"REG_a"   \n\t"
-        "pxor                    %%mm7, %%mm7       \n\t"
-        "1:                                         \n\t"
-        PREFETCH"               64(%0)              \n\t"
-        "movd                     (%0), %%mm0       \n\t"
-        "movd                    2(%0), %%mm1       \n\t"
-        "punpcklbw               %%mm7, %%mm0       \n\t"
-        "punpcklbw               %%mm7, %%mm1       \n\t"
-        "movq                    %%mm0, %%mm2       \n\t"
-        "movq                    %%mm1, %%mm3       \n\t"
-        "pmaddwd                  (%4), %%mm0       \n\t"
-        "pmaddwd                 8(%4), %%mm1       \n\t"
-        "pmaddwd                16(%4), %%mm2       \n\t"
-        "pmaddwd                 %%mm6, %%mm3       \n\t"
-        "paddd                   %%mm1, %%mm0       \n\t"
-        "paddd                   %%mm3, %%mm2       \n\t"
-
-        "movd                    6(%0), %%mm1       \n\t"
-        "movd                    8(%0), %%mm3       \n\t"
-        "add                       $12, %0          \n\t"
-        "punpcklbw               %%mm7, %%mm1       \n\t"
-        "punpcklbw               %%mm7, %%mm3       \n\t"
-        "movq                    %%mm1, %%mm4       \n\t"
-        "movq                    %%mm3, %%mm5       \n\t"
-        "pmaddwd                  (%4), %%mm1       \n\t"
-        "pmaddwd                 8(%4), %%mm3       \n\t"
-        "pmaddwd                16(%4), %%mm4       \n\t"
-        "pmaddwd                 %%mm6, %%mm5       \n\t"
-        "paddd                   %%mm3, %%mm1       \n\t"
-        "paddd                   %%mm5, %%mm4       \n\t"
-
-        "movq "MANGLE(ff_bgr24toUVOffset)", %%mm3       \n\t"
-        "paddd                   %%mm3, %%mm0       \n\t"
-        "paddd                   %%mm3, %%mm2       \n\t"
-        "paddd                   %%mm3, %%mm1       \n\t"
-        "paddd                   %%mm3, %%mm4       \n\t"
-        "psrad                     $15, %%mm0       \n\t"
-        "psrad                     $15, %%mm2       \n\t"
-        "psrad                     $15, %%mm1       \n\t"
-        "psrad                     $15, %%mm4       \n\t"
-        "packssdw                %%mm1, %%mm0       \n\t"
-        "packssdw                %%mm4, %%mm2       \n\t"
-        "packuswb                %%mm0, %%mm0       \n\t"
-        "packuswb                %%mm2, %%mm2       \n\t"
-        "movd                %%mm0, (%1, %%"REG_a") \n\t"
-        "movd                %%mm2, (%2, %%"REG_a") \n\t"
-        "add                        $4, %%"REG_a"   \n\t"
-        " js                        1b              \n\t"
-    : "+r" (src)
-    : "r" (dstU+width), "r" (dstV+width), "g" ((x86_reg)-width), 
"r"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24])
-    : "%"REG_a
-    );
-}
-
-static void RENAME(bgr24ToUV)(uint8_t *dstU, uint8_t *dstV,
-                              const uint8_t *src1, const uint8_t *src2,
-                              int width, uint32_t *unused)
-{
-    RENAME(bgr24ToUV_mmx)(dstU, dstV, src1, width, PIX_FMT_BGR24);
-    assert(src1 == src2);
-}
-
-static void RENAME(rgb24ToUV)(uint8_t *dstU, uint8_t *dstV,
-                              const uint8_t *src1, const uint8_t *src2,
-                              int width, uint32_t *unused)
-{
-    assert(src1==src2);
-    RENAME(bgr24ToUV_mmx)(dstU, dstV, src1, width, PIX_FMT_RGB24);
-}
-
 #if COMPILE_TEMPLATE_MMX2
 static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
                                  int dstWidth, const uint8_t *src,
@@ -1641,8 +1499,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t 
*dst1, int16_t *dst2,
 
 static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
 {
-    enum PixelFormat srcFormat = c->srcFormat,
-                     dstFormat = c->dstFormat;
+    enum PixelFormat dstFormat = c->dstFormat;
 
     if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
         dstFormat != PIX_FMT_NV12 && dstFormat != PIX_FMT_NV21) {
@@ -1714,18 +1571,4 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext 
*c)
     }
 #endif /* COMPILE_TEMPLATE_MMX2 */
     }
-
-    if (!c->chrSrcHSubSample) {
-        switch(srcFormat) {
-        case PIX_FMT_BGR24  : c->chrToYV12 = RENAME(bgr24ToUV); break;
-        case PIX_FMT_RGB24  : c->chrToYV12 = RENAME(rgb24ToUV); break;
-        default: break;
-        }
-    }
-
-    switch (srcFormat) {
-    case PIX_FMT_BGR24    : c->lumToYV12 = RENAME(bgr24ToY); break;
-    case PIX_FMT_RGB24    : c->lumToYV12 = RENAME(rgb24ToY); break;
-    default: break;
-    }
 }
-- 
1.7.2.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to