Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(956)

Unified Diff: media/base/simd/linear_scale_yuv_to_rgb_mmx.inc

Issue 2694113002: Delete media/base/yuv_convert and dependents. Prefer libyuv. (Closed)
Patch Set: Fix media_unittests. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
diff --git a/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc b/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
deleted file mode 100644
index 48f62acf25ad57893e598a0c1cb10f632b462413..0000000000000000000000000000000000000000
--- a/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
+++ /dev/null
@@ -1,135 +0,0 @@
-; Copyright (c) 2011 The Chromium Authors. All rights reserved.
-; Use of this source code is governed by a BSD-style license that can be
-; found in the LICENSE file.
-
-%include "media/base/simd/media_export.asm"
-
- EXPORT SYMBOL
- align function_align
-
-mangle(SYMBOL):
- %assign stack_offset 0
-
-; Parameters are in the following order:
-; 1. Y plane
-; 2. U plane
-; 3. V plane
-; 4. ARGB frame
-; 5. Width
-; 6. Source dx
-; 7. Conversion lookup table
-
-PROLOGUE 7, 7, 3, Y, R0, R1, ARGB, R2, TEMP, R3
-
-%if gprsize == 8
-%define WORD_SIZE QWORD
-%else
-%define WORD_SIZE DWORD
-%endif
-
-; Define register aliases.
-%define Xq R1q ; Current X position
-%define COMPLq R2q ; Component A value
-%define COMPLd R2d ; Component A value
-%define U_ARG_REGq R0q ; U plane address argument
-%define V_ARG_REGq R1q ; V plane address argument
-%define SOURCE_DX_ARG_REGq TEMPq ; Source dx argument
-%define WIDTH_ARG_REGq R2q ; Width argument
-
-%define COMPRq R0q ; Component B value
-%define COMPRd R0d ; Component B value
-%define Uq R0q ; U plane address
-%define Vq R0q ; V plane address
-%define U_PLANE WORD_SIZE [rsp + 3 * gprsize]
-%define TABLE R3q ; Address of the table
-
-; Defines for stack variables.
-%define V_PLANE WORD_SIZE [rsp + 2 * gprsize]
-%define SOURCE_DX WORD_SIZE [rsp + gprsize]
-%define SOURCE_WIDTH WORD_SIZE [rsp]
-
-; Define stack usage.
- PUSH U_ARG_REGq
- PUSH V_ARG_REGq
- PUSH SOURCE_DX_ARG_REGq
- imul WIDTH_ARG_REGq, SOURCE_DX_ARG_REGq ; source_width = width * source_dx
- PUSH WIDTH_ARG_REGq
-
-%macro EPILOGUE 0
- ADD rsp, 4 * gprsize
-%endmacro
-
- xor Xq, Xq ; x = 0
- cmp SOURCE_DX_ARG_REGq, 0x20000
- jl .lscaleend
- mov Xq, 0x8000 ; x = 0.5 for 1/2 or less
- jmp .lscaleend
-
-.lscaleloop:
- mov Uq, U_PLANE
-
-; Define macros for scaling YUV components since they are reused.
-%macro SCALEUV 1
- mov TEMPq, Xq
- sar TEMPq, 0x11
- movzx COMPLd, BYTE [%1 + TEMPq]
- movzx COMPRd, BYTE [%1 + TEMPq + 1]
- mov TEMPq, Xq
- and TEMPq, 0x1fffe
- imul COMPRq, TEMPq
- xor TEMPq, 0x1fffe
- imul COMPLq, TEMPq
- add COMPLq, COMPRq
- shr COMPLq, 17
-%endmacro
- SCALEUV Uq ; Use the above macro to scale U
- movq mm0, [TABLE + 2048 + 8 * COMPLq]
-
- mov Vq, V_PLANE ; Read V address from stack
- SCALEUV Vq ; Use the above macro to scale V
- paddsw mm0, [TABLE + 4096 + 8 * COMPLq]
-
-%macro SCALEY 0
- mov TEMPq, Xq
- sar TEMPq, 0x10
- movzx COMPLd, BYTE [Yq + TEMPq]
- movzx COMPRd, BYTE [Yq + TEMPq + 1]
- mov TEMPq, Xq
- add Xq, SOURCE_DX ; Add source_dx from stack
- and TEMPq, 0xffff
- imul COMPRq, TEMPq
- xor TEMPq, 0xffff
- imul COMPLq, TEMPq
- add COMPLq, COMPRq
- shr COMPLq, 16
-%endmacro
- SCALEY ; Use the above macro to scale Y1
- movq mm1, [TABLE + 8 * COMPLq]
-
- cmp Xq, SOURCE_WIDTH ; Compare source_width from stack
- jge .lscalelastpixel
-
- SCALEY ; Use the above macro to sacle Y2
- movq mm2, [TABLE + 8 * COMPLq]
-
- paddsw mm1, mm0
- paddsw mm2, mm0
- psraw mm1, 0x6
- psraw mm2, 0x6
- packuswb mm1, mm2
- MOVQ [ARGBq], mm1
- add ARGBq, 0x8
-
-.lscaleend:
- cmp Xq, SOURCE_WIDTH ; Compare source_width from stack
- jl .lscaleloop
- EPILOGUE
- RET
-
-.lscalelastpixel:
- paddsw mm1, mm0
- psraw mm1, 6
- packuswb mm1, mm1
- movd [ARGBq], mm1
- EPILOGUE
- RET
« no previous file with comments | « media/base/simd/linear_scale_yuv_to_rgb_mmx.asm ('k') | media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698