Index: source/row_win.cc |
diff --git a/source/row_win.cc b/source/row_win.cc |
index f9c477f2ab2af5145bb79617475e84df457f47ae..b843998d89c0da59b6e41e3113dd96519db85d90 100644 |
--- a/source/row_win.cc |
+++ b/source/row_win.cc |
@@ -1648,64 +1648,6 @@ void ARGBToUV444Row_SSSE3(const uint8* src_argb0, |
} |
__declspec(naked) |
-void ARGBToUV422Row_SSSE3(const uint8* src_argb0, |
- uint8* dst_u, uint8* dst_v, int width) { |
- __asm { |
- push edi |
- mov eax, [esp + 4 + 4] // src_argb |
- mov edx, [esp + 4 + 8] // dst_u |
- mov edi, [esp + 4 + 12] // dst_v |
- mov ecx, [esp + 4 + 16] // width |
- movdqa xmm5, xmmword ptr kAddUV128 |
- movdqa xmm6, xmmword ptr kARGBToV |
- movdqa xmm7, xmmword ptr kARGBToU |
- sub edi, edx // stride from u to v |
- |
- convertloop: |
- /* step 1 - subsample 16x2 argb pixels to 8x1 */ |
- movdqu xmm0, [eax] |
- movdqu xmm1, [eax + 16] |
- movdqu xmm2, [eax + 32] |
- movdqu xmm3, [eax + 48] |
- lea eax, [eax + 64] |
- movdqa xmm4, xmm0 |
- shufps xmm0, xmm1, 0x88 |
- shufps xmm4, xmm1, 0xdd |
- pavgb xmm0, xmm4 |
- movdqa xmm4, xmm2 |
- shufps xmm2, xmm3, 0x88 |
- shufps xmm4, xmm3, 0xdd |
- pavgb xmm2, xmm4 |
- |
- // step 2 - convert to U and V |
- // from here down is very similar to Y code except |
- // instead of 16 different pixels, its 8 pixels of U and 8 of V |
- movdqa xmm1, xmm0 |
- movdqa xmm3, xmm2 |
- pmaddubsw xmm0, xmm7 // U |
- pmaddubsw xmm2, xmm7 |
- pmaddubsw xmm1, xmm6 // V |
- pmaddubsw xmm3, xmm6 |
- phaddw xmm0, xmm2 |
- phaddw xmm1, xmm3 |
- psraw xmm0, 8 |
- psraw xmm1, 8 |
- packsswb xmm0, xmm1 |
- paddb xmm0, xmm5 // -> unsigned |
- |
- // step 3 - store 8 U and 8 V values |
- movlps qword ptr [edx], xmm0 // U |
- movhps qword ptr [edx + edi], xmm0 // V |
- lea edx, [edx + 8] |
- sub ecx, 16 |
- jg convertloop |
- |
- pop edi |
- ret |
- } |
-} |
- |
-__declspec(naked) |
void BGRAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb, |
uint8* dst_u, uint8* dst_v, int width) { |
__asm { |