diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-04-29 22:24:09 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-05-01 01:29:43 +0200 |
commit | 4e8d01f20ce82b49f47c704a461c5d30866affaf (patch) | |
tree | 24159c19adff7795d185d1a8f4a9465b27ba6ecd /libavformat | |
parent | ccb8f674995ded871ac725833b5efefce0ad63de (diff) | |
download | ffmpeg-4e8d01f20ce82b49f47c704a461c5d30866affaf.tar.gz |
avformat/mpegts: Factorize version checking code out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mpegts.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 0e5c2ba00e..d707cc31ad 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -580,6 +580,16 @@ typedef struct SectionHeader { uint8_t last_sec_num; } SectionHeader; +static int skip_identical(const SectionHeader *h, MpegTSSectionFilter *tssf) +{ + if (h->version == tssf->last_ver) + return 1; + + tssf->last_ver = h->version; + + return 0; +} + static inline int get8(const uint8_t **pp, const uint8_t *p_end) { const uint8_t *p; @@ -1469,9 +1479,8 @@ static void m4sl_cb(MpegTSFilter *filter, const uint8_t *section, return; if (h.tid != M4OD_TID) return; - if (h.version == tssf->last_ver) + if (skip_identical(&h, tssf)) return; - tssf->last_ver = h.version; mp4_read_od(s, p, (unsigned) (p_end - p), mp4_descr, &mp4_descr_count, MAX_MP4_DESCR_COUNT); @@ -1816,9 +1825,8 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len p = section; if (parse_section_header(h, &p, p_end) < 0) return; - if (h->version == tssf->last_ver) + if (skip_identical(h, tssf)) return; - tssf->last_ver = h->version; av_log(ts->stream, AV_LOG_TRACE, "sid=0x%x sec_num=%d/%d version=%d\n", h->id, h->sec_num, h->last_sec_num, h->version); @@ -1986,9 +1994,8 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len if (ts->skip_changes) return; - if (h->version == tssf->last_ver) + if (skip_identical(h, tssf)) return; - tssf->last_ver = h->version; ts->stream->ts_id = h->id; clear_programs(ts); @@ -2061,9 +2068,8 @@ static void sdt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len return; if (ts->skip_changes) return; - if (h->version == tssf->last_ver) + if (skip_identical(h, tssf)) return; - tssf->last_ver = h->version; onid = get16(&p, p_end); if (onid < 0) |