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

Zhao Zhili wantlamy at gmail.com
Fri Jan 8 02:15:20 CET 2016


Sorry, I work hard to cross the Great Fire Wall to send this patch and
cannot send it as plaintext.
Now send it as attachment.

On Fri, Jan 8, 2016 at 1:52 AM, Michael Niedermayer <michael at niedermayer.cc>
wrote:

> 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.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-rtp-Fix-play-multiple-multicast-streams-with-the-sam.patch
Type: text/x-patch
Size: 2949 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160108/2b43200e/attachment.bin>


More information about the ffmpeg-devel mailing list