- msg_Err(vd, "var_info.bits_per_pixel = %d", sys->var_info.bits_per_pixel);
- switch (sys->var_info.bits_per_pixel) {
- case 8: /* FIXME: set the palette */
- fmt.i_chroma = VLC_CODEC_RGB8;
- break;
- case 15:
- fmt.i_chroma = VLC_CODEC_RGB15;
- break;
- case 16:
- fmt.i_chroma = VLC_CODEC_RGB16;
- break;
- case 24:
- fmt.i_chroma = VLC_CODEC_RGB24;
- break;
- case 32:
- fmt.i_chroma = VLC_CODEC_RGB32;
- break;
- default:
- msg_Err(vd, "unknown screen depth %i",
- sys->var_info.bits_per_pixel);
- Close(VLC_OBJECT(vd));
- return VLC_EGENERIC;
- }
- if (sys->var_info.bits_per_pixel != 8) {
- fmt.i_rmask = ((1 << sys->var_info.red.length) - 1)
- << sys->var_info.red.offset;
- fmt.i_gmask = ((1 << sys->var_info.green.length) - 1)
- << sys->var_info.green.offset;
- fmt.i_bmask = ((1 << sys->var_info.blue.length) - 1)
- << sys->var_info.blue.offset;
+ if (sys->chroma) {
+ fmt.i_chroma = sys->chroma;
+ } else {
+ /* Assume RGB */
+
+ msg_Dbg(vd, "%d bppd", sys->var_info.bits_per_pixel);
+ switch (sys->var_info.bits_per_pixel) {
+ case 8: /* FIXME: set the palette */
+ fmt.i_chroma = VLC_CODEC_RGB8;
+ break;
+ case 15:
+ fmt.i_chroma = VLC_CODEC_RGB15;
+ break;
+ case 16:
+ fmt.i_chroma = VLC_CODEC_RGB16;
+ break;
+ case 24:
+ fmt.i_chroma = VLC_CODEC_RGB24;
+ break;
+ case 32:
+ fmt.i_chroma = VLC_CODEC_RGB32;
+ break;
+ default:
+ msg_Err(vd, "unknown screendepth %i", sys->var_info.bits_per_pixel);
+ Close(VLC_OBJECT(vd));
+ return VLC_EGENERIC;
+ }
+ if (sys->var_info.bits_per_pixel != 8) {
+ fmt.i_rmask = ((1 << sys->var_info.red.length) - 1)
+ << sys->var_info.red.offset;
+ fmt.i_gmask = ((1 << sys->var_info.green.length) - 1)
+ << sys->var_info.green.offset;
+ fmt.i_bmask = ((1 << sys->var_info.blue.length) - 1)
+ << sys->var_info.blue.offset;
+ }