From 6fb316d5634252e259b3c95dcc40de533173cb1c Mon Sep 17 00:00:00 2001
From: Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
Date: Fri, 26 Mar 2004 17:40:40 +0000
Subject: [PATCH] Support raw mpegts streams from dvr patch by (wmglo at dent
 dot med dot uni-muenchen dot de)

Originally committed as revision 2931 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 ffmpeg.c             |  2 ++
 libavformat/mpegts.c | 17 +++++++++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index 7735d02c9a2..aaf688d81f9 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2344,6 +2344,8 @@ static void check_audio_video_inputs(int *has_video_ptr, int *has_audio_ptr)
             case CODEC_TYPE_VIDEO:
                 has_video = 1;
                 break;
+            case CODEC_TYPE_DATA:
+                break;
             default:
                 av_abort();
             }
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index f74916f9b77..192507c44f0 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -378,7 +378,7 @@ static void pmt_cb(void *opaque, const uint8_t *section, int section_len)
     
 #ifdef DEBUG_SI
     printf("PMT:\n");
-    av_hex_dump((uint8_t *)section, section_len);
+    av_hex_dump(stdout, (uint8_t *)section, section_len);
 #endif
     p_end = section + section_len - 4;
     p = section;
@@ -453,7 +453,7 @@ static void pat_cb(void *opaque, const uint8_t *section, int section_len)
 
 #ifdef DEBUG_SI
     printf("PAT:\n");
-    av_hex_dump((uint8_t *)section, section_len);
+    av_hex_dump(stdout, (uint8_t *)section, section_len);
 #endif
     p_end = section + section_len - 4;
     p = section;
@@ -502,7 +502,7 @@ static void pat_scan_cb(void *opaque, const uint8_t *section, int section_len)
 
 #ifdef DEBUG_SI
     printf("PAT:\n");
-    av_hex_dump((uint8_t *)section, section_len);
+    av_hex_dump(stdout, (uint8_t *)section, section_len);
 #endif
     p_end = section + section_len - 4;
     p = section;
@@ -563,7 +563,7 @@ static void sdt_cb(void *opaque, const uint8_t *section, int section_len)
 
 #ifdef DEBUG_SI
     printf("SDT:\n");
-    av_hex_dump((uint8_t *)section, section_len);
+    av_hex_dump(stdout, (uint8_t *)section, section_len);
 #endif
 
     p_end = section + section_len - 4;
@@ -1126,8 +1126,12 @@ static int mpegts_read_header(AVFormatContext *s,
                 handle_packets(ts, MAX_SCAN_PACKETS);
             }
             
-            if (ts->nb_services <= 0)
-                return -1;
+            if (ts->nb_services <= 0) {
+		/* raw transport stream */
+		ts->auto_guess = 1;
+		s->ctx_flags |= AVFMTCTX_NOHEADER;
+		goto do_pcr;
+	    }
             
             /* tune to first service found */
             service = ts->services[0];
@@ -1165,6 +1169,7 @@ static int mpegts_read_header(AVFormatContext *s,
         s->pts_num = 1;
         s->pts_den = 27000000;
         
+    do_pcr:
         st = av_new_stream(s, 0);
         if (!st)
             goto fail;
-- 
GitLab