[FFmpeg-devel] [PATCH] rtp: Fix play multiple multicast streams with the same port

Michael Niedermayer michael at niedermayer.cc
Thu Jan 7 18:52:33 CET 2016


On Thu, Jan 07, 2016 at 06:58:49PM +0800, Zhao Zhili wrote:
> I made a mistake that rtp and rtcp cannot be the same port. A new patch is
> appended.
> 
> From: Zhao Zhili <wantlamy at gmail.com>
> Date: Thu, 7 Jan 2016 18:55:50 +0800
> Subject: [PATCH] rtp: Fix play multiple multicast streams with the same port
> 
> We cannot play multiple multicast streams with the same port at the
> same time. This is because both rtp and rtcp port are opened in
> read-write mode, so they will not bind to the multicast address. Try
> to make rtp port as read-only by default to solve this bug.
> 
> Signed-off-by: Zhao Zhili <wantlamy at gmail.com>
> ---
>  libavformat/rtpproto.c | 6 ++++--
>  libavformat/rtsp.c     | 2 +-
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c
> index e0aa23e..04a40ea 100644
> --- a/libavformat/rtpproto.c
> +++ b/libavformat/rtpproto.c
> @@ -323,6 +323,7 @@ static int rtp_open(URLContext *h, const char *uri, int
> flags)
>      char path[1024];
>      const char *p;
>      int i, max_retry_count = 3;
> +    int rtcpflags;
> 
>      av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
>                   path, sizeof(path), uri);
> @@ -387,12 +388,13 @@ static int rtp_open(URLContext *h, const char *uri,
> int flags)
>              s->local_rtpport = -1;
>              continue;
>          }
> +        rtcpflags = flags | AVIO_FLAG_WRITE;
>          if (s->local_rtcpport < 0) {
>              s->local_rtcpport = s->local_rtpport + 1;
>              build_udp_url(s, buf, sizeof(buf),
>                            hostname, s->rtcp_port, s->local_rtcpport,
>                            sources, block);
> -            if (ffurl_open(&s->rtcp_hd, buf, flags,
> &h->interrupt_callback, NULL) < 0) {
> +            if (ffurl_open(&s->rtcp_hd, buf, rtcpflags,
> &h->interrupt_callback, NULL) < 0) {

the patch is corrupted by linebreaks

attaching it usually fixes that

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Old school: Use the lowest level language in which you can solve the problem
            conveniently.
New school: Use the highest level language in which the latest supercomputer
            can solve the problem without the user falling asleep waiting.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160107/b7125a2b/attachment.sig>


More information about the ffmpeg-devel mailing list