[vlc-commits] es_out: add ES_OUT_UNSET_ES
Thomas Guillem
git at videolan.org
Thu Jul 19 12:59:53 CEST 2018
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Jul 19 12:50:23 2018 +0200| [94f733af227b488b350763354d12d78998fc3705] | committer: Thomas Guillem
es_out: add ES_OUT_UNSET_ES
This control will allow demuxers to disable an ES track without using "*-es"
input variables.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=94f733af227b488b350763354d12d78998fc3705
---
include/vlc_es_out.h | 1 +
src/input/es_out.c | 17 +++++++++++++++++
src/input/es_out_timeshift.c | 3 +++
3 files changed, 21 insertions(+)
diff --git a/include/vlc_es_out.h b/include/vlc_es_out.h
index b30d24e873..7ed544022b 100644
--- a/include/vlc_es_out.h
+++ b/include/vlc_es_out.h
@@ -37,6 +37,7 @@ enum es_out_query_e
{
/* set or change the selected ES in its category (audio/video/spu) */
ES_OUT_SET_ES, /* arg1= es_out_id_t* */
+ ES_OUT_UNSET_ES, /* arg1= es_out_id_t* res=can fail */
ES_OUT_RESTART_ES, /* arg1= es_out_id_t* */
/* set 'default' tag on ES (copied across from container) */
diff --git a/src/input/es_out.c b/src/input/es_out.c
index d40713c65a..948bb4407f 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -2403,6 +2403,23 @@ static int EsOutVaControlLocked( es_out_t *out, int i_query, va_list args )
return VLC_SUCCESS;
}
+ case ES_OUT_UNSET_ES:
+ {
+ es_out_id_t *es = va_arg( args, es_out_id_t * ), *other;
+ foreach_es_then_es_slaves(other)
+ {
+ if (es == other)
+ {
+ if (EsIsSelected(other))
+ {
+ EsUnselect(out, other, other->p_pgrm == p_sys->p_pgrm);
+ return VLC_SUCCESS;
+ }
+ break;
+ }
+ }
+ return VLC_EGENERIC;
+ }
case ES_OUT_STOP_ALL_ES:
{
es_out_id_t *es;
diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c
index 62c633bf4c..552b896132 100644
--- a/src/input/es_out_timeshift.c
+++ b/src/input/es_out_timeshift.c
@@ -618,6 +618,7 @@ static int ControlLocked( es_out_t *p_out, int i_query, va_list args )
case ES_OUT_DEL_GROUP:
case ES_OUT_SET_META:
case ES_OUT_SET_ES:
+ case ES_OUT_UNSET_ES:
case ES_OUT_RESTART_ES:
case ES_OUT_SET_ES_DEFAULT:
case ES_OUT_SET_ES_STATE:
@@ -1447,6 +1448,7 @@ static int CmdInitControl( ts_cmd_t *p_cmd, int i_query, va_list args, bool b_co
/* Modified control */
case ES_OUT_SET_ES: /* arg1= es_out_id_t* */
+ case ES_OUT_UNSET_ES: /* arg1= es_out_id_t* */
case ES_OUT_RESTART_ES: /* arg1= es_out_id_t* */
case ES_OUT_SET_ES_DEFAULT: /* arg1= es_out_id_t* */
p_cmd->u.control.u.p_es = (es_out_id_t*)va_arg( args, es_out_id_t * );
@@ -1558,6 +1560,7 @@ static int CmdExecuteControl( es_out_t *p_out, ts_cmd_t *p_cmd )
/* Modified control */
case ES_OUT_SET_ES: /* arg1= es_out_id_t* */
+ case ES_OUT_UNSET_ES: /* arg1= es_out_id_t* */
case ES_OUT_RESTART_ES: /* arg1= es_out_id_t* */
case ES_OUT_SET_ES_DEFAULT: /* arg1= es_out_id_t* */
return es_out_Control( p_out, i_query, !p_cmd->u.control.u.p_es ? NULL :
More information about the vlc-commits
mailing list