[cvs] / xvidcore / src / image / x86_asm / colorspace_yuyv_mmx.asm Repository:
ViewVC logotype

Diff of /xvidcore/src/image/x86_asm/colorspace_yuyv_mmx.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3, Mon Mar 22 22:36:24 2004 UTC revision 1.9, Tue Nov 11 20:46:24 2008 UTC
# Line 27  Line 27 
27    
28  %macro cglobal 1  %macro cglobal 1
29          %ifdef PREFIX          %ifdef PREFIX
30                    %ifdef MARK_FUNCS
31                            global _%1:function %1.endfunc-%1
32                            %define %1 _%1:function %1.endfunc-%1
33                            %define ENDFUNC .endfunc
34                    %else
35                  global _%1                  global _%1
36                  %define %1 _%1                  %define %1 _%1
37                            %define ENDFUNC
38                    %endif
39            %else
40                    %ifdef MARK_FUNCS
41                            global %1:function %1.endfunc-%1
42                            %define ENDFUNC .endfunc
43          %else          %else
44                  global %1                  global %1
45                            %define ENDFUNC
46                    %endif
47          %endif          %endif
48  %endmacro  %endmacro
49    
# Line 39  Line 52 
52  ;=============================================================================  ;=============================================================================
53    
54  %ifdef FORMAT_COFF  %ifdef FORMAT_COFF
55  SECTION .rodata data  SECTION .rodata
56  %else  %else
57  SECTION .rodata data align=16  SECTION .rodata align=16
58  %endif  %endif
59    
60  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 163  Line 176 
176  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
177  ; YV12_TO_YUYV( TYPE )  ; YV12_TO_YUYV( TYPE )
178  ;  ;
179  ; TYPE  0=yuyv, 1=uyvy  ; bytes=2, pixels = 16, vpixels=2
 ;  
 ; bytes=2, pixels = 8, vpixels=2  
