[vlc-devel] [PATCH 1/1] mux/ts: Fix setting of even CSA key.
Rafaël Carré
funman at videolan.org
Tue Apr 10 18:03:01 CEST 2012
Le 2012-04-10 06:21, Georgi Chorbadzhiyski a écrit :
> Without this fix the second CSA key can not be set, which results
> in a stream that is impossible to decrypt.
>
> Tested with:
> cvlc \
> -I dummy -vv \
> --sout '#standard{access=udp,mux=ts,dst=239.78.78.78:5000}' \
> --sout-ts-crypt-audio --no-sout-ts-crypt-video \
> --sout-ts-csa-ck=1111111111111111 \
> --sout-ts-csa2-ck=0000000000000000 \
> http://example.com/source.ts
>
> Before the patch:
> mux_ts mux debug: using CSA (de)scrambling with odd key=11:11:11:11:11:11:11:11
> mux_ts mux debug: no CSA found
> mux_ts mux debug: no CSA found
>
> After the patch:
> mux_ts mux debug: using CSA (de)scrambling with odd key=11:11:11:11:11:11:11:11
> mux_ts mux debug: using CSA (de)scrambling with even key=0:0:0:0:0:0:0:0
> ---
> modules/mux/mpeg/ts.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/modules/mux/mpeg/ts.c b/modules/mux/mpeg/ts.c
> index a887095..03f452c 100644
> --- a/modules/mux/mpeg/ts.c
> +++ b/modules/mux/mpeg/ts.c
> @@ -464,6 +464,7 @@ static csa_t *csaSetup( vlc_object_t *p_this )
> vlc_mutex_init( &p_sys->csa_lock );
> p_sys->b_crypt_audio = var_GetBool( p_mux, SOUT_CFG_PREFIX "crypt-audio" );
> p_sys->b_crypt_video = var_GetBool( p_mux, SOUT_CFG_PREFIX "crypt-video" );
> + p_sys->csa = csa;
>
> char *csa2ck = var_CreateGetNonEmptyStringCommand( p_mux, SOUT_CFG_PREFIX "csa2-ck");
> if (!csa2ck || csa_SetCW( p_this, p_sys->csa, csa2ck, false ) )
Thanks for the patch,
diff --git a/modules/mux/mpeg/ts.c b/modules/mux/mpeg/ts.c
index a887095..e1057ee 100644
--- a/modules/mux/mpeg/ts.c
+++ b/modules/mux/mpeg/ts.c
@@ -466,8 +466,8 @@ static csa_t *csaSetup( vlc_object_t *p_this )
p_sys->b_crypt_video = var_GetBool( p_mux, SOUT_CFG_PREFIX
"crypt-video" );
char *csa2ck = var_CreateGetNonEmptyStringCommand( p_mux,
SOUT_CFG_PREFIX "csa2-ck");
- if (!csa2ck || csa_SetCW( p_this, p_sys->csa, csa2ck, false ) )
- csa_SetCW( p_this, p_sys->csa, csack, false );
+ if (!csa2ck || csa_SetCW( p_this, csa, csa2ck, false ) )
+ csa_SetCW( p_this, csa, csack, false );
free(csa2ck);
var_Create( p_mux, SOUT_CFG_PREFIX "csa-use", VLC_VAR_STRING |
VLC_VAR_DOINHERIT | VLC_VAR_ISCOMMAND );
Should be cleaner, since csaSetup() returns the context created (those 2
csa_SetCW calls still used p_sys->csa).
Does it work for you?
More information about the vlc-devel
mailing list