From patchwork Thu Jun 10 03:58:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 28191 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5e:c91a:0:0:0:0:0 with SMTP id z26csp153037iol; Wed, 9 Jun 2021 20:59:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy2y3346bUc64gGfAd+EzWGQB4YTbUkK1ntkXSoKydZy5ebMRIuf3rxkRu5ng/t6Gw76Fj3 X-Received: by 2002:a05:6402:48f:: with SMTP id k15mr2597078edv.262.1623297549964; Wed, 09 Jun 2021 20:59:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623297549; cv=none; d=google.com; s=arc-20160816; b=DkjUyUpRACVs47dT2BFCxwx7vqqXCJX+fJnMYR8uuALzC/EXQSJTV5yBGi47Lq6F3S K6fnZWKJmfo0/PblwxNVRY+IP3NC/C9EIgS3HieToPKjtBbPIpzVzIp5v0/SeVqWZtN0 7LUnrSHva80HzQacmOgkcNleT600JgmgGnx4CiUX29NLWEQmu89KsnE+Vup3tFMuVyUU NW+Ho0CpxBqMtw5e7GfU5c7Yuy+kkVPvm/ky9MyHtNoe7Zk4YEssKEa4q9iHHv156Td9 YqpubwxQ4tDReXg48abxIKHdcRHW6bV+lcG/GUDP6jxUZfAKnQn5CIRBVDaXTwnmgMW/ SHug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=gHpuXGdUBIDWskhnXpO5Qflc0PmbXNPCOoIg02icZX4=; b=jhBkaGD1dFzJwcb7q4FKUMovaT9cuYI75UUeP3LlCoKhqBmcDveESxGvu5gzKV9mND o27LXZz6ZuOXKeS54NsQRawB6xwBdXHyk/LOU/zDYwvwo4uHl8cbUn2q2NiiGD2UWmOX k1xK/vWxI216s6TP5+PhUjmvnowVHex+j+84evC4lQ55W92DEjANqY+iso8uAfm22qn9 kscfxvlM7piLt5XycsNnQch1b8oCaZ833S6+G6IOT/x3/dyJEqpO8M4MxfV/Mg9pohFD jcKbX8hqZgfFH1bDu88RKJP+BU7UOfZhy3X67KR8NFyI40d7d2uaJBE+ufPUdjM8S51b R41w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=T7w8fVhA; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c7si1427851ejc.177.2021.06.09.20.59.09; Wed, 09 Jun 2021 20:59:09 -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=@foxmail.com header.s=s201512 header.b=T7w8fVhA; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6D3996802B6; Thu, 10 Jun 2021 06:59:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-192.mail.qq.com (out203-205-221-192.mail.qq.com [203.205.221.192]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 32234687FC5 for ; Thu, 10 Jun 2021 06:58:54 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1623297529; bh=JHdFJBZAbXUNQ24XMaIzWBcHMKjAvtpG/xdvnBtzJ0o=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=T7w8fVhA4Xiop8dtMgWUUl8nSN2eMdDa6xw8nFV0a8BiiF3J6d93lSM743j22SmpC 847GhcrvpMl0BdzNErtNQ9pFApuWqkRMqLl8O8UhVnuHf72ZAKopaX0DMUAicfvz4I nOM5cG93FoGqYc0b1rukpwQAUChAGQn9Q6+MHjoI= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.59]) by newxmesmtplogicsvrszb6.qq.com (NewEsmtp) with SMTP id EB01BA16; Thu, 10 Jun 2021 11:58:48 +0800 X-QQ-mid: xmsmtpt1623297528tlvd4zl1c Message-ID: X-QQ-XMAILINFO: NcJQPrdKkKeKWt04EgI18fYyYlDoLyGF7aBTx+lIguMSi0RMD4wQWBPCIUXL1G KllLLh3xwdV+RQzDgEZyh/+OOGbnXEZHZcrvw2VEnxhUyq/HjJSN+Xq39XhDUx6IYvTbBjKLKXbo 9MXi2tse3MffvMWWcD9bKiMAluDWdcvoD7L5fOUdqw3a99QAAmSHWpKJ2dAB3B0iRYgW+AY822LG YLR5m1W7qkBbriU5f9cuYtxkYqT3zXjI69oV6UwgAt6PMxDkiPL+BFfeO7M+KnlBdkHBiiiJBkEC 92/QT1oKMIoD2MRnuxWakf/CjLRRBv8j+4GQOffHHzw/1vZ9I+Wn6MYXl1k+DYR8mrJkwN+TNxhE +CEvMDdTSvASQ8dXlmyEpVZMKe293m3Uv4foCaT3Pt6fxOqSr6XhEiYJwV6cktI6qjIRHWpiN/+k oszyUoTxRqDtrk/5AKCC9eZCCqtEgwzHItrnoR8COgBFmawDkIZ+v3dGsWr4DhR1r5uGHSchz6mI W2cjl2zAYoIjohYb0HJvZNu8aj0blhUNYF4J+Q0UceFHX5YvG9/mPMnwkbb8VNxBf3GiFWFwVfRa GgGtwMF1AyCrBgnOkStrx1ygY2efsJWrS5Kg0K760t3qmgJfmUfGeDNeWpVwh9huxkjvqvDjrdlv Jjn/FO0Foc2q9I5B3DLvMTjviUEIiqR9iT7N8Txv5GTirb5+ElerlKzl3MqKFYLr84aoesrXNBgU 8RvziWzZa2JlIohVPqpDvISmalCMc1XI5s8OEqFEMxY10MqIEF7YCvOCIRyyBJAgI7ZppNRhQdB4 NxuuA/5EGSzARSR8MNgYITs+lnVZ7gEh+pMNWPXerLgcA0henmoAQ4 From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Jun 2021 11:58:43 +0800 X-OQ-MSGID: <20210610035843.59742-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3] avformat/libsrt: log streamid in listener mode 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 Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: h2Vr2Ko4IWVo It's useful for test client which pass streamid to ffmpeg/ffplay. For example, use ffmpeg to test streamid support in VLC: ./ffmpeg -v info -re -i foo.mp4 -c copy -f mpegts -mode listener srt://127.0.0.1:9000 ./vlc srt://127.0.0.1:9000?streamid=foobar --- v3: Don't zero out streamid. Fix streamid array size (512 -> 513). v2: Avoid forward declaration. Use AV_LOG_VERBOSE. libavformat/libsrt.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index 8dee6aa3f3..a4285ca294 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -156,6 +156,15 @@ static int libsrt_neterrno(URLContext *h) return os_errno ? AVERROR(os_errno) : AVERROR_UNKNOWN; } +static int libsrt_getsockopt(URLContext *h, int fd, SRT_SOCKOPT optname, const char * optnamestr, void * optval, int * optlen) +{ + if (srt_getsockopt(fd, 0, optname, optval, optlen) < 0) { + av_log(h, AV_LOG_ERROR, "failed to get option %s on socket: %s\n", optnamestr, srt_getlasterror_str()); + return AVERROR(EIO); + } + return 0; +} + static int libsrt_socket_nonblock(int socket, int enable) { int ret, blocking = enable ? 0 : 1; @@ -227,6 +236,9 @@ static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t { int ret; int reuse = 1; + /* Max streamid length plus an extra space for the terminating null character */ + char streamid[513]; + int streamid_len = sizeof(streamid); if (srt_setsockopt(fd, SOL_SOCKET, SRTO_REUSEADDR, &reuse, sizeof(reuse))) { av_log(h, AV_LOG_WARNING, "setsockopt(SRTO_REUSEADDR) failed\n"); } @@ -245,6 +257,9 @@ static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t return libsrt_neterrno(h); if (libsrt_socket_nonblock(ret, 1) < 0) av_log(h, AV_LOG_DEBUG, "libsrt_socket_nonblock failed\n"); + if (!libsrt_getsockopt(h, ret, SRTO_STREAMID, "SRTO_STREAMID", streamid, &streamid_len)) + /* Note: returned streamid_len doesn't count the terminating null character */ + av_log(h, AV_LOG_VERBOSE, "accept streamid [%s], length %d\n", streamid, streamid_len); return ret; } @@ -279,15 +294,6 @@ static int libsrt_setsockopt(URLContext *h, int fd, SRT_SOCKOPT optname, const c return 0; } -static int libsrt_getsockopt(URLContext *h, int fd, SRT_SOCKOPT optname, const char * optnamestr, void * optval, int * optlen) -{ - if (srt_getsockopt(fd, 0, optname, optval, optlen) < 0) { - av_log(h, AV_LOG_ERROR, "failed to get option %s on socket: %s\n", optnamestr, srt_getlasterror_str()); - return AVERROR(EIO); - } - return 0; -} - /* - The "POST" options can be altered any time on a connected socket. They MAY have also some meaning when set prior to connecting; such option is SRTO_RCVSYN, which makes connect/accept call asynchronous.