+ case( AVIFOURCC_auds ):
+ tk->i_cat = AUDIO_ES;
+ tk->i_codec = AVI_FourccGetCodec( AUDIO_ES,
+ p_auds->p_wf->wFormatTag );
+ if( ( tk->i_blocksize = p_auds->p_wf->nBlockAlign ) == 0 )
+ {
+ if( p_auds->p_wf->wFormatTag == 1 )
+ {
+ tk->i_blocksize = p_auds->p_wf->nChannels * (p_auds->p_wf->wBitsPerSample/8);
+ }
+ else
+ {
+ tk->i_blocksize = 1;
+ }
+ }
+ es_format_Init( &fmt, AUDIO_ES, tk->i_codec );
+
+ fmt.audio.i_channels = p_auds->p_wf->nChannels;
+ fmt.audio.i_rate = p_auds->p_wf->nSamplesPerSec;
+ fmt.i_bitrate = p_auds->p_wf->nAvgBytesPerSec*8;
+ fmt.audio.i_blockalign = p_auds->p_wf->nBlockAlign;
+ fmt.audio.i_bitspersample = p_auds->p_wf->wBitsPerSample;
+ fmt.i_extra = __MIN( p_auds->p_wf->cbSize,
+ p_auds->i_chunk_size - sizeof(WAVEFORMATEX) );
+ fmt.p_extra = &p_auds->p_wf[1];
+ msg_Dbg( p_input, "stream[%d] audio(0x%x) %d channels %dHz %dbits",
+ i, p_auds->p_wf->wFormatTag, p_auds->p_wf->nChannels,
+ p_auds->p_wf->nSamplesPerSec, p_auds->p_wf->wBitsPerSample);
+ break;
+
+ case( AVIFOURCC_vids ):
+ tk->i_cat = VIDEO_ES;
+ tk->i_codec = AVI_FourccGetCodec( VIDEO_ES,
+ p_vids->p_bih->biCompression );
+ if( p_vids->p_bih->biCompression == 0x00 )
+ {
+ switch( p_vids->p_bih->biBitCount )
+ {
+ case 32:
+ tk->i_codec = VLC_FOURCC('R','V','3','2');
+ break;
+ case 24:
+ tk->i_codec = VLC_FOURCC('R','V','2','4');
+ break;
+ case 16:
+ /* tk->i_codec = VLC_FOURCC('R','V','1','6');*/
+ /* break;*/
+ case 15:
+ tk->i_codec = VLC_FOURCC('R','V','1','5');
+ break;
+ case 9:
+ tk->i_codec = VLC_FOURCC( 'Y', 'V', 'U', '9' ); /* <- TODO check that */
+ break;
+ }
+ es_format_Init( &fmt, VIDEO_ES, tk->i_codec );
+ }
+ else
+ {
+ es_format_Init( &fmt, VIDEO_ES, p_vids->p_bih->biCompression );
+ }
+ tk->i_samplesize = 0;
+ fmt.video.i_width = p_vids->p_bih->biWidth;
+ fmt.video.i_height = p_vids->p_bih->biHeight;
+ fmt.video.i_bits_per_pixel = p_vids->p_bih->biBitCount;
+ fmt.i_extra =
+ __MIN( p_vids->p_bih->biSize - sizeof( BITMAPINFOHEADER ),
+ p_vids->i_chunk_size - sizeof(BITMAPINFOHEADER) );
+ fmt.p_extra = &p_vids->p_bih[1];
+ msg_Dbg( p_input, "stream[%d] video(%4.4s) %dx%d %dbpp %ffps",
+ i,
+ (char*)&p_vids->p_bih->biCompression,
+ p_vids->p_bih->biWidth,
+ p_vids->p_bih->biHeight,
+ p_vids->p_bih->biBitCount,
+ (float)tk->i_rate/(float)tk->i_scale );
+ break;
+ default:
+ msg_Warn( p_input, "stream[%d] unknown type", i );
+ free( tk );
+ continue;