On Tue, 3 Apr 2012 00:40:21 +0200, Samuel Pitoiset <[email protected]> wrote: > Sometimes the URL parser cannot determine the app name automatically, > so it must be given explicitly using this option. > --- > libavformat/rtmpproto.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c > index a6917ce..e6b2dd2 100644 > --- a/libavformat/rtmpproto.c > +++ b/libavformat/rtmpproto.c > @@ -805,7 +805,7 @@ static int rtmp_close(URLContext *h) > static int rtmp_open(URLContext *s, const char *uri, int flags) > { > RTMPContext *rt = s->priv_data; > - char proto[8], hostname[256], path[1024], *fname; > + char proto[8], hostname[256], path[2048], *fname, *params, *param; > uint8_t buf[2048]; > int port; > int ret; > @@ -831,6 +831,16 @@ static int rtmp_open(URLContext *s, const char *uri, int > flags) > > rt->chunk_size = 128; > rt->state = STATE_HANDSHAKED; > + > + // Extract parameters from path. > + params = strchr(path, ' '); > + if (params) { > + while (*params == ' ') { > + *params = 0; > + ++params; > + } > + } > + > //extract "app" part from path > if (!strncmp(path, "/ondemand/", 10)) { > fname = path + 10; > @@ -861,6 +871,17 @@ static int rtmp_open(URLContext *s, const char *uri, int > flags) > } > strncat(rt->playpath, fname, sizeof(rt->playpath) - 5); > > + // Parse parameters. > + param = strtok(params, " "); > + while (param != NULL) { > + if (!strncmp(param, "app=", 4)) { > + // Override the name of application. > + param += 4; > + av_strlcpy(rt->app, param, strlen(param) + 1); > + } > + param = strtok(NULL, " "); > + } > + > rt->client_report_size = 1048576; > rt->bytes_read = 0; > rt->last_bytes_read = 0; > -- > 1.7.9.4 >
Please no more options in URL. We have protocol private AVOptions for that. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
