From 38c48be213b86baa04e64762622afefbba1afa70 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 2 Jun 2007 20:57:31 +0000 Subject: split mpeg2ts_raw mode into its own demuxer using such a flag is an incredibly dirty hack Originally committed as revision 9173 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mpegts.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'libavformat/mpegts.c') diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index df75189679..7e09021cc9 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -21,6 +21,7 @@ #include "avformat.h" #include "crc.h" #include "mpegts.h" +#include "allformats.h" //#define DEBUG_SI //#define DEBUG_SEEK @@ -89,8 +90,6 @@ struct MpegTSContext { int auto_guess; int set_service_ret; - /** force raw MPEG2 transport stream output, if possible */ - int mpeg2ts_raw; /** compute exact PCR for each transport stream packet */ int mpeg2ts_compute_pcr; @@ -1204,8 +1203,11 @@ static int mpegts_read_header(AVFormatContext *s, MpegTSService *service; if (ap) { - ts->mpeg2ts_raw = ap->mpeg2ts_raw; ts->mpeg2ts_compute_pcr = ap->mpeg2ts_compute_pcr; + if(ap->mpeg2ts_raw){ + av_log(s, AV_LOG_ERROR, "use mpegtsraw_demuxer!\n"); + return -1; + } } /* read the first 1024 bytes to get packet size */ @@ -1220,7 +1222,7 @@ static int mpegts_read_header(AVFormatContext *s, ts->auto_guess = 0; goto_auto_guess: - if (!ts->mpeg2ts_raw) { + if (s->iformat == &mpegts_demuxer) { /* normal demux */ if (!ts->auto_guess) { @@ -1396,12 +1398,8 @@ static int mpegts_read_packet(AVFormatContext *s, { MpegTSContext *ts = s->priv_data; - if (!ts->mpeg2ts_raw) { - ts->pkt = pkt; - return handle_packets(ts, 0); - } else { - return mpegts_raw_read_packet(s, pkt); - } + ts->pkt = pkt; + return handle_packets(ts, 0); } static int mpegts_read_close(AVFormatContext *s) @@ -1550,3 +1548,16 @@ AVInputFormat mpegts_demuxer = { mpegts_get_pcr, .flags = AVFMT_SHOW_IDS, }; + +AVInputFormat mpegtsraw_demuxer = { + "mpegtsraw", + "MPEG2 raw transport stream format", + sizeof(MpegTSContext), + mpegts_probe, + mpegts_read_header, + mpegts_raw_read_packet, + mpegts_read_close, + read_seek, + mpegts_get_pcr, + .flags = AVFMT_SHOW_IDS, +}; -- cgit v1.2.3