From 1c7687affc467c71e793087286d9b53a7ca84f3e Mon Sep 17 00:00:00 2001 From: Arnaud de Turckheim Date: Wed, 22 Apr 2026 10:40:01 +0200 Subject: [PATCH 1/3] upipe_ts_demux: fix error code for EMM controls --- lib/upipe-ts/upipe_ts_demux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/upipe-ts/upipe_ts_demux.c b/lib/upipe-ts/upipe_ts_demux.c index d03fc7ece..db2a64f28 100644 --- a/lib/upipe-ts/upipe_ts_demux.c +++ b/lib/upipe-ts/upipe_ts_demux.c @@ -3376,7 +3376,7 @@ static int upipe_ts_demux_emm_control(struct upipe *upipe, int command, case UPIPE_TS_EMM_SET_PRIVATE_KEY: return upipe_control_va(emm->emmd, command, args); } - return UBASE_ERR_NONE; + return UBASE_ERR_UNHANDLED; } From d8d68c0bea838ebb94e1e139f8801684a0b74b25 Mon Sep 17 00:00:00 2001 From: Arnaud de Turckheim Date: Wed, 22 Apr 2026 10:40:31 +0200 Subject: [PATCH 2/3] upipe_ts_demux: fix compilation without EMM support --- lib/upipe-ts/upipe_ts_demux.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/upipe-ts/upipe_ts_demux.c b/lib/upipe-ts/upipe_ts_demux.c index db2a64f28..17dea755e 100644 --- a/lib/upipe-ts/upipe_ts_demux.c +++ b/lib/upipe-ts/upipe_ts_demux.c @@ -3368,14 +3368,17 @@ static void upipe_ts_demux_emm_free(struct upipe *upipe) static int upipe_ts_demux_emm_control(struct upipe *upipe, int command, va_list args) { - struct upipe_ts_demux_emm *emm = upipe_ts_demux_emm_from_upipe(upipe); UBASE_HANDLED_RETURN( upipe_ts_demux_emm_control_super(upipe, command, args)); +#ifdef HAVE_TS_CRYPT + struct upipe_ts_demux_emm *emm = upipe_ts_demux_emm_from_upipe(upipe); + switch (command) { case UPIPE_TS_EMM_SET_PRIVATE_KEY: return upipe_control_va(emm->emmd, command, args); } +#endif return UBASE_ERR_UNHANDLED; } From 0572920d25a1d1f91270d396d424c2c47a6b5769 Mon Sep 17 00:00:00 2001 From: Arnaud de Turckheim Date: Wed, 22 Apr 2026 11:00:37 +0200 Subject: [PATCH 3/3] upipe_ts_demux: fix EMM subpipe release on error --- lib/upipe-ts/upipe_ts_demux.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/upipe-ts/upipe_ts_demux.c b/lib/upipe-ts/upipe_ts_demux.c index 17dea755e..cc7018caa 100644 --- a/lib/upipe-ts/upipe_ts_demux.c +++ b/lib/upipe-ts/upipe_ts_demux.c @@ -3330,7 +3330,8 @@ static void upipe_ts_demux_emm_no_input(struct upipe *upipe) struct upipe_ts_demux_psi_pid *psi_pid = upipe_ts_demux_emm->psi_pid_emm; upipe_ts_demux_emm->psi_pid_emm = NULL; - upipe_ts_demux_psi_pid_release(psi_pid); + if (psi_pid) + upipe_ts_demux_psi_pid_release(psi_pid); upipe_ts_demux_emm_clean_emmd(upipe); upipe_ts_demux_emm_clean_psi_split_output_emm(upipe);