Support raw mpegts streams from dvr patch by (wmglo at dent dot med dot uni-muenchen...
authorWolfram Gloger <wmglo@dent.med.uni-muenchen.de>
Fri, 26 Mar 2004 17:40:40 +0000 (17:40 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 26 Mar 2004 17:40:40 +0000 (17:40 +0000)
Originally committed as revision 2931 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffmpeg.c
libavformat/mpegts.c

index 7735d02..aaf688d 100644 (file)
--- 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();
             }
index f74916f..192507c 100644 (file)
@@ -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;