X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Favi%2Favi.c;h=98f60d5f724ef4128628949d04535ca975264467;hb=24cddfa0efa80557f538d6dbf08f9b0b4b4d52a4;hp=643e3a6111afd11479610a0c1b3f4068708adc60;hpb=3e077c31e5bd5b3de046eb5340d32a95e1ffb51c;p=vlc diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c index 643e3a6111..98f60d5f72 100644 --- a/modules/demux/avi/avi.c +++ b/modules/demux/avi/avi.c @@ -402,7 +402,7 @@ static int Open( vlc_object_t * p_this ) tk->i_samplesize = tk->i_blocksize; } - if( tk->i_codec == VLC_FOURCC( 'v', 'o', 'r', 'b' ) ) + if( tk->i_codec == VLC_CODEC_VORBIS ) { tk->i_blocksize = 0; /* fix vorbis VBR decoding */ } @@ -445,7 +445,7 @@ static int Open( vlc_object_t * p_this ) * - Size of the next packet, and so on ... */ - if( tk->i_codec == VLC_FOURCC( 'v', 'o', 'r', 'b' ) ) + if( tk->i_codec == VLC_CODEC_VORBIS ) { uint8_t *p_extra = fmt.p_extra; size_t i_extra = fmt.i_extra; @@ -500,38 +500,44 @@ static int Open( vlc_object_t * p_this ) tk->i_cat = VIDEO_ES; tk->i_codec = AVI_FourccGetCodec( VIDEO_ES, p_vids->p_bih->biCompression ); - if( p_vids->p_bih->biCompression == 0x00 ) + if( p_vids->p_bih->biCompression == VLC_FOURCC( 'D', 'X', 'S', 'B' ) ) + { + msg_Dbg( p_demux, "stream[%d] subtitles", i ); + es_format_Init( &fmt, SPU_ES, p_vids->p_bih->biCompression ); + break; + } + else if( p_vids->p_bih->biCompression == 0x00 ) { switch( p_vids->p_bih->biBitCount ) { case 32: - tk->i_codec = VLC_FOURCC('R','V','3','2'); + tk->i_codec = VLC_CODEC_RGB32; break; case 24: - tk->i_codec = VLC_FOURCC('R','V','2','4'); + tk->i_codec = VLC_CODEC_RGB24; break; case 16: /* Yes it is RV15 */ case 15: - tk->i_codec = VLC_FOURCC('R','V','1','5'); + tk->i_codec = VLC_CODEC_RGB15; break; case 9: /* <- TODO check that */ - tk->i_codec = VLC_FOURCC( 'Y', 'V', 'U', '9' ); + tk->i_codec = VLC_CODEC_I410; break; case 8: /* <- TODO check that */ - tk->i_codec = VLC_FOURCC('Y','8','0','0'); + tk->i_codec = VLC_CODEC_GREY; break; } es_format_Init( &fmt, VIDEO_ES, tk->i_codec ); switch( tk->i_codec ) { - case VLC_FOURCC('R','V','2','4'): - case VLC_FOURCC('R','V','3','2'): + case VLC_CODEC_RGB24: + case VLC_CODEC_RGB32: fmt.video.i_rmask = 0x00ff0000; fmt.video.i_gmask = 0x0000ff00; fmt.video.i_bmask = 0x000000ff; break; - case VLC_FOURCC('R','V','1','5'): + case VLC_CODEC_RGB15: fmt.video.i_rmask = 0x7c00; fmt.video.i_gmask = 0x03e0; fmt.video.i_bmask = 0x001f; @@ -543,10 +549,11 @@ static int Open( vlc_object_t * p_this ) else { es_format_Init( &fmt, VIDEO_ES, p_vids->p_bih->biCompression ); - if( tk->i_codec == FOURCC_mp4v && + if( tk->i_codec == VLC_CODEC_MP4V && !strncasecmp( (char*)&p_strh->i_handler, "XVID", 4 ) ) { - fmt.i_codec = VLC_FOURCC( 'X', 'V', 'I', 'D' ); + fmt.i_codec = + fmt.i_original_fourcc = VLC_FOURCC( 'X', 'V', 'I', 'D' ); } } tk->i_samplesize = 0; @@ -598,7 +605,7 @@ static int Open( vlc_object_t * p_this ) case( AVIFOURCC_txts): tk->i_cat = SPU_ES; - tk->i_codec = VLC_FOURCC( 's', 'u', 'b', 't' ); + tk->i_codec = VLC_CODEC_SUBT; msg_Dbg( p_demux, "stream[%d] subtitles", i ); es_format_Init( &fmt, SPU_ES, tk->i_codec ); break; @@ -1852,7 +1859,7 @@ static int AVI_GetKeyFlag( vlc_fourcc_t i_fourcc, uint8_t *p_byte ) { switch( i_fourcc ) { - case FOURCC_DIV1: + case VLC_CODEC_DIV1: /* we have: * startcode: 0x00000100 32bits * framenumber ? 5bits @@ -1865,13 +1872,14 @@ static int AVI_GetKeyFlag( vlc_fourcc_t i_fourcc, uint8_t *p_byte ) } return p_byte[4] & 0x06 ? 0 : AVIIF_KEYFRAME; - case FOURCC_DIV2: - case FOURCC_DIV3: /* wmv1 also */ + case VLC_CODEC_DIV2: + case VLC_CODEC_DIV3: + case VLC_CODEC_WMV1: /* we have * picture type 0(I),1(P) 2bits */ return p_byte[0] & 0xC0 ? 0 : AVIIF_KEYFRAME; - case FOURCC_mp4v: + case VLC_CODEC_MP4V: /* we should find first occurrence of 0x000001b6 (32bits) * startcode: 0x000001b6 32bits * piture type 0(I),1(P) 2bits @@ -1896,60 +1904,8 @@ vlc_fourcc_t AVI_FourccGetCodec( unsigned int i_cat, vlc_fourcc_t i_codec ) case AUDIO_ES: wf_tag_to_fourcc( i_codec, &i_codec, NULL ); return i_codec; - case VIDEO_ES: - /* XXX DIV1 <- msmpeg4v1, DIV2 <- msmpeg4v2, DIV3 <- msmpeg4v3, mp4v for mpeg4 */ - switch( i_codec ) - { - case FOURCC_1: - return VLC_FOURCC('m','r','l','e'); - case FOURCC_DIV1: - case FOURCC_div1: - case FOURCC_MPG4: - case FOURCC_mpg4: - return FOURCC_DIV1; - case FOURCC_DIV2: - case FOURCC_div2: - case FOURCC_MP42: - case FOURCC_mp42: - case FOURCC_MPG3: - case FOURCC_mpg3: - return FOURCC_DIV2; - case FOURCC_div3: - case FOURCC_MP43: - case FOURCC_mp43: - case FOURCC_DIV3: - case FOURCC_DIV4: - case FOURCC_div4: - case FOURCC_DIV5: - case FOURCC_div5: - case FOURCC_DIV6: - case FOURCC_div6: - case FOURCC_AP41: - case FOURCC_3IV1: - case FOURCC_3iv1: - case FOURCC_3IVD: - case FOURCC_3ivd: - case FOURCC_3VID: - case FOURCC_3vid: - return FOURCC_DIV3; - case FOURCC_DIVX: - case FOURCC_divx: - case FOURCC_MP4S: - case FOURCC_mp4s: - case FOURCC_M4S2: - case FOURCC_m4s2: - case FOURCC_xvid: - case FOURCC_XVID: - case FOURCC_XviD: - case FOURCC_DX50: - case FOURCC_dx50: - case FOURCC_mp4v: - case FOURCC_4: - case FOURCC_3IV2: - case FOURCC_3iv2: - return FOURCC_mp4v; - } + return vlc_fourcc_GetCodec( i_cat, i_codec ); default: return VLC_FOURCC( 'u', 'n', 'd', 'f' ); }