diff libmpdemux/demux_lavf.c @ 30456:0eee9d2e7a1d

Add support for FFmpeg's rtsp dummy URL-with-pseudo-demuxer scheme. ffmpeg://rtsp://... will play a rtsp stream via FFmpeg.
author reimar
date Wed, 03 Feb 2010 22:32:48 +0000
parents b636fc3f4960
children 04bdf393175b
line wrap: on
line diff
--- a/libmpdemux/demux_lavf.c	Wed Feb 03 21:12:23 2010 +0000
+++ b/libmpdemux/demux_lavf.c	Wed Feb 03 22:32:48 2010 +0000
@@ -155,13 +155,15 @@
     }
 
     probe_data_size = stream_read(demuxer->stream, priv->buffer, PROBE_BUF_SIZE);
-    if(probe_data_size <= 0)
+    if(probe_data_size < 0)
         return 0;
     avpd.filename= demuxer->stream->url;
+    if (!strncmp(avpd.filename, "ffmpeg://", 9))
+        avpd.filename += 9;
     avpd.buf= priv->buffer;
     avpd.buf_size= probe_data_size;
 
-    priv->avif= av_probe_input_format(&avpd, 1);
+    priv->avif= av_probe_input_format(&avpd, probe_data_size > 0);
     if(!priv->avif){
         mp_msg(MSGT_HEADER,MSGL_V,"LAVF_check: no clue about this gibberish!\n");
         return 0;
@@ -458,9 +460,12 @@
         }
     }
 
-    if(demuxer->stream->url)
+    if(demuxer->stream->url) {
+        if (!strncmp(demuxer->stream->url, "ffmpeg://rtsp:", 14))
+            strncpy(mp_filename, demuxer->stream->url + 9, sizeof(mp_filename)-3);
+        else
         strncpy(mp_filename + 3, demuxer->stream->url, sizeof(mp_filename)-3);
-    else
+    } else
         strncpy(mp_filename + 3, "foobar.dummy", sizeof(mp_filename)-3);
 
     priv->pb = av_alloc_put_byte(priv->buffer, BIO_BUFFER_SIZE, 0,