vlc | branch: master | Thomas Guillem <[email protected]> | Thu Sep 6 16:15:12 2018 +0200| [c6171b42590ffe75d7aee8f9510e1708f141e42e] | committer: Thomas Guillem
input: handle control with relative audio/spu delays > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c6171b42590ffe75d7aee8f9510e1708f141e42e --- src/input/input.c | 14 ++++++++++---- src/input/input_internal.h | 4 ++++ src/input/var.c | 14 ++++++++------ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/input/input.c b/src/input/input.c index f2945a635e..4fcfebcedd 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -2082,14 +2082,20 @@ static bool Control( input_thread_t *p_input, break; case INPUT_CONTROL_SET_AUDIO_DELAY: - priv->i_audio_delay = param.val.i_int; - input_SendEventAudioDelay( p_input, param.val.i_int ); + if( param.delay.b_absolute ) + priv->i_audio_delay = param.delay.i_val; + else + priv->i_audio_delay += param.delay.i_val; + input_SendEventAudioDelay( p_input, priv->i_audio_delay ); UpdatePtsDelay( p_input ); break; case INPUT_CONTROL_SET_SPU_DELAY: - priv->i_spu_delay = param.val.i_int; - input_SendEventSubtitleDelay( p_input, param.val.i_int ); + if( param.delay.b_absolute ) + priv->i_spu_delay = param.delay.i_val; + else + priv->i_spu_delay += param.delay.i_val; + input_SendEventSubtitleDelay( p_input, priv->i_spu_delay ); UpdatePtsDelay( p_input ); break; diff --git a/src/input/input_internal.h b/src/input/input_internal.h index 50e6cbf8fb..6ce7690ef3 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -92,6 +92,10 @@ typedef union bool b_absolute; float f_val; } pos; + struct { + bool b_absolute; + vlc_tick_t i_val; + } delay; } input_control_param_t; typedef struct diff --git a/src/input/var.c b/src/input/var.c index ad917e1476..6ffa5d878a 100644 --- a/src/input/var.c +++ b/src/input/var.c @@ -1057,14 +1057,16 @@ static int EsDelayCallback ( vlc_object_t *p_this, char const *psz_cmd, input_thread_t *p_input = (input_thread_t*)p_this; VLC_UNUSED(oldval); VLC_UNUSED(p_data); + input_control_param_t param = { + .delay = { + .b_absolute = true, + .i_val = newval.i_int, + }, + }; if( !strcmp( psz_cmd, "audio-delay" ) ) - { - input_ControlPushHelper( p_input, INPUT_CONTROL_SET_AUDIO_DELAY, &newval ); - } + input_ControlPush( p_input, INPUT_CONTROL_SET_AUDIO_DELAY, ¶m ); else if( !strcmp( psz_cmd, "spu-delay" ) ) - { - input_ControlPushHelper( p_input, INPUT_CONTROL_SET_SPU_DELAY, &newval ); - } + input_ControlPush( p_input, INPUT_CONTROL_SET_SPU_DELAY, ¶m ); return VLC_SUCCESS; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
