summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Farnsworth <simon.farnsworth@onelan.co.uk>2008-06-16 17:33:48 +0100
committerSimon Farnsworth <simon.farnsworth@onelan.co.uk>2008-06-16 17:33:48 +0100
commitfce4e656ac01a7b0822f1efbae85cf6e50e8999e (patch)
treebd3046f7faf5660c33387bf4a0d9f6ff0eac8a25
parent6385f646569ba76497152424ddc22e1cfb299f5a (diff)
downloadxine-lib-fce4e656ac01a7b0822f1efbae85cf6e50e8999e.tar.gz
xine-lib-fce4e656ac01a7b0822f1efbae85cf6e50e8999e.tar.bz2
demux_ts: Always replace PIDs when we parse a PMT
demux_ts currently assumes that PIDs for a service never change - BBC THREE (amongst others) breaks this assumption. A PMT shouldn't change unless PIDs change, so always reacquire PIDs whenever we parse a PMT; this should work fine in the case when the PIDs do not change, and pick up the new PIDs whenever a change happens --HG-- extra : transplant_source : e%AB%EB%E1%CF%D8%1C%15%5E%DE%09%E4%3Dd%AB%E3f%FD%E5%9E
-rw-r--r--src/demuxers/demux_ts.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 80ad0acb1..67b2fbf2a 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -1239,6 +1239,15 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num
}
}
+ /*
+ * Forget the current video, audio and subtitle PIDs; if the PMT has not
+ * changed, we'll pick them up again when we parse this PMT, while if the
+ * PMT has changed (e.g. an IPTV streamer that's just changed its source),
+ * we'll get new PIDs that we should follow.
+ */
+ this->audio_tracks_count = 0;
+ this->videoPid = INVALID_PID;
+ this->spu_pid = INVALID_PID;
/*
* ES definitions start here...we are going to learn upto one video