don't pass subchannel data to the TRAU decoder if we're not synchronized yet

This commit is contained in:
Harald Welte 2009-02-19 17:05:13 +00:00
parent 26aa6a1166
commit f1e6f96654
2 changed files with 8 additions and 1 deletions

View File

@ -35,7 +35,10 @@
struct demux_subch {
u_int8_t out_bitbuf[TRAU_FRAME_BITS];
u_int16_t out_idx; /* next bit to be written in out_bitbuf */
/* number of consecutive zeros that we have received (for sync) */
unsigned int consecutive_zeros;
/* are we in TRAU frame sync or not? */
unsigned int in_sync;
};
struct subch_demux {

View File

@ -62,6 +62,7 @@ static void resync_to_here(struct demux_subch *sch)
/* set index in a way that we can continue receiving bits after
* the end of the SYNC header */
sch->out_idx = SYNC_HDR_BITS;
sch->in_sync = 1;
}
int subch_demux_init(struct subch_demux *dmx)
@ -126,8 +127,11 @@ int subch_demux_in(struct subch_demux *dmx, u_int8_t *data, int len)
/* once we have reached TRAU_FRAME_BITS, call
* the TRAU frame handler callback function */
if (sch->out_idx >= TRAU_FRAME_BITS) {
dmx->out_cb(dmx, c, sch->out_bitbuf,
if (sch->in_sync) {
dmx->out_cb(dmx, c, sch->out_bitbuf,
sch->out_idx, dmx->data);
sch->in_sync = 0;
}
sch->out_idx = 0;
}
}