Mercurial > mplayer.hg
comparison Gui/wm/ws.c @ 2733:4dddb055d2cd
add prostproc/rgb2rgb
author | pontscho |
---|---|
date | Tue, 06 Nov 2001 12:32:27 +0000 |
parents | a6c5a537f30a |
children | b52d3e6ff4ab |
comparison
equal
deleted
inserted
replaced
2732:ae79207a3055 | 2733:4dddb055d2cd |
---|---|
14 #include <stdlib.h> | 14 #include <stdlib.h> |
15 #include <string.h> | 15 #include <string.h> |
16 #include <unistd.h> | 16 #include <unistd.h> |
17 #include <errno.h> | 17 #include <errno.h> |
18 | 18 |
19 #include <inttypes.h> | |
20 | |
19 #include "ws.h" | 21 #include "ws.h" |
20 #include "wsconv.h" | 22 #include "wsconv.h" |
21 #include "../../config.h" | 23 #include "../../config.h" |
24 #include "../../postproc/rgb2rgb.h" | |
22 | 25 |
23 #include <X11/extensions/XShm.h> | 26 #include <X11/extensions/XShm.h> |
24 #ifdef HAVE_XSHAPE | 27 #ifdef HAVE_XSHAPE |
25 #include <X11/extensions/shape.h> | 28 #include <X11/extensions/shape.h> |
26 #endif | 29 #endif |
225 #endif | 228 #endif |
226 } | 229 } |
227 #endif | 230 #endif |
228 initConverter(); | 231 initConverter(); |
229 wsOutMask=wsGetOutMask(); | 232 wsOutMask=wsGetOutMask(); |
233 #ifdef DEBUG | |
234 fprintf( stderr,"[ws] Initialized converter: " ); | |
235 #endif | |
230 switch ( wsOutMask ) | 236 switch ( wsOutMask ) |
231 { | 237 { |
232 case wsRGB32: | 238 case wsRGB32: |
239 #ifdef DEBUG | |
240 fprintf( stderr,"rgb32 to rgb32\n" ); | |
241 #endif | |
233 wsConvFunc=BGR8880_to_RGB8880_c; | 242 wsConvFunc=BGR8880_to_RGB8880_c; |
234 break; | 243 break; |
235 case wsBGR32: | 244 case wsBGR32: |
245 #ifdef DEBUG | |
246 fprintf( stderr,"rgb32 to bgr32\n" ); | |
247 #endif | |
236 wsConvFunc=BGR8880_to_BGR8880_c; | 248 wsConvFunc=BGR8880_to_BGR8880_c; |
237 break; | 249 break; |
238 case wsRGB24: | 250 case wsRGB24: |
239 #ifdef xHAVE_MMX | 251 #ifdef DEBUG |
240 wsConvFunc=BGR8880_to_RGB888_mmx; | 252 fprintf( stderr,"rgb32 to rgb24\n" ); |
241 #else | |
242 wsConvFunc=BGR8880_to_RGB888_c; | |
243 #endif | 253 #endif |
254 wsConvFunc=rgb32to24; | |
244 break; | 255 break; |
245 case wsBGR24: | 256 case wsBGR24: |
257 #ifdef DEBUG | |
258 fprintf( stderr,"rgb32 to bgr24\n" ); | |
259 #endif | |
246 wsConvFunc=BGR8880_to_BGR888_c; | 260 wsConvFunc=BGR8880_to_BGR888_c; |
247 break; | 261 break; |
248 case wsRGB16: | 262 case wsRGB16: |
249 wsConvFunc=BGR8880_to_RGB565_c; | 263 #ifdef DEBUG |
264 fprintf( stderr,"rgb32 to rgb16\n" ); | |
265 #endif | |
266 wsConvFunc=rgb32to16; | |
250 break; | 267 break; |
251 case wsBGR16: | 268 case wsBGR16: |
269 #ifdef DEBUG | |
270 fprintf( stderr,"rgb32 to bgr16\n" ); | |
271 #endif | |
252 wsConvFunc=BGR8880_to_BGR565_c; | 272 wsConvFunc=BGR8880_to_BGR565_c; |
253 break; | 273 break; |
254 case wsRGB15: | 274 case wsRGB15: |
255 wsConvFunc=BGR8880_to_RGB555_c; | 275 #ifdef DEBUG |
276 fprintf( stderr,"rgb32 to rgb15\n" ); | |
277 #endif | |
278 wsConvFunc=rgb32to15; | |
256 break; | 279 break; |
257 case wsBGR15: | 280 case wsBGR15: |
281 #ifdef DEBUG | |
282 fprintf( stderr,"rgb32 to bgr15\n" ); | |
283 #endif | |
258 wsConvFunc=BGR8880_to_BGR555_c; | 284 wsConvFunc=BGR8880_to_BGR555_c; |
259 break; | 285 break; |
260 } | 286 } |
261 XSetIOErrorHandler( wsIOErrorHandler ); | 287 XSetIOErrorHandler( wsIOErrorHandler ); |
262 XSetErrorHandler( wsErrorHandler ); | 288 XSetErrorHandler( wsErrorHandler ); |
782 | 808 |
783 // ---------------------------------------------------------------------------------------------- | 809 // ---------------------------------------------------------------------------------------------- |
784 // Put 'Image' to window. | 810 // Put 'Image' to window. |
785 // ---------------------------------------------------------------------------------------------- | 811 // ---------------------------------------------------------------------------------------------- |
786 void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size ) | 812 void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size ) |
787 { if ( wsConvFunc ) wsConvFunc( Image,win->ImageData,win->xImage->width * win->xImage->height ); } | 813 { if ( wsConvFunc ) wsConvFunc( Image,win->ImageData,win->xImage->width * win->xImage->height * 4 ); } |
788 | 814 |
789 void wsPutImage( wsTWindow * win ) | 815 void wsPutImage( wsTWindow * win ) |
790 { | 816 { |
791 if ( wsUseXShm ) | 817 if ( wsUseXShm ) |
792 { | 818 { |
888 { | 914 { |
889 case wsRGB32: | 915 case wsRGB32: |
890 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break; | 916 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break; |
891 case wsBGR32: | 917 case wsBGR32: |
892 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break; | 918 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break; |
893 case wsRGB16: PACK_RGB16( r,g,b,color ); break; | 919 case wsRGB16: PACK_RGB16( b,g,r,color ); break; |
894 case wsBGR16: PACK_RGB16( b,g,r,color ); break; | 920 case wsBGR16: PACK_RGB16( r,g,b,color ); break; |
895 case wsRGB15: PACK_RGB15( r,g,b,color ); break; | 921 case wsRGB15: PACK_RGB15( b,g,r,color ); break; |
896 case wsBGR15: PACK_RGB15( b,g,r,color ); break; | 922 case wsBGR15: PACK_RGB15( r,g,b,color ); break; |
897 } | 923 } |
898 XSetWindowBackground( wsDisplay,win->WindowID,color ); | 924 XSetWindowBackground( wsDisplay,win->WindowID,color ); |
899 } | 925 } |
900 | 926 |
901 void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b ) | 927 void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b ) |
905 { | 931 { |
906 case wsRGB32: | 932 case wsRGB32: |
907 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break; | 933 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break; |
908 case wsBGR32: | 934 case wsBGR32: |
909 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break; | 935 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break; |
910 case wsRGB16: PACK_RGB16( r,g,b,color ); break; | 936 case wsRGB16: PACK_RGB16( b,g,r,color ); break; |
911 case wsBGR16: PACK_RGB16( b,g,r,color ); break; | 937 case wsBGR16: PACK_RGB16( r,g,b,color ); break; |
912 case wsRGB15: PACK_RGB15( r,g,b,color ); break; | 938 case wsRGB15: PACK_RGB15( b,g,r,color ); break; |
913 case wsBGR15: PACK_RGB15( b,g,r,color ); break; | 939 case wsBGR15: PACK_RGB15( r,g,b,color ); break; |
914 } | 940 } |
915 XSetForeground( wsDisplay,win->wGC,color ); | 941 XSetForeground( wsDisplay,win->wGC,color ); |
916 } | 942 } |
917 | 943 |
918 // ---------------------------------------------------------------------------------------------- | 944 // ---------------------------------------------------------------------------------------------- |