[FFmpeg-cvslog] r9173 - trunk/libavformat/mpegts.c

michael subversion
Sat Jun 2 22:57:32 CEST 2007


Author: michael
Date: Sat Jun  2 22:57:31 2007
New Revision: 9173

Log:
split mpeg2ts_raw mode into its own demuxer using such a flag is an incredibly dirty hack


Modified:
   trunk/libavformat/mpegts.c

Modified: trunk/libavformat/mpegts.c
==============================================================================
--- trunk/libavformat/mpegts.c	(original)
+++ trunk/libavformat/mpegts.c	Sat Jun  2 22:57:31 2007
@@ -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(AVFormatCo
     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(AVFormatCo
     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(AVFormatCo
 {
     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,
+};




More information about the ffmpeg-cvslog mailing list