[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