[vlc-devel] commit: Correctly set screen RGB masks for win32 and use native screen bitdepth. ( Laurent Aimar )
git version control
git at videolan.org
Tue Sep 9 20:52:43 CEST 2008
vlc | branch: 0.9-bugfix | Laurent Aimar <fenrir at videolan.org> | Mon Sep 8 22:59:57 2008 +0200| [188b4a860fe3da8da4d337af4f12ceeb5d16520b] | committer: Laurent Aimar
Correctly set screen RGB masks for win32 and use native screen bitdepth.
(cherry picked from commit 52cf2e3959f6bbc9c73159ee5842d2da4d606dac)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=188b4a860fe3da8da4d337af4f12ceeb5d16520b
---
modules/access/screen/win32.c | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/modules/access/screen/win32.c b/modules/access/screen/win32.c
index 4255bdf..f267b08 100644
--- a/modules/access/screen/win32.c
+++ b/modules/access/screen/win32.c
@@ -95,16 +95,39 @@ int screen_InitCapture( demux_t *p_demux )
return VLC_EGENERIC;
}
-#if 1 /* For now we force RV24 because of chroma inversion in the other cases*/
- i_chroma = VLC_FOURCC('R','V','2','4');
- i_bits_per_pixel = 24;
-#endif
-
es_format_Init( &p_sys->fmt, VIDEO_ES, i_chroma );
p_sys->fmt.video.i_width = GetDeviceCaps( p_data->hdc_src, HORZRES );
p_sys->fmt.video.i_height = GetDeviceCaps( p_data->hdc_src, VERTRES );
p_sys->fmt.video.i_bits_per_pixel = i_bits_per_pixel;
+ switch( i_chroma )
+ {
+ case VLC_FOURCC('R','V','1','5'):
+ p_sys->fmt.video.i_rmask = 0x7c00;
+ p_sys->fmt.video.i_gmask = 0x03e0;
+ p_sys->fmt.video.i_bmask = 0x001f;
+ break;
+ case VLC_FOURCC('R','V','1','6'):
+ p_sys->fmt.video.i_rmask = 0xf800;
+ p_sys->fmt.video.i_gmask = 0x07e0;
+ p_sys->fmt.video.i_bmask = 0x001f;
+ break;
+ case VLC_FOURCC('R','V','2','4'):
+ p_sys->fmt.video.i_rmask = 0x00ff0000;
+ p_sys->fmt.video.i_gmask = 0x0000ff00;
+ p_sys->fmt.video.i_bmask = 0x000000ff;
+ break;
+ case VLC_FOURCC('R','V','3','2'):
+ p_sys->fmt.video.i_rmask = 0x00ff0000;
+ p_sys->fmt.video.i_gmask = 0x0000ff00;
+ p_sys->fmt.video.i_bmask = 0x000000ff;
+ break;
+ default:
+ msg_Warn( p_demux, "Unknown RGB masks" );
+ break;
+ }
+
+
/* Create the bitmap info header */
p_data->bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
p_data->bmi.bmiHeader.biWidth = p_sys->fmt.video.i_width;
@@ -118,14 +141,6 @@ int screen_InitCapture( demux_t *p_demux )
p_data->bmi.bmiHeader.biClrUsed = 0;
p_data->bmi.bmiHeader.biClrImportant = 0;
- if( i_chroma == VLC_FOURCC('R','V','2','4') )
- {
- /* This is in BGR format */
- p_sys->fmt.video.i_bmask = 0x00ff0000;
- p_sys->fmt.video.i_gmask = 0x0000ff00;
- p_sys->fmt.video.i_rmask = 0x000000ff;
- }
-
var_Create( p_demux, "screen-fragment-size",
VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Get( p_demux, "screen-fragment-size", &val );
More information about the vlc-devel
mailing list