diff options
author | Marton Balint <cus@passwd.hu> | 2014-03-02 14:28:06 +0100 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2014-03-22 13:54:59 +0100 |
commit | 6bab55b84c8b5c6eec9593ad0bbedab8204f6e89 (patch) | |
tree | a1f12bb994d6505582f8b96bbce00818b712d6b2 /libavformat/mpegts.c | |
parent | 4acc86bcfbfcc40d329bff7c2c0b0d8043220520 (diff) | |
download | ffmpeg-6bab55b84c8b5c6eec9593ad0bbedab8204f6e89.tar.gz |
mpegts: factorize mpegts filter creator code
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r-- | libavformat/mpegts.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 4df1ddacf4..05ed940604 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -405,14 +405,10 @@ static void write_section_data(AVFormatContext *s, MpegTSFilter *tss1, } } -static MpegTSFilter *mpegts_open_section_filter(MpegTSContext *ts, - unsigned int pid, - SectionCallback *section_cb, - void *opaque, - int check_crc) +static MpegTSFilter *mpegts_open_filter(MpegTSContext *ts, unsigned int pid, + enum MpegTSFilterType type) { MpegTSFilter *filter; - MpegTSSectionFilter *sec; av_dlog(ts->stream, "Filter: pid=0x%x\n", pid); @@ -423,12 +419,26 @@ static MpegTSFilter *mpegts_open_section_filter(MpegTSContext *ts, return NULL; ts->pids[pid] = filter; - filter->type = MPEGTS_SECTION; + filter->type = type; filter->pid = pid; filter->es_id = -1; filter->last_cc = -1; filter->last_pcr= -1; + return filter; +} + +static MpegTSFilter *mpegts_open_section_filter(MpegTSContext *ts, + unsigned int pid, + SectionCallback *section_cb, + void *opaque, + int check_crc) +{ + MpegTSFilter *filter; + MpegTSSectionFilter *sec; + + if (!(filter = mpegts_open_filter(ts, pid, MPEGTS_SECTION))) + return NULL; sec = &filter->u.section_filter; sec->section_cb = section_cb; sec->opaque = opaque; @@ -448,18 +458,9 @@ static MpegTSFilter *mpegts_open_pes_filter(MpegTSContext *ts, unsigned int pid, MpegTSFilter *filter; MpegTSPESFilter *pes; - if (pid >= NB_PID_MAX || ts->pids[pid]) - return NULL; - filter = av_mallocz(sizeof(MpegTSFilter)); - if (!filter) + if (!(filter = mpegts_open_filter(ts, pid, MPEGTS_PES))) return NULL; - ts->pids[pid] = filter; - filter->type = MPEGTS_PES; - filter->pid = pid; - filter->es_id = -1; - filter->last_cc = -1; - pes = &filter->u.pes_filter; pes->pes_cb = pes_cb; pes->opaque = opaque; |