# HG changeset patch # User nicodvb # Date 1100961219 0 # Node ID a3a16a50b31424f7b65e2350100a9c7861d022b2 # Parent 9e331a5299b2f1f46dd6a16cecf9c038a2fb1c9f added support for 192 packet size, remove junk data after 188 bytes. Patch by Marcus Metzler (mocm@mocm.de) diff -r 9e331a5299b2 -r a3a16a50b314 libmpdemux/demux_ts.c --- a/libmpdemux/demux_ts.c Sat Nov 20 10:57:39 2004 +0000 +++ b/libmpdemux/demux_ts.c Sat Nov 20 14:33:39 2004 +0000 @@ -37,6 +37,7 @@ #include "bswap.h" #include "../unrarlib.h" +#define TS_PH_PACKET_SIZE 192 #define TS_FEC_PACKET_SIZE 204 #define TS_PACKET_SIZE 188 #define NB_PID_MAX 8192 @@ -173,10 +174,20 @@ try_fec: for(i=0; its.packet_size; + junk = priv->ts.packet_size - TS_PACKET_SIZE; + buf_size = priv->ts.packet_size - junk; if(stream_eof(stream)) { @@ -1742,7 +1755,7 @@ if(((pid > 1) && (pid < 16)) || (pid == 8191)) //invalid pid { - stream_skip(stream, buf_size-1); + stream_skip(stream, buf_size-1+junk); continue; } @@ -1759,7 +1772,7 @@ afc = (packet[3] >> 4) & 3; if(! (afc % 2)) //no payload in this TS packet { - stream_skip(stream, buf_size-1); + stream_skip(stream, buf_size-1+junk); continue; } @@ -1790,7 +1803,7 @@ if(priv->keep_broken == 0) { - stream_skip(stream, buf_size-1); + stream_skip(stream, buf_size-1+junk); continue; } @@ -1808,6 +1821,7 @@ if(pid == 0) { stream_read(stream,&packet[base], buf_size); + stream_skip(stream, junk); parse_pat(priv, is_start, &packet[base], buf_size); continue; } @@ -1819,6 +1833,7 @@ if(pid != demuxer->video->id && pid != demuxer->audio->id && pid != demuxer->sub->id) { stream_read(stream,&packet[base], buf_size); + stream_skip(stream, junk); parse_pmt(priv, progid, pid, is_start, &packet[base], buf_size); continue; } @@ -1908,13 +1923,13 @@ } else { - stream_skip(stream, buf_size); + stream_skip(stream, buf_size+junk); continue; } } else { - stream_skip(stream, buf_size); + stream_skip(stream, buf_size+junk); continue; } @@ -1948,6 +1963,7 @@ p = &packet[base]; stream_read(stream, p, buf_size); + stream_skip(stream, junk); len = pes_parse2(p, buf_size, es, pid_type); es->pid = tss->pid; @@ -2042,7 +2058,7 @@ if(tss->type == UNKNOWN) { - stream_skip(stream, buf_size); + stream_skip(stream, buf_size+junk); if(probe) return 0; else @@ -2070,7 +2086,7 @@ } else { - stream_skip(stream, buf_size); + stream_skip(stream, buf_size+junk); continue; } } @@ -2094,6 +2110,7 @@ { stream_skip(stream, buf_size - sz); } + stream_skip(stream, junk); if(is_audio) { @@ -2108,6 +2125,7 @@ { stream_read(stream, es->start, sz); if(buf_size - sz) stream_skip(stream, buf_size-sz); + stream_skip(stream, junk); if(es->size) return es->size;