switch(bits) {
case 0x5a5a5a5a: {
int ext_base_ch = s->prim_channels;
- int ext_amode;
+ int ext_amode, xch_fsize;
+
+ /* validate sync word using XCHFSIZE field */
+ xch_fsize = show_bits(&s->gb, 10);
+ if((s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 + xch_fsize) &&
+ (s->frame_size != (get_bits_count(&s->gb) >> 3) - 4 + xch_fsize + 1))
+ continue;
/* skip length-to-end-of-frame field for the moment */
skip_bits(&s->gb, 10);