Commit 89b6530d authored by Laurent Aimar's avatar Laurent Aimar

Merge commit 'origin/1.0-bugfix'

Conflicts:

	modules/codec/dmo/dmo.c
parents e169fa3a da62e6d3
...@@ -604,6 +604,9 @@ static int GetTracks( access_t *p_access, input_item_t *p_current ) ...@@ -604,6 +604,9 @@ static int GetTracks( access_t *p_access, input_item_t *p_current )
#ifdef HAVE_LIBCDDB #ifdef HAVE_LIBCDDB
static cddb_disc_t *GetCDDBInfo( access_t *p_access, int i_titles, int *p_sectors ) static cddb_disc_t *GetCDDBInfo( access_t *p_access, int i_titles, int *p_sectors )
{ {
if( var_CreateGetInteger( p_access, "album-art" ) == ALBUM_ART_WHEN_ASKED )
return NULL;
/* */ /* */
cddb_conn_t *p_cddb = cddb_new(); cddb_conn_t *p_cddb = cddb_new();
if( !p_cddb ) if( !p_cddb )
......
...@@ -644,6 +644,7 @@ int CDDAOpen( vlc_object_t *p_this ) ...@@ -644,6 +644,7 @@ int CDDAOpen( vlc_object_t *p_this )
cddb_log_set_handler ( cddb_log_handler ); cddb_log_set_handler ( cddb_log_handler );
p_cdda->cddb.disc = NULL; p_cdda->cddb.disc = NULL;
p_cdda->b_cddb_enabled = p_cdda->b_cddb_enabled =
var_CreateGetInteger( p_access, "album-art" ) != ALBUM_ART_WHEN_ASKED &&
config_GetInt( p_access, MODULE_STRING "-cddb-enabled" ); config_GetInt( p_access, MODULE_STRING "-cddb-enabled" );
#endif #endif
p_cdda->b_cdtext = p_cdda->b_cdtext =
......
...@@ -1330,7 +1330,8 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks, ...@@ -1330,7 +1330,8 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
for( int i = 0; i <= i_track_last; i++ ) for( int i = 0; i <= i_track_last; i++ )
{ {
/* */ /* */
EnsureUTF8( pppsz_info[i][j] ); if( pppsz_info[i][j] )
EnsureUTF8( pppsz_info[i][j] );
/* */ /* */
const char *psz_default = pppsz_info[0][j]; const char *psz_default = pppsz_info[0][j];
......
...@@ -141,7 +141,9 @@ struct decoder_sys_t ...@@ -141,7 +141,9 @@ struct decoder_sys_t
vlc_cond_t wait_input, wait_output; vlc_cond_t wait_input, wait_output;
bool b_ready, b_works; bool b_ready, b_works;
block_t **pp_input; block_t **pp_input;
void *p_output;
int i_output;
void **pp_output;
}; };
const GUID IID_IWMCodecPrivateData = {0x73f0be8e, 0x57f7, 0x4f01, {0xaa, 0x66, 0x9f, 0x57, 0x34, 0xc, 0xfe, 0xe}}; const GUID IID_IWMCodecPrivateData = {0x73f0be8e, 0x57f7, 0x4f01, {0xaa, 0x66, 0x9f, 0x57, 0x34, 0xc, 0xfe, 0xe}};
...@@ -202,6 +204,7 @@ static const codec_dll decoders_table[] = ...@@ -202,6 +204,7 @@ static const codec_dll decoders_table[] =
/* WMA 3 */ /* WMA 3 */
{ VLC_CODEC_WMAP, "wma9dmod.dll", &guid_wma9 }, { VLC_CODEC_WMAP, "wma9dmod.dll", &guid_wma9 },
{ VLC_CODEC_WMAL, "wma9dmod.dll", &guid_wma9 }, { VLC_CODEC_WMAL, "wma9dmod.dll", &guid_wma9 },
/* WMA 2 */ /* WMA 2 */
{ VLC_CODEC_WMA2, "wma9dmod.dll", &guid_wma9 }, { VLC_CODEC_WMA2, "wma9dmod.dll", &guid_wma9 },
...@@ -280,7 +283,7 @@ found: ...@@ -280,7 +283,7 @@ found:
p_sys->b_works = p_sys->b_works =
p_sys->b_ready = false; p_sys->b_ready = false;
p_sys->pp_input = NULL; p_sys->pp_input = NULL;
p_sys->p_output = NULL; TAB_INIT( p_sys->i_output, p_sys->pp_output );
if( vlc_clone( &p_sys->thread, DecoderThread, p_dec, if( vlc_clone( &p_sys->thread, DecoderThread, p_dec,
VLC_THREAD_PRIORITY_INPUT ) ) VLC_THREAD_PRIORITY_INPUT ) )
...@@ -317,6 +320,7 @@ static void DecoderClose( vlc_object_t *p_this ) ...@@ -317,6 +320,7 @@ static void DecoderClose( vlc_object_t *p_this )
vlc_mutex_unlock( &p_sys->lock ); vlc_mutex_unlock( &p_sys->lock );
vlc_join( p_sys->thread, NULL ); vlc_join( p_sys->thread, NULL );
TAB_CLEAN( p_sys->i_output, p_sys->pp_output );
vlc_cond_destroy( &p_sys->wait_input ); vlc_cond_destroy( &p_sys->wait_input );
vlc_cond_destroy( &p_sys->wait_output ); vlc_cond_destroy( &p_sys->wait_output );
vlc_mutex_destroy( &p_sys->lock ); vlc_mutex_destroy( &p_sys->lock );
...@@ -329,12 +333,22 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) ...@@ -329,12 +333,22 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
void *p_ret; void *p_ret;
vlc_mutex_lock( &p_sys->lock ); vlc_mutex_lock( &p_sys->lock );
p_sys->pp_input = pp_block; if( p_sys->i_output <= 0 )
vlc_cond_signal( &p_sys->wait_input ); {
p_sys->pp_input = pp_block;
vlc_cond_signal( &p_sys->wait_input );
while( p_sys->pp_input )
vlc_cond_wait( &p_sys->wait_output, &p_sys->lock );
}
p_ret = NULL;
if( p_sys->i_output > 0 )
{
p_ret = p_sys->pp_output[0];
TAB_REMOVE( p_sys->i_output, p_sys->pp_output, p_ret );
}
while( p_sys->pp_input )
vlc_cond_wait( &p_sys->wait_output, &p_sys->lock );
p_ret = p_sys->p_output;
vlc_mutex_unlock( &p_sys->lock ); vlc_mutex_unlock( &p_sys->lock );
return p_ret; return p_ret;
...@@ -1022,7 +1036,13 @@ static void *DecoderThread( void *data ) ...@@ -1022,7 +1036,13 @@ static void *DecoderThread( void *data )
if( !p_sys->b_ready ) if( !p_sys->b_ready )
break; break;
p_sys->p_output = DecBlock( p_dec, p_sys->pp_input ); for( ;; )
{
void *p_output = DecBlock( p_dec, p_sys->pp_input );
if( !p_output )
break;
TAB_APPEND( p_sys->i_output, p_sys->pp_output, p_output );
}
p_sys->pp_input = NULL; p_sys->pp_input = NULL;
vlc_cond_signal( &p_sys->wait_output ); vlc_cond_signal( &p_sys->wait_output );
} }
......
...@@ -2435,7 +2435,7 @@ static int InputSourceInit( input_thread_t *p_input, ...@@ -2435,7 +2435,7 @@ static int InputSourceInit( input_thread_t *p_input,
in->b_can_pause = false; in->b_can_pause = false;
var_SetBool( p_input, "can-pause", in->b_can_pause || !in->b_can_pace_control ); /* XXX temporary because of es_out_timeshift*/ var_SetBool( p_input, "can-pause", in->b_can_pause || !in->b_can_pace_control ); /* XXX temporary because of es_out_timeshift*/
var_SetBool( p_input, "can-rate", !in->b_can_pace_control || in->b_can_rate_control ); /* XXX temporary because of es_out_timeshift*/ var_SetBool( p_input, "can-rate", !in->b_can_pace_control || in->b_can_rate_control ); /* XXX temporary because of es_out_timeshift*/
var_SetBool( p_input, "can-rewind", !in->b_rescale_ts && !in->b_can_pace_control ); var_SetBool( p_input, "can-rewind", !in->b_rescale_ts && !in->b_can_pace_control && in->b_can_rate_control );
bool b_can_seek; bool b_can_seek;
if( demux_Control( in->p_demux, DEMUX_CAN_SEEK, &b_can_seek ) ) if( demux_Control( in->p_demux, DEMUX_CAN_SEEK, &b_can_seek ) )
......
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