180  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
181    
182  %macro YV12_TO_YUYV_INIT        2  %macro YV12_TO_YUYV_INIT        2
# Line 173  Line 184 
184    
185    
186  %macro YV12_TO_YUYV             2  %macro YV12_TO_YUYV             2
187    movd mm4, [ebx]               ; [    |uuuu]    movq mm6, [ebx]               ; [    |uuuu]
188    movd mm5, [ecx]               ; [    |vvvv]    movq mm2, [ecx]               ; [    |vvvv]
189    movq mm0, [esi]               ; [yyyy|yyyy] ; y row 0    movq mm0, [esi]               ; [yyyy|yyyy] ; y row 0
190    movq mm1, [esi+eax]           ; [yyyy|yyyy] ; y row 1    movq mm1, [esi+eax]           ; [yyyy|yyyy] ; y row 1
191    punpcklbw mm4, mm5            ; [vuvu|vuvu] ; uv row 0    movq      mm7, mm6
192      punpcklbw mm6, mm2            ; [vuvu|vuvu] ; uv[0..3]
193      punpckhbw mm7, mm2            ; [vuvu|vuvu] ; uv[4..7]
194    
195  %if %1 == 0     ; YUYV  %if %1 == 0     ; YUYV
196    movq mm2, mm0    movq mm2, mm0
197    movq mm3, mm1    movq mm3, mm1
198    punpcklbw mm0, mm4            ; [vyuy|vyuy] ; y row 0 + 0    movq mm4, [esi    +8]         ; [yyyy|yyyy] ; y[8..15] row 0
199    punpckhbw mm2, mm4            ; [vyuy|vyuy] ; y row 0 + 8    movq mm5, [esi+eax+8]         ; [yyyy|yyyy] ; y[8..15] row 1
200    punpcklbw mm1, mm4            ; [vyuy|vyuy] ; y row 1 + 0    punpcklbw mm0, mm6            ; [vyuy|vyuy] ; y row 0 + 0
201    punpckhbw mm3, mm4            ; [vyuy|vyuy] ; y row 1 + 8    punpckhbw mm2, mm6            ; [vyuy|vyuy] ; y row 0 + 8
202      punpcklbw mm1, mm6            ; [vyuy|vyuy] ; y row 1 + 0
203      punpckhbw mm3, mm6            ; [vyuy|vyuy] ; y row 1 + 8
204    movq [edi], mm0    movq [edi], mm0
205    movq [edi+8], mm2    movq [edi+8], mm2
206    movq [edi+edx], mm1    movq [edi+edx], mm1
207    movq [edi+edx+8], mm3    movq [edi+edx+8], mm3
208      movq mm0, mm4
209      movq mm2, mm5
210      punpcklbw mm0, mm7            ; [vyuy|vyuy] ; y row 0 + 16
211      punpckhbw mm4, mm7            ; [vyuy|vyuy] ; y row 0 + 24
212      punpcklbw mm2, mm7            ; [vyuy|vyuy] ; y row 1 + 16
213      punpckhbw mm5, mm7            ; [vyuy|vyuy] ; y row 1 + 24
214      movq [edi    +16], mm0
215      movq [edi    +24], mm4
216      movq [edi+edx+16], mm2
217      movq [edi+edx+24], mm5
218  %else           ; UYVY  %else           ; UYVY
219    movq mm5, mm4    movq mm2, mm6
220    movq mm6, mm4    movq mm3, mm6
221    movq mm7, mm4    movq mm4, mm6
222    punpcklbw mm4, mm0            ; [yvyu|yvyu]   ; y row 0 + 0    punpcklbw mm2, mm0            ; [yvyu|yvyu]   ; y row 0 + 0
223    punpckhbw mm5, mm0            ; [yvyu|yvyu]   ; y row 0 + 8    punpckhbw mm3, mm0            ; [yvyu|yvyu]   ; y row 0 + 8
224    punpcklbw mm6, mm1            ; [yvyu|yvyu]   ; y row 1 + 0    movq mm0, [esi    +8]         ; [yyyy|yyyy] ; y[8..15] row 0
225    punpckhbw mm7, mm1            ; [yvyu|yvyu]   ; y row 1 + 8    movq mm5, [esi+eax+8]         ; [yyyy|yyyy] ; y[8..15] row 1
226    movq [edi], mm4    punpcklbw mm4, mm1            ; [yvyu|yvyu]   ; y row 1 + 0
227    movq [edi+8], mm5    punpckhbw mm6, mm1            ; [yvyu|yvyu]   ; y row 1 + 8
228    movq [edi+edx], mm6    movq [edi      ], mm2
229    movq [edi+edx+8], mm7    movq [edi    +8], mm3
230      movq [edi+edx  ], mm4
231      movq [edi+edx+8], mm6
232      movq mm2, mm7
233      movq mm3, mm7
234      movq mm6, mm7
235      punpcklbw mm2, mm0            ; [yvyu|yvyu]   ; y row 0 + 0
236      punpckhbw mm3, mm0            ; [yvyu|yvyu]   ; y row 0 + 8
237      punpcklbw mm6, mm5            ; [yvyu|yvyu]   ; y row 1 + 0
238      punpckhbw mm7, mm5            ; [yvyu|yvyu]   ; y row 1 + 8
239      movq [edi    +16], mm2
240      movq [edi    +24], mm3
241      movq [edi+edx+16], mm6
242      movq [edi+edx+24], mm7
243  %endif  %endif
244  %endmacro  %endmacro
245    
# Line 315  Line 353 
353    
354  ; output  ; output
355    
356  MAKE_COLORSPACE  yv12_to_yuyv_mmx,0,    2,8,2,  YV12_TO_YUYV, 0, -1  MAKE_COLORSPACE  yv12_to_yuyv_mmx,0,    2,16,2,  YV12_TO_YUYV, 0, -1
357  MAKE_COLORSPACE  yv12_to_uyvy_mmx,0,    2,8,2,  YV12_TO_YUYV, 1, -1  MAKE_COLORSPACE  yv12_to_uyvy_mmx,0,    2,16,2,  YV12_TO_YUYV, 1, -1
358    
359  MAKE_COLORSPACE  yv12_to_yuyvi_mmx,0,   2,8,4,  YV12_TO_YUYVI, 0, -1  MAKE_COLORSPACE  yv12_to_yuyvi_mmx,0,   2,8,4,  YV12_TO_YUYVI, 0, -1
360  MAKE_COLORSPACE  yv12_to_uyvyi_mmx,0,   2,8,4,  YV12_TO_YUYVI, 1, -1  MAKE_COLORSPACE  yv12_to_uyvyi_mmx,0,   2,8,4,  YV12_TO_YUYVI, 1, -1
361    
362    %ifidn __OUTPUT_FORMAT__,elf
363    section ".note.GNU-stack" noalloc noexec nowrite progbits
364    %endif
365    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4