changeset 2556:71934dc06490

Using new stuff of rgb15to16
author nick
date Tue, 30 Oct 2001 17:04:31 +0000
parents 66837325b929
children 6a74454ea121
files libvo/Makefile libvo/vo_dga.c libvo/vo_fbdev.c libvo/vo_svga.c libvo/vo_x11.c
diffstat 5 files changed, 19 insertions(+), 85 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/Makefile	Tue Oct 30 17:03:11 2001 +0000
+++ b/libvo/Makefile	Tue Oct 30 17:04:31 2001 +0000
@@ -7,7 +7,7 @@
 OBJS=$(SRCS:.c=.o)
 
 ifeq ($(TARGET_ARCH_X86),yes)
-SRCS += rgb15to16mmx.c yuv2rgb_mmx.c
+SRCS += yuv2rgb_mmx.c
 ifeq ($(TARGET_OS),Linux)
 SRCS += vo_vesa.c
 endif
--- a/libvo/vo_dga.c	Tue Oct 30 17:03:11 2001 +0000
+++ b/libvo/vo_dga.c	Tue Oct 30 17:04:31 2001 +0000
@@ -23,8 +23,8 @@
  * - works only on x86 architectures
  *
  * $Log$
- * Revision 1.30  2001/08/13 11:08:18  atlka
- * changes according to -utf8 option, draw_osd() function added
+ * Revision 1.31  2001/10/30 17:04:31  nick
+ * Using new stuff of rgb15to16
  *
  * Revision 1.29  2001/07/16 18:41:52  jkeil
  * vo_dga doesn't compile on non-x86 architecture due to x86 asm usage.
@@ -151,11 +151,9 @@
 
 
 #include "x11_common.h"
-
+#include "../postproc/rgb2rgb.h"
 #include "fastmemcpy.h"
 
-extern void rgb15to16_mmx(char* s0,char* d0,int count);
-
 static vo_info_t vo_info =
 {
 #ifdef HAVE_DGA2
@@ -479,18 +477,9 @@
 	  int i;
 	  char *e;
 	  for(i=0; i< vo_dga_lines; i++){
-#ifdef HAVE_MMX		  
-            rgb15to16_mmx( s, d, vo_dga_bytes_per_line);
+            rgb15to16( s, d, vo_dga_bytes_per_line);
 	    d+=vo_dga_bytes_per_line;
 	    s+=vo_dga_bytes_per_line;
-#else
-            e = s+vo_dga_bytes_per_line;
-	    while( s< e ){
-               register uint16_t x =  *(((uint16_t *)s)++);
-	        *(((uint16_t *)d)++)=( x&0x001F )|( ( x&0x7FE0 )<<1 );
-	    }
-
-#endif  
             d+= vo_dga_vp_skip;
 	  }
 	}
--- a/libvo/vo_fbdev.c	Tue Oct 30 17:03:11 2001 +0000
+++ b/libvo/vo_fbdev.c	Tue Oct 30 17:04:31 2001 +0000
@@ -28,6 +28,7 @@
 #include "fastmemcpy.h"
 #include "sub.h"
 #include "yuv2rgb.h"
+#include "../postproc/rgb2rgb.h"
 
 LIBVO_EXTERN(fbdev)
 
@@ -38,7 +39,6 @@
 	""
 };
 
-extern void rgb15to16_mmx(char *s0, char *d0, int count);
 extern int verbose;
 
 /******************************
@@ -1146,20 +1146,10 @@
 		char *d = next_frame;
 		char *s = src[0];
 		if (sbpp == fb_pixel_size) {
-			if (fb_real_bpp == 16 && pixel_format == (IMGFMT_BGR|15)) {
-#ifdef HAVE_MMX
-				rgb15to16_mmx(s, d, 2 * in_width * in_height);
-#else
-				unsigned short *s1 = (unsigned short *) s;
-				unsigned short *d1 = (unsigned short *) d;
-				unsigned short *e = s1 + in_width * in_height;
-				while (s1<e) {
-					register x = *(s1++);
-					*(d1++) = (x&0x001f)|((x&0x7fe0)<<1);
-				}
-#endif
-			} else
-				memcpy(d, s, sbpp * in_width * in_height);
+		    if (fb_real_bpp == 16 && pixel_format == (IMGFMT_BGR|15))
+			rgb15to16(s, d, 2 * in_width * in_height);
+		    else
+			memcpy(d, s, sbpp * in_width * in_height);
 		}
 	}
 	return 0;
--- a/libvo/vo_svga.c	Tue Oct 30 17:03:11 2001 +0000
+++ b/libvo/vo_svga.c	Tue Oct 30 17:04:31 2001 +0000
@@ -24,8 +24,8 @@
 #endif
 
 #include "sub.h"
+#include "../postproc/rgb2rgb.h"
 
-extern void rgb15to16_mmx(char* s0,char* d0,int count);
 extern int vo_dbpp;
 extern int verbose;
 
@@ -470,19 +470,7 @@
 	}
       } break;
       case 16: {
-#ifdef HAVE_MMX
-        rgb15to16_mmx(src[0],bppbuf,maxw * maxh * 2);
-#else
-        uint16_t *source = (uint16_t *) src[0];
-        uint16_t *dest = (uint16_t *) bppbuf;
-	register uint32_t i = 0;
-	register uint16_t srcdata;
-	
-	while (i < (maxw * maxh)) {
-	  srcdata = source[i];
-	  dest[i++] = (srcdata & 0x1f) | ((srcdata & 0x7fe0) << 1);
-	}
-#endif
+        rgb15to16(src[0],bppbuf,maxw * maxh * 2);
       } break;
     }
     src[0] = bppbuf;
--- 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