[SCM] libav/experimental: rtmpproto: Support alternative slist parameter in rtmp URLs

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Aug 10 16:03:05 UTC 2014


The following commit has been merged in the experimental branch:
commit 7ce3bd9614717e545af8fb8455032c807e389b78
Author: Uwe L. Korn <uwelk at xhochy.com>
Date:   Mon May 5 21:47:05 2014 +0100

    rtmpproto: Support alternative slist parameter in rtmp URLs
    
    Support the URL scheme where the playpath is in an RTMP URL is
    passed as the slist argument and the app is given infront of the
    query part of the URL:
    
    rtmp://host[:port]/[app]?slist=[playpath]
    
    (other arguments in the query part are stripped as they are not used)
    
    Signed-off-by: Martin Storsjö <martin at martin.st>

diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 8d8aabc..2962737 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -2382,7 +2382,7 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
 {
     RTMPContext *rt = s->priv_data;
     char proto[8], hostname[256], path[1024], auth[100], *fname;
-    char *old_app;
+    char *old_app, *qmark, fname_buffer[1024];
     uint8_t buf[2048];
     int port;
     AVDictionary *opts = NULL;
@@ -2480,7 +2480,19 @@ reconnect:
     }
 
     //extract "app" part from path
-    if (!strncmp(path, "/ondemand/", 10)) {
+    qmark = strchr(path, '?');
+    if (qmark && strstr(qmark, "slist=")) {
+        char* amp;
+        // After slist we have the playpath, before the params, the app
+        av_strlcpy(rt->app, path + 1, qmark - path);
+        fname = strstr(path, "slist=") + 6;
+        // Strip any further query parameters from fname
+        amp = strchr(fname, '&');
+        if (amp) {
+            av_strlcpy(fname_buffer, fname, amp - fname + 1);
+            fname = fname_buffer;
+        }
+    } else if (!strncmp(path, "/ondemand/", 10)) {
         fname = path + 10;
         memcpy(rt->app, "ondemand", 9);
     } else {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list