--- libmpdemux/demux_ts.c 2006-05-28 14:58:46.249959000 -0700 +++ libmpdemux/demux_ts.c 2006-05-28 15:02:29.539913750 -0700 @@ -1318,10 +1318,20 @@ } else if ((p[0] & 0xF8) == 0x80) { + int l, sub = 0; mp_msg(MSGT_DEMUX, MSGL_DBG2, "A52 WITH HEADER\n"); - es->start = p+4; - es->size = packet_len - 4; - es->type = AUDIO_A52; + es->type = PES_PRIVATE1; + for(l = 0; l < packet_len - 1; l++) + { + if(p[l] == 0x0B && p[l+1] == 0x77) + { + es->type = AUDIO_A52; + sub = (l == 4) ? 4 : 0; + break; + } + } + es->start = p + sub; + es->size = packet_len - sub; es->payload_size -= packet_len; return 1;