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

Zhao Zhili wantlamy at gmail.com
Wed Jan 13 02:11:13 CET 2016


pingļ¼Ÿ

On Fri, Jan 8, 2016 at 9:15 AM, Zhao Zhili <wantlamy at gmail.com> wrote:

> 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
>>
>>
>


More information about the ffmpeg-devel mailing list