From: Antoine Cellerier Date: Sun, 31 Dec 2006 15:48:15 +0000 (+0000) Subject: Add quicktime in24 and in32 support (basically s24/32l from what i understand) X-Git-Tag: 0.9.0-test0~8911 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=38490622300316a1f02246c39363bf9900d86848;p=vlc Add quicktime in24 and in32 support (basically s24/32l from what i understand) Some testing might be needed I tried on samples: ftp://ftp.funcom.com/media/Dreamfall/final_dreamfall_trailer_funcom_qtmp4.mov http://www.movie-update.com/download/11372/sm3_sneak_peek.mov According to the Mplayer mailing list, there might be endianess issues (i couldn't find s24b equivalent samples ... so i couldn't test). See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-March/041206.html --- diff --git a/modules/codec/araw.c b/modules/codec/araw.c index 6de10c1cfa..3f8ff0a3f7 100644 --- a/modules/codec/araw.c +++ b/modules/codec/araw.c @@ -196,6 +196,8 @@ static int DecoderOpen( vlc_object_t *p_this ) case VLC_FOURCC('s','1','6','b'): case VLC_FOURCC('s','8',' ',' '): case VLC_FOURCC('u','8',' ',' '): + case VLC_FOURCC('i','n','2','4'): /* Quicktime in24, bigendian int24 */ + case VLC_FOURCC('i','n','3','2'): /* Quicktime in32, bigendian int32 */ break; default: @@ -246,12 +248,26 @@ static int DecoderOpen( vlc_object_t *p_this ) p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec; p_dec->fmt_in.audio.i_bitspersample = 32; } + else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '3', '2' ) ) + { + /* FIXME: mplayer uses bigendian for in24 .... but here it works + * with little endian ... weird */ + p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '3', '2', 'l' ); + p_dec->fmt_in.audio.i_bitspersample = 32; + } else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'l' ) || p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'b' ) ) { p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec; p_dec->fmt_in.audio.i_bitspersample = 24; } + else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '2', '4' ) ) + { + /* FIXME: mplayer uses bigendian for in24 .... but here it works + * with little endian ... weird */ + p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '2', '4', 'l' ); + p_dec->fmt_in.audio.i_bitspersample = 24; + } else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'l' ) || p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'b' ) ) { @@ -1372,7 +1388,8 @@ static int EncoderOpen( vlc_object_t *p_this ) else if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','l') || p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','b') || p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','l') || - p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','b') ) + p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','b') || + p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','2','4') ) { p_enc->fmt_out.audio.i_bitspersample = 24; } @@ -1380,6 +1397,7 @@ static int EncoderOpen( vlc_object_t *p_this ) p_enc->fmt_out.i_codec == VLC_FOURCC('u','3','2','b') || p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','l') || p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','b') || + p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','3','2') || p_enc->fmt_out.i_codec == VLC_FOURCC('f','i','3','2') || p_enc->fmt_out.i_codec == VLC_FOURCC('f','l','3','2') ) {