else if( i_action == ACTIONID_SUBDELAY_DOWN )
{
- int i_delay;
- if( input_Control( p_input, INPUT_GET_SUBDELAY, &i_delay ) ==
- VLC_SUCCESS )
- {
- i_delay--;
- input_Control( p_input, INPUT_SET_SUBDELAY, i_delay );
- ClearChannels( p_intf, p_vout );
- vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms",
- i_delay*100);
- }
+ int64_t i_delay = var_GetTime( p_input, "spu-delay" );
+
+ i_delay -= 10000; /* 10 ms */
+
+ var_SetTime( p_input, "spu-delay", i_delay );
+ ClearChannels( p_intf, p_vout );
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms",
+ (int)(i_delay/1000) );
}
else if( i_action == ACTIONID_SUBDELAY_UP )
{
- int i_delay;
- if( input_Control( p_input, INPUT_GET_SUBDELAY, &i_delay ) ==
- VLC_SUCCESS )
- {
- i_delay++;
- input_Control( p_input, INPUT_SET_SUBDELAY, i_delay );
- ClearChannels( p_intf, p_vout );
- vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms",
- i_delay*100);
- }
+ int64_t i_delay = var_GetTime( p_input, "spu-delay" );
+
+ i_delay += 10000; /* 10 ms */
+
+ var_SetTime( p_input, "spu-delay", i_delay );
+ ClearChannels( p_intf, p_vout );
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms",
+ (int)(i_delay/1000) );
}
else if( i_action == ACTIONID_FULLSCREEN && p_vout )
{
}
else if( p_input )
{
- vlc_bool_t b_seekable = p_input->stream.b_seekable;
+ /* FIXME --fenrir
+ * How to get a valid value ?
+ * That's not that easy with some special stream
+ */
+ vlc_bool_t b_seekable = VLC_TRUE;
if( i_action == ACTIONID_PAUSE )
{
var_Set( p_input, "time-offset", val );
DisplayPosition( p_intf, p_vout, p_input );
}
+ else if( i_action == ACTIONID_AUDIO_TRACK )
+ {
+ vlc_value_t val, list, list2;
+ int i_count, i;
+ var_Get( p_input, "audio-es", &val );
+ var_Change( p_input, "audio-es", VLC_VAR_GETCHOICES,
+ &list, &list2 );
+ i_count = list.p_list->i_count;
+ if( i_count <= 1 )
+ {
+ continue;
+ }
+ for( i = 0; i < i_count; i++ )
+ {
+ if( val.i_int == list.p_list->p_values[i].i_int )
+ {
+ break;
+ }
+ }
+ /* value of audio-es was not in choices list */
+ if( i == i_count )
+ {
+ msg_Warn( p_input,
+ "invalid current audio track, selecting 0" );
+ var_Set( p_input, "audio-es",
+ list.p_list->p_values[0] );
+ i = 0;
+ }
+ else if( i == i_count - 1 )
+ {
+ var_Set( p_input, "audio-es",
+ list.p_list->p_values[1] );
+ i = 1;
+ }
+ else
+ {
+ var_Set( p_input, "audio-es",
+ list.p_list->p_values[i+1] );
+ i++;
+ }
+ vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+ _("Audio track: %s"),
+ list2.p_list->p_values[i].psz_string );
+ }
+ else if( i_action == ACTIONID_SUBTITLE_TRACK )
+ {
+ vlc_value_t val, list, list2;
+ int i_count, i;
+ var_Get( p_input, "spu-es", &val );
+ var_Change( p_input, "spu-es", VLC_VAR_GETCHOICES,
+ &list, &list2 );
+ i_count = list.p_list->i_count;
+ for( i = 0; i < i_count; i++ )
+ {
+ if( val.i_int == list.p_list->p_values[i].i_int )
+ {
+ break;
+ }
+ }
+ /* value of audio-es was not in choices list */
+ if( i == i_count )
+ {
+ msg_Warn( p_input, "invalid current subtitle track, selecting 0" );
+ var_Set( p_input, "spu-es", list.p_list->p_values[0] );
+ i = 0;
+ }
+ else if( i == i_count - 1 )
+ {
+ var_Set( p_input, "spu-es", list.p_list->p_values[0] );
+ i = 0;
+ }
+ else
+ {
+ var_Set( p_input, "spu-es", list.p_list->p_values[i+1] );
+ i = i + 1;
+ }
+ vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+ _("Subtitle track: %s"),
+ list2.p_list->p_values[i].psz_string );
+ }
else if( i_action == ACTIONID_NEXT )
{
p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
{
int i;
- vout_ClearOSDChannel( p_vout, DEFAULT_CHAN );
- for( i = 0; i < CHANNELS_NUMBER; i++ )
+ if( p_vout )
{
- vout_ClearOSDChannel( p_vout, p_intf->p_sys->p_channels[ i ] );
+ vout_ClearOSDChannel( p_vout, DEFAULT_CHAN );
+ for( i = 0; i < CHANNELS_NUMBER; i++ )
+ {
+ vout_ClearOSDChannel( p_vout, p_intf->p_sys->p_channels[ i ] );
+ }
}
}