Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-02-05 02:41:53 +0400
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-03-10 12:55:39 +0400
commit0ec869527c13fce6755bc6f6b07cb50138936449 (patch)
treef68ca5a8ac64b67b5c6d9f60d6594fc59b0ecdc7 /libavformat
parent0b198e38c52ca716def04433876b8438b4bc218e (diff)
mpegts: clear avprograms only for removed programs
Fixes Ticket2186 Requested-by: carl Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 806a66fd08a395486e763fb10588c5fd02e8d54e)
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mpegts.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 8b92bc421e..32aa51f97e 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -208,9 +208,6 @@ static void clear_program(MpegTSContext *ts, unsigned int programid)
static void clear_programs(MpegTSContext *ts)
{
- int i;
- for(i=0; i<ts->nb_prg; i++)
- clear_avprogram(ts, ts->prg[i].id);
av_freep(&ts->prg);
ts->nb_prg=0;
}
@@ -1636,6 +1633,17 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
add_pid_to_pmt(ts, sid, pmt_pid);
}
}
+
+ if (sid < 0) {
+ int i,j;
+ for (j=0; j<ts->stream->nb_programs; j++) {
+ for (i=0; i<ts->nb_prg; i++)
+ if (ts->prg[i].id == ts->stream->programs[j]->id)
+ break;
+ if (i==ts->nb_prg)
+ clear_avprogram(ts, ts->stream->programs[j]->id);
+ }
+ }
}
static void sdt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len)