diff libvo/vo_x11.c @ 2556:71934dc06490

Using new stuff of rgb15to16
author nick
date Tue, 30 Oct 2001 17:04:31 +0000
parents 6f3fa9bc3b27
children ae79207a3055
line wrap: on
line diff
--- a/libvo/vo_x11.c	Tue Oct 30 17:03:11 2001 +0000
+++ b/libvo/vo_x11.c	Tue Oct 30 17:04:31 2001 +0000
@@ -40,6 +40,7 @@
 #include "sub.h"
 
 #include "../postproc/swscale.h"
+#include "../postproc/rgb2rgb.h"
 
 static vo_info_t vo_info =
 {
@@ -495,8 +496,6 @@
  return 0;
 }
 
-void rgb15to16_mmx( char* s0,char* d0,int count );
-
 static uint32_t draw_frame( uint8_t *src[] ){
     int sbpp=( ( image_format&0xFF )+7 )/8;
     int dbpp=( bpp+7 )/8;
@@ -512,26 +511,9 @@
     for( i=0;i<image_height;i++ ) {
       s-=sbpp*image_width;
       if( sbpp==dbpp ) {
-        if( depth==16 && image_format==( IMGFMT_BGR|15 ) ){
-
-       // do 15bpp->16bpp
-#ifdef HAVE_MMX
-       rgb15to16_mmx( s,d,2*image_width );
-#else
-       unsigned short *s1=( unsigned short * )s;
-       unsigned short *d1=( unsigned short * )d;
-       unsigned short *e=s1+image_width;
-       while( s1<e ){
-         register int x=*( s1++ );
-         // rrrrrggggggbbbbb
-         // 0rrrrrgggggbbbbb
-         // 0111 1111 1110 0000=0x7FE0
-         // 00000000000001 1111=0x001F
-         *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 );
-       }
-#endif
-
-        } else
+        if( depth==16 && image_format==( IMGFMT_BGR|15 ) )
+	  rgb15to16(s,d,2*image_width );
+        else
           memcpy( d,s,sbpp*image_width );
       } else {
          // sbpp!=dbpp
@@ -549,24 +531,9 @@
     }
   } else {
     if( sbpp==dbpp ) {
-      if( depth==16 && image_format==( IMGFMT_BGR|15 ) ){
-       // do 15bpp->16bpp
-#ifdef HAVE_MMX
-       rgb15to16_mmx( s,d,2*image_width*image_height );
-#else
-       unsigned short *s1=( unsigned short * )s;
-       unsigned short *d1=( unsigned short * )d;
-       unsigned short *e=s1+image_width*image_height;
-       while( s1<e ){
-         register int x=*( s1++ );
-         // rrrrrggggggbbbbb
-         // 0rrrrrgggggbbbbb
-         // 0111 1111 1110 0000=0x7FE0
-         // 00000000000001 1111=0x001F
-         *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 );
-       }
-#endif
-      } else
+      if( depth==16 && image_format==( IMGFMT_BGR|15 ) )
+        rgb15to16( s,d,2*image_width*image_height );
+      else
         memcpy( d,s,sbpp*image_width*image_height );
     } else {
         // sbpp!=dbpp