From patchwork Fri Jun 4 07:22:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 28083 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp833119iof; Fri, 4 Jun 2021 00:22:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxFE3WaA6ckFbbzkMwWloicoVeU3xgMtgdVsisOId6n8a5rBXb1Sjn+suVrQe1KjaZZoSna X-Received: by 2002:a17:907:d92:: with SMTP id go18mr2990279ejc.317.1622791378871; Fri, 04 Jun 2021 00:22:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622791378; cv=none; d=google.com; s=arc-20160816; b=SuqwsOYPB9Q9T69+XEdy+zIwsRyBD7OnH3UsLPMU35WW+/LUMIRoKLFeTD7/Es6Jot +FNHepxQb6HB+R9X7zqYwztW0u7Hm3+fhAnU6q2YG4DvA/cr0ii3dYJvs9OW/jJKMYd3 1FXYPMaN/4AVFNkUE5gapoyHJj5lJa7TgVtEzSM0kC1rGGUpU0KRVLoy1OQYya/oB4xb sHpL4xget3hpTWaw3F8f2Lmd0T1hRXt1rALIHt/6uyJBwxxUVGQUuQrpnUjz/XBjmYOp Ih/CKGbUtw2G5U4n3H5WlkROJmqflWaSwuVuGePNcZk/NRSnyq0/CMYf7oEM4nZZ0u5l Mnkg== 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=BG9/cG9M9S2Cjx0A/cdqpHw9SOOV8XA1qXONFsdn/g0=; b=thewftSkWnvLX8zXUGmk60p52EIq4vcf3XFBa8n2KkUtMTLpjJeS2g+ESzHIoNDoly kjzzY5q13xC82uA91ljxKTyXrcOBosvcO8Z4zUxnZINii3muoQLSbsR7o2ETf7jsdiGg pUo9Fh/7SFyRH3ODmBLxTO0Nue0v377um4DWn9ucPm3MgZoArKpT0JJTVsrq7Dn/WE4Y x1vKnZGd7J2cPveY2tNQFjAt2cdPMOfrOXNqi2qQgrdeN6mwbfh+aWcfgsZHlXoY+jgV YTLudsf+SKyDWb2vnE4S9kXE2H8DVHU3amzImi53oIIWOadFFxvaf0SDkHVlAreLcHmz 7+7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=cCmwuC3l; 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 i26si4210556ejo.88.2021.06.04.00.22.58; Fri, 04 Jun 2021 00:22:58 -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=cCmwuC3l; 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 4CB5368A34D; Fri, 4 Jun 2021 10:22:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-84.mail.qq.com (unknown [203.205.251.84]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BB76768A154 for ; Fri, 4 Jun 2021 10:22:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1622791352; bh=wwkx/y2MUIk9j9qKaFqJINkhK6CFRu71T9M72bhTUnE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cCmwuC3l67+0xhgpk2i36cIgYNK11/zKjJRSVrpGEz4eIo1jP06COhpEHRvbAuQDG xY5VZheGYZN/PNoRyYYTDUXw3nBVC0G9KnQNJ1ZI/z9z8hwOl7ab8/yphbooSE6rpt jr2Rj+6KlPTg2BzQeKjDEcjvTc+VW5/BIF0Ox1zc= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.57]) by newxmesmtplogicsvrszb5.qq.com (NewEsmtp) with SMTP id 59E3F272; Fri, 04 Jun 2021 15:22:30 +0800 X-QQ-mid: xmsmtpt1622791351tmb628vc6 Message-ID: X-QQ-XMAILINFO: MC0MRBNqOK5JAX8GLAQMvWrAPTAYM//9AWMWK5cyKGsDlZp2AoBDZc7SR/jRFj H+tOlqYqQCwCtt22Y3j9LNTS4sXJX88d8QUdG42X40w0vUK/NdPDlsPcL8Acn5XCmnvUcyW/0t8Y 37bq1gIf6B8C4KASQIawIOxnrRHPeRiJCPDwlgpT2/uKJ8GmR7egE8PgkHzXTJ/CWAmNgyY1E1Wz YK163xWywE+Qx+MwtEIaR/poO9BXepB162o5SWIP1LuEtJBp+q8cyonQ8k0Q9V6AMWQisPplQMLV cje5H85exgJo31nMpMQS9Gxd7m9W8mgmboFtgy7VRRTp78XtBGDMM7ug41yeR8aYHis2Rqx1cgmI PZjknm5IzR0ri8A6IHbKTvDuOKeZe9IbVMpaM8jmUJpHI5Hlf95ut1CmSP/y/QfbC4X2dMQHgzt0 VOOQnj8RP1kY12VD8coZrEYinQIMFVLl1qTa08hrCT3RtN8tGxMzGJJ+lJ3THQYpQGy9dqUpc7NM 7HmoCHJvcWdjsjBMx4BKV5VF0hRH7z1TauIF09SymSb/q8Lh5urrp2EYZS1VIaA7Ry8T+DBVplaD t8Guyt70FoYA7HmXeMaqvP8WXXheBuctoXVyPbot55LDiQ16DRfpZuvdotcnbJ9rHZMZF7O9JIkC k3u4cOX5lnkafni8UXM4uqtHw8e8yALDuo7bhYO3ZDgjjhsidrafdSclmX5yaB0NHOHkOZ6G4hJM U5g8uWFDefIby/i99ZBGme1YIlzvH2a6yNkvDVhuAesVS5SY0Auh9nk9EL8+B/oNn0FLOLLH2uOP SpPUtsPrykntxPJyaZWnCwYPE00lsk4hk= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Jun 2021 15:22:28 +0800 X-OQ-MSGID: <20210604072228.85318-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210604072228.85318-1-quinkblack@foxmail.com> References: <20210604072228.85318-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/2] avformat/libsrt: add tsbpd option 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: u4rhBZYY/2lB From: Zhao Zhili --- v2: update doc doc/protocols.texi | 5 +++++ libavformat/libsrt.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/protocols.texi b/doc/protocols.texi index 8b21ce046e..d3095c88c6 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -1610,6 +1610,11 @@ Default is -1. -1 means auto (off with 0 seconds in live mode, on with 180 seconds in file mode). The range for this option is integers in the 0 - @code{INT_MAX}. +@item tsbpd=@var{1|0} +When true, use Timestamp-based Packet Delivery mode. The default behavior +depends on the transmission type: enabled in live mode, disabled in file +mode. + @end table For more information see: @url{https://github.com/Haivision/srt}. diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index 5298725ad5..d02b7a95ec 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -90,6 +90,7 @@ typedef struct SRTContext { int messageapi; SRT_TRANSTYPE transtype; int linger; + int tsbpd; } SRTContext; #define D AV_OPT_FLAG_DECODING_PARAM @@ -141,6 +142,7 @@ static const AVOption libsrt_options[] = { { "live", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = SRTT_LIVE }, INT_MIN, INT_MAX, .flags = D|E, "transtype" }, { "file", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = SRTT_FILE }, INT_MIN, INT_MAX, .flags = D|E, "transtype" }, { "linger", "Number of seconds that the socket waits for unsent data when closing", OFFSET(linger), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, .flags = D|E }, + { "tsbpd", "Timestamp-based packet delivery", OFFSET(tsbpd), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, .flags = D|E }, { NULL } }; @@ -356,7 +358,8 @@ static int libsrt_set_options_pre(URLContext *h, int fd) #endif (s->messageapi >= 0 && libsrt_setsockopt(h, fd, SRTO_MESSAGEAPI, "SRTO_MESSAGEAPI", &s->messageapi, sizeof(s->messageapi)) < 0) || (s->payload_size >= 0 && libsrt_setsockopt(h, fd, SRTO_PAYLOADSIZE, "SRTO_PAYLOADSIZE", &s->payload_size, sizeof(s->payload_size)) < 0) || - ((h->flags & AVIO_FLAG_WRITE) && libsrt_setsockopt(h, fd, SRTO_SENDER, "SRTO_SENDER", &yes, sizeof(yes)) < 0)) { + ((h->flags & AVIO_FLAG_WRITE) && libsrt_setsockopt(h, fd, SRTO_SENDER, "SRTO_SENDER", &yes, sizeof(yes)) < 0) || + (s->tsbpd >= 0 && libsrt_setsockopt(h, fd, SRTO_TSBPDMODE, "SRTO_TSBPDMODE", &s->tsbpd, sizeof(s->tsbpd)) < 0)) { return AVERROR(EIO); }