From patchwork Fri Jul 30 02:55:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chiu, Yung-Hsiang" X-Patchwork-Id: 29143 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp6330883ios; Thu, 29 Jul 2021 20:02:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6mGkBIXWZl0IZb0k3ue+jp3w8RikNTxbGihKGxGDueEJTxtXPAOthF7JLDCpoJ4ov+ekO X-Received: by 2002:a17:907:2e01:: with SMTP id ig1mr462411ejc.387.1627614151757; Thu, 29 Jul 2021 20:02:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627614151; cv=none; d=google.com; s=arc-20160816; b=axEk6grPrHW4fZa54dRiYJmKQfWiYATRryBJsoQYQKq7lMJ8ub7F4qFq0VuGTzXFvA FWIAKDW8QFzwR40K3eOjStREOHABMNNDzm6c+nNRyedc72eKz+FzcFWtleSMZSgszsQg xV/hlDrlTEc6XO1mybmEhkAoFKhXibSy95CBECBvpeBJt6e2ueXla00XNXABSoEbmZ25 uTIGo/Xhp/LoSZUmW/t13WanDFUmbD/j7V8s9kdVD0VGUJJoam6c8SDIg3I8FJMyp/jA PwWufPcPcIEDVqrsgtlmTx5BE4//btoktS6wDmzZwB4xWDhWfotdx0QwEXSlbcKKu6pD GHqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=Avb4oGtOq1d/RdP2+P8O/8NCBSx5OL8R1cSPNa7LN7A=; b=qdnJU2Rts47L0rz7OLBsstWRG7kMg9eWtzJHjXtprA58XXHUybGU2A0zgynOU29vvg 1rMFiTBPqqicitt++HUKVT6CaDPMKTmtk4rsEL7K3mV01bR5ggZxjUF180K6QUJ0HYlX Tlkp7zpTVKMxA6CH8pp5REP1tKl4KI5OEDTfJ/ZI7ik7sYh/kbqHMAM87djO8wL0LJ3X UL/pkCyhH4cX5C8wk0YQlVKCL+Y+eYulByOoXM0WpXKJPftcf9FsPQJPjV1oS9Kb2grs dFyECb/saW2cw3zoVRGN2JDxOgxI7W7UG/FPXbNciAZyizWmgFSi3ZGVjfTVMXEO58bh n+EA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Cjvj27OQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dg7si364535edb.365.2021.07.29.20.02.30; Thu, 29 Jul 2021 20:02:31 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Cjvj27OQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 89E3B689FB5; Fri, 30 Jul 2021 06:02:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C6DC689887 for ; Fri, 30 Jul 2021 06:02:21 +0300 (EEST) Received: by mail-ed1-f51.google.com with SMTP id ec13so10451557edb.0 for ; Thu, 29 Jul 2021 20:02:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Axg6SfHA0pSG2vHuKl15TLVhBh0sV2NwiXHBeIwg3vk=; b=Cjvj27OQi84HqoIZKcQBP+rvPx9bYgwlre+OHhyLzxbCSACqyZPCV2N+Qbq26O+S0l zcMpTNay/N+xqHeW24bvLWHeQOcoAPbNFQliZEbHxY3cJz8ynxLO1o9hZNvj8hRSWuKY +elxdqIR1kTgZwnOVKHH+PIpWLZ3SLsq7NHZ8VFxcx6y3AGGNkPD8qVfl/BEDQB+a6Uc CJXDsK4DrhJefMnrVrGCljmWvq3hM/URCeSGn5n9Z75HJ63RcGIgeXgcJRSK65FBvttj l9iL6q2Ra5WmsqFRwZc8pPel5A9NsZQn49yoYHbvUGkJAWItLWbPG4GEJ+2wMGO1gA0W 12rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Axg6SfHA0pSG2vHuKl15TLVhBh0sV2NwiXHBeIwg3vk=; b=ocQBzELkvwdN/OgYUyaJ3ilPGjjrSS9HckjOP5U821Vysq7Tz3yXvnUgJjvOuNH2pS XIbL4dTnf31RUPuEBxY9jaiHjPVzu6DfDrVp9Qw/76Ron6aJ2bblqh4RQZwqkzm1GAPs 5ZWMW1Kp7sdnKvWEwyH8b57DPqM2tnVeSfs1WtybsHWcP+nqbp9cdBAeW9dhUfXrZQxT M1hzugAeaMAh2UNiO03ELSf61VZLCo4j1MJBF0HFDoAClr/yuvo+KaxUkROwhvLbbwJs R6hCvRzH+QwAiKXqOzrFXhmEVvy1bNA6wDzAukL1AbKjC8Jv+WGEIMXJZ73Dkga4kxMu v/JA== X-Gm-Message-State: AOAM532ygvBxVX9JGjwbLmvFcuHRAGYzhr/XCfZnRTDhMqUSrSDDaXpO y4GBU0TXHNpw2NDkEDj+Gotf8GoRyi2mkTaKXd667btyUfk= X-Received: by 2002:a05:651c:158a:: with SMTP id h10mr240178ljq.2.1627613779043; Thu, 29 Jul 2021 19:56:19 -0700 (PDT) MIME-Version: 1.0 From: "Chiu, Yung-Hsiang" Date: Fri, 30 Jul 2021 10:55:52 +0800 Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] libavformat/rtsp.c: fix RTSP not setup the UDP stream in SDP X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: x4DCcRMFmU1J Hi, Our RTSP video server reply two streams in SDP are UDP and RTP/AVP/UDP. >> m=video 0 UDP 33 >> m=video 0 RTP/AVP/UDP 33 ffmpeg now setup twice with the same transport "RTP/AVP/UDP" The first time is >> SETUP rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 >> Transport: RTP/AVP/UDP;unicast;client_port=26972-26973 And the second time is >> SETUP rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 >> Transport: RTP/AVP/UDP;unicast;client_port=26974-26975 After reviewing the rtsp.c, I found the bug is caused by the acceptable string in sdp_parse_line() is "udp" only. The transport with "udp" or "UDP" should be acceptable in sdp_parse_line(). The full rtsp negotiation is shown below. OPTIONS rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 CSeq: 1 User-Agent: Lavf58.35.101 RTSP/1.0 200 OK Server: Orbit2x CSeq: 1 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER DESCRIBE rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 Accept: application/sdp CSeq: 2 User-Agent: Lavf58.35.101 RTSP/1.0 200 OK Server: Orbit2x CSeq: 2 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER Content-Type: application/sdp Content-Length: 179 v=0 o=- 60596 0 IN IP4 192.168.1.100 s=RTSP Session t=0 0 c=IN IP4 192.168.1.100 b=AS:7984.000 a=type:vod a=range:npt=0-5313 m=video 0 UDP 33 m=video 0 RTP/AVP/UDP 33 SETUP rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 Transport: RTP/AVP/UDP;unicast;client_port=26972-26973 CSeq: 3 User-Agent: Lavf58.35.101 RTSP/1.0 200 OK Server: Orbit2x CSeq: 3 Session: 728680355;timeout=60 Transport: RTP/AVP/UDP;unicast;destination=192.168.2.184;client_port=26972;source=192.168.1.100;server_port=10000-10001;ssrc=7b9507dd SETUP rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 Transport: RTP/AVP/UDP;unicast;client_port=26974-26975 CSeq: 4 User-Agent: Lavf58.35.101 Session: 728680355 RTSP/1.0 200 OK Server: Orbit2x CSeq: 4 Session: 728680355;timeout=60 Transport: RTP/AVP/UDP;unicast;destination=192.168.2.184;client_port=26974;source=192.168.1.100;server_port=10000-10001;ssrc=7b9507dd PLAY rtsp://192.168.1.100:554/MOV_000012353521.mpg RTSP/1.0 Range: npt=0.000- CSeq: 5 User-Agent: Lavf58.35.101 Session: 728680355 RTSP/1.0 200 OK Server: Orbit2x CSeq: 5 Session: 728680355 Scale: 1.00 Range: npt=0- Subject: [PATCH] libavformat/rtsp.c: fix RTSP not setup the UDP stream in SDP --- libavformat/rtsp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 9869e1b72e..dfa25ec6a4 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -509,7 +509,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, rtsp_st->sdp_port = atoi(buf1); get_word(buf1, sizeof(buf1), &p); /* protocol */ - if (!strcmp(buf1, "udp")) + if (!av_strcasecmp(buf1, "udp")) rt->transport = RTSP_TRANSPORT_RAW; else if (strstr(buf1, "/AVPF") || strstr(buf1, "/SAVPF")) rtsp_st->feedback = 1;