Commit 5e909857 authored by Gildas Bazin's avatar Gildas Bazin

* modules/access/dshow/dshow.cpp: really fix DV/PVR support this time (hopefully ;).

parent cab0e6fb
...@@ -306,7 +306,7 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, ...@@ -306,7 +306,7 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys,
/* Initialize some data */ /* Initialize some data */
p_sys->i_streams = 0; p_sys->i_streams = 0;
p_sys->pp_streams = (dshow_stream_t **)malloc( 1 ); p_sys->pp_streams = 0;
p_sys->i_width = i_width; p_sys->i_width = i_width;
p_sys->i_height = i_height; p_sys->i_height = i_height;
p_sys->i_chroma = i_chroma; p_sys->i_chroma = i_chroma;
...@@ -338,10 +338,25 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, ...@@ -338,10 +338,25 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys,
p_stream->i_fourcc == VLC_FOURCC('m','p','2','v') ) p_stream->i_fourcc == VLC_FOURCC('m','p','2','v') )
{ {
b_audio = VLC_FALSE; b_audio = VLC_FALSE;
if( b_access_demux )
{
/* Let the access (only) take care of that */
return VLC_EGENERIC;
}
} }
} }
if( p_stream->mt.majortype == MEDIATYPE_Stream ) b_audio = VLC_FALSE; if( p_stream->mt.majortype == MEDIATYPE_Stream )
{
b_audio = VLC_FALSE;
if( b_access_demux )
{
/* Let the access (only) take care of that */
return VLC_EGENERIC;
}
}
} }
if( b_audio && OpenDevice( p_this, p_sys, adevname, 1 ) != VLC_SUCCESS ) if( b_audio && OpenDevice( p_this, p_sys, adevname, 1 ) != VLC_SUCCESS )
...@@ -493,7 +508,7 @@ static int AccessOpen( vlc_object_t *p_this ) ...@@ -493,7 +508,7 @@ static int AccessOpen( vlc_object_t *p_this )
p_access->p_sys = p_sys = (access_sys_t *)malloc( sizeof( access_sys_t ) ); p_access->p_sys = p_sys = (access_sys_t *)malloc( sizeof( access_sys_t ) );
memset( p_sys, 0, sizeof( access_sys_t ) ); memset( p_sys, 0, sizeof( access_sys_t ) );
if( CommonOpen( p_this, p_sys, VLC_TRUE ) != VLC_SUCCESS ) if( CommonOpen( p_this, p_sys, VLC_FALSE ) != VLC_SUCCESS )
{ {
CommonClose( p_this, p_sys ); CommonClose( p_this, p_sys );
return VLC_EGENERIC; return VLC_EGENERIC;
...@@ -549,11 +564,8 @@ static void CommonClose( vlc_object_t *p_this, access_sys_t *p_sys ) ...@@ -549,11 +564,8 @@ static void CommonClose( vlc_object_t *p_this, access_sys_t *p_sys )
CoUninitialize(); CoUninitialize();
/* Remove filters from graph */ /* Remove filters from graph */
for( int i = 0; i < p_sys->i_streams; i++ ) for( int i = 0; i < p_sys->i_streams; i++ ) delete p_sys->pp_streams[i];
{ if( p_sys->i_streams ) free( p_sys->pp_streams );
delete p_sys->pp_streams[i];
}
free( p_sys->pp_streams );
vlc_mutex_destroy( &p_sys->lock ); vlc_mutex_destroy( &p_sys->lock );
vlc_cond_destroy( &p_sys->wait ); vlc_cond_destroy( &p_sys->wait );
...@@ -764,7 +776,7 @@ static int OpenDevice( vlc_object_t *p_this, access_sys_t *p_sys, ...@@ -764,7 +776,7 @@ static int OpenDevice( vlc_object_t *p_this, access_sys_t *p_sys,
* won't add a prefered media type as this doesn't seem to work well * won't add a prefered media type as this doesn't seem to work well
* -- to investigate. */ * -- to investigate. */
vlc_bool_t b_stream_type = VLC_FALSE; vlc_bool_t b_stream_type = VLC_FALSE;
for( int i = 0; i < media_count; i++ ) for( size_t i = 0; i < media_count; i++ )
{ {
if( media_types[i].majortype == MEDIATYPE_Stream ) if( media_types[i].majortype == MEDIATYPE_Stream )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment