On Sun, 08. Mar 12:25, Marton Balint wrote: > > > Subject: [FFmpeg-devel] [PATCH v2 1/2] avformat: Add AMQP version 0-9-1 > > protocol support > > > > From: Andriy Gelman <andriy.gel...@gmail.com> > > > > Supports connecting to a RabbitMQ broker via AMQP version 0-9-1. > > > > Signed-off-by: Andriy Gelman <andriy.gel...@gmail.com> > > --- > > > > Changes in v2: > > - Addressed comments from Marton > > - Updated documentation > > > > Compilation notes: > > - Requires librabbitmq-dev package (on ubuntu). > > - The pkg-config libprabbitmq.pc has a corrupt entry. > > **update: fixed on the github master branch** > > The line "Libs.private: rt; -lpthread" should be changed to > > "Libs.private: -lrt -pthread". > > - Compile FFmpeg with --enable-librabbitmq > > > > [...] > > > +@item connection_timeout > > +The timeout in microseconds during the initial connection to the broker. > > The > > In *seconds* (because it is an AV_OPT_TYPE_DURATION) > > > +default value is rw_timeout, or 5000000 microseconds if rw_timeout is not > > set. > > 5 seconds > > [...] > > > +static const AVOption options[] = { > > + { "pkt_size", "Maximum send/read packet size", OFFSET(pkt_size), > > AV_OPT_TYPE_INT, { .i64 = 131072 }, 4096, INT_MAX, .flags = D | E }, > > + { "exchange", "Exchange to send/read packets", OFFSET(exchange), > > AV_OPT_TYPE_STRING, { .str = "amq.direct" }, 0, 0, .flags = D | E }, > > + { "routing_key", "Key to filter streams", OFFSET(routing_key), > > AV_OPT_TYPE_STRING, { .str = "amqp" }, 0, 0, .flags = D | E }, > > + { "connection_timeout", "Initial connection timeout", > > OFFSET(connection_timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, > > INT_MAX, .flags = D | E}, > > INT64_MAX can be the maximum. > > > + { NULL } > > +}; > > + > > +static int amqp_proto_open(URLContext *h, const char *uri, int flags) > > +{ > > + int ret, server_msg; > > + char hostname[STR_LEN], credentials[STR_LEN]; > > + char *credentials_decoded; > > + int port; > > + const char *user, *password = NULL; > > + char *p; > > + amqp_rpc_reply_t broker_reply; > > + struct timeval tval = { 0 }; > > + > > + AMQPContext *s = h->priv_data; > > + > > + h->is_streamed = 1; > > + h->max_packet_size = s->pkt_size; > > + > > + av_url_split(NULL, 0, credentials, sizeof(credentials), > > + hostname, sizeof(hostname), &port, NULL, 0, uri); > > + > > + if (port < 0) > > + port = 5672; > > + > > + if (hostname[0] == '\0' || port <= 0 || port > 65535 ) { > > + av_log(h, AV_LOG_ERROR, "Invalid hostname/port\n"); > > + return AVERROR(EINVAL); > > + } > > + > > + credentials_decoded = ff_urldecode(credentials, 0);
> > This is not entirely correct, becase the username may contain ':' > characters... So you should split first and urldecode the splitted > components... > Thanks for reviewing and catching these two. -- Andriy _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".