vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Thu Sep 13 17:37:18 2012 +0200| [fb6b324887a427a9eb5ef92bed1fa2e8129d7923] | committer: Jean-Baptiste Kempf
DMO: fix MSS1/MSS2 decoding Close #750 too > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fb6b324887a427a9eb5ef92bed1fa2e8129d7923 --- modules/codec/dmo/dmo.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c index e25a2a9..2ff6108 100644 --- a/modules/codec/dmo/dmo.c +++ b/modules/codec/dmo/dmo.c @@ -509,13 +509,21 @@ static int DecOpen( decoder_t *p_dec ) { i_chroma = mt.subtype.Data1; i_bpp = 12; + DMOFreeMediaType( &mt ); + break; + } + else if( (p_dec->fmt_in.i_codec == VLC_CODEC_MSS1 || + p_dec->fmt_in.i_codec == VLC_CODEC_MSS2 ) && + guidcmp( &mt.subtype, &MEDIASUBTYPE_RGB24 ) ) + { + i_chroma = VLC_CODEC_RGB24; + i_bpp = 24; } DMOFreeMediaType( &mt ); } - - p_dec->fmt_out.i_codec = i_chroma == VLC_CODEC_YV12 ? - VLC_CODEC_I420 : i_chroma; + + p_dec->fmt_out.i_codec = i_chroma == VLC_CODEC_YV12 ? VLC_CODEC_I420 : i_chroma; p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width; p_dec->fmt_out.video.i_height = p_dec->fmt_in.video.i_height; p_dec->fmt_out.video.i_bits_per_pixel = i_bpp; @@ -534,7 +542,7 @@ static int DecOpen( decoder_t *p_dec ) } p_bih = &p_vih->bmiHeader; - p_bih->biCompression = i_chroma; + p_bih->biCompression = i_chroma == VLC_CODEC_RGB24 ? BI_RGB : i_chroma; p_bih->biHeight *= -1; p_bih->biBitCount = p_dec->fmt_out.video.i_bits_per_pixel; p_bih->biSizeImage = p_dec->fmt_in.video.i_width * @@ -546,8 +554,15 @@ static int DecOpen( decoder_t *p_dec ) dmo_output_type.majortype = MEDIATYPE_Video; dmo_output_type.formattype = FORMAT_VideoInfo; - dmo_output_type.subtype = dmo_output_type.majortype; - dmo_output_type.subtype.Data1 = p_bih->biCompression; + if( i_chroma == VLC_CODEC_RGB24 ) + { + dmo_output_type.subtype = MEDIASUBTYPE_RGB24; + } + else + { + dmo_output_type.subtype = dmo_output_type.majortype; + dmo_output_type.subtype.Data1 = p_bih->biCompression; + } dmo_output_type.bFixedSizeSamples = true; dmo_output_type.bTemporalCompression = 0; dmo_output_type.lSampleSize = p_bih->biSizeImage; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
