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

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

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

revision 1705, Sun May 28 07:52:45 2006 UTC revision 1706, Mon Jun 5 21:27:36 2006 UTC
# Line 19  Line 19 
19  ; *  along with this program; if not, write to the Free Software  ; *  along with this program; if not, write to the Free Software
20  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  ; *  ; *
22  ; * $Id: colorspace_yuyv_mmx.asm,v 1.6 2004-08-29 10:02:38 edgomez Exp $  ; * $Id: colorspace_yuyv_mmx.asm,v 1.7 2006-06-05 21:27:36 Skal Exp $
23  ; *  ; *
24  ; ***************************************************************************/  ; ***************************************************************************/
25    
# Line 172  Line 172 
172  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
173  ; YV12_TO_YUYV( TYPE )  ; YV12_TO_YUYV( TYPE )
174  ;  ;
175  ; TYPE  0=yuyv, 1=uyvy  ; bytes=2, pixels = 16, vpixels=2
 ;  
 ; bytes=2, pixels = 8, vpixels=2  
176  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
177    
178  %macro YV12_TO_YUYV_INIT        2  %macro YV12_TO_YUYV_INIT        2
# Line 182  Line 180 
180    
181    
182  %macro YV12_TO_YUYV             2  %macro YV12_TO_YUYV             2
183    movd mm4, [ebx]               ; [    |uuuu]    movq mm6, [ebx]               ; [    |uuuu]
184    movd mm5, [ecx]               ; [    |vvvv]    movq mm2, [ecx]               ; [    |vvvv]
185    movq mm0, [esi]               ; [yyyy|yyyy] ; y row 0    movq mm0, [esi]               ; [yyyy|yyyy] ; y row 0
186    movq mm1, [esi+eax]           ; [yyyy|yyyy] ; y row 1    movq mm1, [esi+eax]           ; [yyyy|yyyy] ; y row 1
187    punpcklbw mm4, mm5            ; [vuvu|vuvu] ; uv row 0    movq      mm7, mm6
188      punpcklbw mm6, mm2            ; [vuvu|vuvu] ; uv[0..3]
189      punpckhbw mm7, mm2            ; [vuvu|vuvu] ; uv[4..7]
190    
191  %if %1 == 0     ; YUYV  %if %1 == 0     ; YUYV
192    movq mm2, mm0    movq mm2, mm0
193    movq mm3, mm1    movq mm3, mm1
194    punpcklbw mm0, mm4            ; [vyuy|vyuy] ; y row 0 + 0    movq mm4, [esi    +8]         ; [yyyy|yyyy] ; y[8..15] row 0
195    punpckhbw mm2, mm4            ; [vyuy|vyuy] ; y row 0 + 8    movq mm5, [esi+eax+8]         ; [yyyy|yyyy] ; y[8..15] row 1
196    punpcklbw mm1, mm4            ; [vyuy|vyuy] ; y row 1 + 0    punpcklbw mm0, mm6            ; [vyuy|vyuy] ; y row 0 + 0
197    punpckhbw mm3, mm4            ; [vyuy|vyuy] ; y row 1 + 8    punpckhbw mm2, mm6            ; [vyuy|vyuy] ; y row 0 + 8
198      punpcklbw mm1, mm6            ; [vyuy|vyuy] ; y row 1 + 0
199      punpckhbw mm3, mm6            ; [vyuy|vyuy] ; y row 1 + 8
200    movq [edi], mm0    movq [edi], mm0
201    movq [edi+8], mm2    movq [edi+8], mm2
202    movq [edi+edx], mm1    movq [edi+edx], mm1
203    movq [edi+edx+8], mm3    movq [edi+edx+8], mm3
204      movq mm0, mm4
205      movq mm2, mm5
206      punpcklbw mm0, mm7            ; [vyuy|vyuy] ; y row 0 + 16
207      punpckhbw mm4, mm7            ; [vyuy|vyuy] ; y row 0 + 24
208      punpcklbw mm2, mm7            ; [vyuy|vyuy] ; y row 1 + 16
209      punpckhbw mm5, mm7            ; [vyuy|vyuy] ; y row 1 + 24
210      movq [edi    +16], mm0
211      movq [edi    +24], mm4
212      movq [edi+edx+16], mm2
213      movq [edi+edx+24], mm5
214  %else           ; UYVY  %else           ; UYVY
215    movq mm5, mm4    movq mm2, mm6
216    movq mm6, mm4    movq mm3, mm6
217    movq mm7, mm4    movq mm4, mm6
218    punpcklbw mm4, mm0            ; [yvyu|yvyu]   ; y row 0 + 0    punpcklbw mm2, mm0            ; [yvyu|yvyu]   ; y row 0 + 0
219    punpckhbw mm5, mm0            ; [yvyu|yvyu]   ; y row 0 + 8    punpckhbw mm3, mm0            ; [yvyu|yvyu]   ; y row 0 + 8
220    punpcklbw mm6, mm1            ; [yvyu|yvyu]   ; y row 1 + 0    movq mm0, [esi    +8]         ; [yyyy|yyyy] ; y[8..15] row 0
221    punpckhbw mm7, mm1            ; [yvyu|yvyu]   ; y row 1 + 8    movq mm5, [esi+eax+8]         ; [yyyy|yyyy] ; y[8..15] row 1
222    movq [edi], mm4    punpcklbw mm4, mm1            ; [yvyu|yvyu]   ; y row 1 + 0
223    movq [edi+8], mm5    punpckhbw mm6, mm1            ; [yvyu|yvyu]   ; y row 1 + 8
224    movq [edi+edx], mm6    movq [edi      ], mm2
225    movq [edi+edx+8], mm7    movq [edi    +8], mm3
226      movq [edi+edx  ], mm4
227      movq [edi+edx+8], mm6
228      movq mm2, mm7
229      movq mm3, mm7
230      movq mm6, mm7
231      punpcklbw mm2, mm0            ; [yvyu|yvyu]   ; y row 0 + 0
232      punpckhbw mm3, mm0            ; [yvyu|yvyu]   ; y row 0 + 8
233      punpcklbw mm6, mm5            ; [yvyu|yvyu]   ; y row 1 + 0
234      punpckhbw mm7, mm5            ; [yvyu|yvyu]   ; y row 1 + 8
235      movq [edi    +16], mm2
236      movq [edi    +24], mm3
237      movq [edi+edx+16], mm6
238      movq [edi+edx+24], mm7
239  %endif  %endif
240  %endmacro  %endmacro
241    
# Line 324  Line 349 
349    
350  ; output  ; output
351    
352  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
353  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
354    
355  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
356  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

Legend:
Removed from v.1705  
changed lines
  Added in v.1706

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