[vlc-devel] commit: Update scrambled es state on change (TS). (Laurent Aimar )
git version control
git at videolan.org
Sun Mar 8 19:36:42 CET 2009
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Sun Mar 8 19:18:18 2009 +0100| [77f3391530ea9e252c96a71541c6634780c4144b] | committer: Laurent Aimar
Update scrambled es state on change (TS).
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=77f3391530ea9e252c96a71541c6634780c4144b
---
modules/demux/ts.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/modules/demux/ts.c b/modules/demux/ts.c
index e1caf62..1c844a2 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -310,6 +310,7 @@ typedef struct
bool b_seen;
bool b_valid;
int i_cc; /* countinuity counter */
+ bool b_scrambled;
/* PSI owner (ie PMT -> PAT, ES -> PMT */
ts_psi_t *p_owner;
@@ -1507,6 +1508,7 @@ static void PIDInit( ts_pid_t *pid, bool b_psi, ts_psi_t *p_owner )
pid->b_valid = true;
pid->i_cc = 0xff;
+ pid->b_scrambled = false;
pid->p_owner = p_owner;
pid->i_owner_number = 0;
@@ -1867,6 +1869,7 @@ static bool GatherPES( demux_t *p_demux, ts_pid_t *pid, block_t *p_bk )
{
const uint8_t *p = p_bk->p_buffer;
const bool b_unit_start = p[1]&0x40;
+ const bool b_scrambled = p[3]&0x80;
const bool b_adaptation = p[3]&0x20;
const bool b_payload = p[3]&0x10;
const int i_cc = p[3]&0x0f; /* continuity counter */
@@ -1971,6 +1974,23 @@ static bool GatherPES( demux_t *p_demux, ts_pid_t *pid, block_t *p_bk )
return i_ret;
}
+ /* */
+ if( !pid->b_scrambled != !b_scrambled )
+ {
+ msg_Warn( p_demux, "scrambled state changed on pid %d (%d->%d)",
+ pid->i_pid, pid->b_scrambled, b_scrambled );
+
+ pid->b_scrambled = b_scrambled;
+
+ for( int i = 0; i < pid->i_extra_es; i++ )
+ {
+ es_out_Control( p_demux->out, ES_OUT_SET_ES_SCRAMBLED_STATE,
+ pid->extra_es[i]->id, b_scrambled );
+ }
+ es_out_Control( p_demux->out, ES_OUT_SET_ES_SCRAMBLED_STATE,
+ pid->es->id, b_scrambled );
+ }
+
/* We have to gather it */
p_bk->p_buffer += i_skip;
p_bk->i_buffer -= i_skip;
More information about the vlc-devel
mailing list