avformat/mpegts: Factorize version checking code out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							parent
							
								
									ccb8f67499
								
							
						
					
					
						commit
						4e8d01f20c
					
				@ -580,6 +580,16 @@ typedef struct SectionHeader {
 | 
				
			|||||||
    uint8_t last_sec_num;
 | 
					    uint8_t last_sec_num;
 | 
				
			||||||
} SectionHeader;
 | 
					} 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)
 | 
					static inline int get8(const uint8_t **pp, const uint8_t *p_end)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const uint8_t *p;
 | 
					    const uint8_t *p;
 | 
				
			||||||
@ -1469,9 +1479,8 @@ static void m4sl_cb(MpegTSFilter *filter, const uint8_t *section,
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if (h.tid != M4OD_TID)
 | 
					    if (h.tid != M4OD_TID)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if (h.version == tssf->last_ver)
 | 
					    if (skip_identical(&h, tssf))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    tssf->last_ver = h.version;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mp4_read_od(s, p, (unsigned) (p_end - p), mp4_descr, &mp4_descr_count,
 | 
					    mp4_read_od(s, p, (unsigned) (p_end - p), mp4_descr, &mp4_descr_count,
 | 
				
			||||||
                MAX_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;
 | 
					    p = section;
 | 
				
			||||||
    if (parse_section_header(h, &p, p_end) < 0)
 | 
					    if (parse_section_header(h, &p, p_end) < 0)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if (h->version == tssf->last_ver)
 | 
					    if (skip_identical(h, tssf))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    tssf->last_ver = h->version;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    av_log(ts->stream, AV_LOG_TRACE, "sid=0x%x sec_num=%d/%d version=%d\n",
 | 
					    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);
 | 
					            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)
 | 
					    if (ts->skip_changes)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (h->version == tssf->last_ver)
 | 
					    if (skip_identical(h, tssf))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    tssf->last_ver = h->version;
 | 
					 | 
				
			||||||
    ts->stream->ts_id = h->id;
 | 
					    ts->stream->ts_id = h->id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    clear_programs(ts);
 | 
					    clear_programs(ts);
 | 
				
			||||||
@ -2061,9 +2068,8 @@ static void sdt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if (ts->skip_changes)
 | 
					    if (ts->skip_changes)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if (h->version == tssf->last_ver)
 | 
					    if (skip_identical(h, tssf))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    tssf->last_ver = h->version;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    onid = get16(&p, p_end);
 | 
					    onid = get16(&p, p_end);
 | 
				
			||||||
    if (onid < 0)
 | 
					    if (onid < 0)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user