- id->p_es->i_stream_id = 1;
- id->p_es->i_cat = UNKNOWN_ES; //p_fmt->i_cat;
- id->p_es->i_fourcc = p_fmt->i_fourcc;
- id->p_es->b_force_decoder = VLC_TRUE;
- switch( p_fmt->i_cat )
- {
- case AUDIO_ES:
- id->p_es->p_bitmapinfoheader = NULL;
- id->p_es->p_waveformatex =
- malloc( sizeof( WAVEFORMATEX ) + p_fmt->i_extra_data );
-#define p_wf ((WAVEFORMATEX*)id->p_es->p_waveformatex)
- p_wf->wFormatTag = WAVE_FORMAT_UNKNOWN;
- p_wf->nChannels = p_fmt->i_channels;
- p_wf->nSamplesPerSec = p_fmt->i_sample_rate;
- p_wf->nAvgBytesPerSec= p_fmt->i_bitrate / 8;
- p_wf->nBlockAlign = p_fmt->i_block_align;
- p_wf->wBitsPerSample = 0;
- p_wf->cbSize = p_fmt->i_extra_data;
- if( p_fmt->i_extra_data > 0 )
- {
- memcpy( &p_wf[1],
- p_fmt->p_extra_data,
- p_fmt->i_extra_data );
- }
-#undef p_wf
- break;
- case VIDEO_ES:
- id->p_es->p_waveformatex = NULL;
- id->p_es->p_bitmapinfoheader = malloc( sizeof( BITMAPINFOHEADER ) + p_fmt->i_extra_data );
-#define p_bih ((BITMAPINFOHEADER*)id->p_es->p_bitmapinfoheader)
- p_bih->biSize = sizeof( BITMAPINFOHEADER ) + p_fmt->i_extra_data;
- p_bih->biWidth = p_fmt->i_width;
- p_bih->biHeight = p_fmt->i_height;
- p_bih->biPlanes = 0;
- p_bih->biBitCount = 0;
- p_bih->biCompression = 0;
- p_bih->biSizeImage = 0;
- p_bih->biXPelsPerMeter = 0;
- p_bih->biYPelsPerMeter = 0;
- p_bih->biClrUsed = 0;
- p_bih->biClrImportant = 0;
- if( p_fmt->i_extra_data > 0 )
- {
- memcpy( &p_bih[1],
- p_fmt->p_extra_data,
- p_fmt->i_extra_data );
- }
-#undef p_bih
- break;
- default:
- msg_Err( p_stream, "unknown es type" );
- free( id );
- return NULL;
- }
-
- if( input_SelectES( p_sys->p_input, id->p_es ) )
- {
- input_DelES( p_sys->p_input, id->p_es );
- vlc_mutex_unlock( &p_sys->p_input->stream.stream_lock );
-
- msg_Err( p_stream, "cannot select es" );
- free( id );
- return NULL;
- }
- vlc_mutex_unlock( &p_sys->p_input->stream.stream_lock );