From patchwork Fri Jun 4 07:22:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 28082 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp833026iof; Fri, 4 Jun 2021 00:22:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJZkDGjh1291EsxVDuZenpYKo/a4OelbHR/0Mh6ydMZa757S24dnq3FxiiMOKPl57MgiEm X-Received: by 2002:a17:906:180a:: with SMTP id v10mr2929092eje.22.1622791368710; Fri, 04 Jun 2021 00:22:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622791368; cv=none; d=google.com; s=arc-20160816; b=wy174OrR/hIIVuZZs538qnIGK6wUg9CpvjIEVwus0D+u3ZyLM9J8KaBd09Dg6XYtf3 08ioT08kL4sIY/tmPvCqHVStIMg/gbsyEkO8Kj7SMdyzhYkGeXOu+nJakwoIfSzGzC2N w1t6lle7OnqIFbyk3wFgTePj+h2OJpIJxvXbFva+d1NCMQ80hLNIuew4qOBEAJzCWSpS BC7sa8viuWRPF7UlRgXqa0tW8tq8VOUYowEbK5V8bsbx1bXH7mlbNPLX6MI+uQBaPIvj Wh2mFMipaQi3nA1FxC7si22rGGW4R7XQsf1JgvEiPXntUANSF1Glx1nHHz99crc/6YdE 9+mA== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=cSmciIyofTOA1eALCFxVrWHlc8x3JgFypAaEgURrd7Y=; b=CqSD1PkvP7F0BQz5f7KgRfQcSfZfW9uzERB860hLnSRdLsu4Ar5NJgcYhXorNTNCG4 wDNlFkOJcBAIFgSw6iq0dLDkXt3OrqR0ruujgfkHFxlsstlDUfJdrCrlhUtTFeNWaWcm lNFdh4RQmJcYQamrdES5NvwDlk3DL6iHG7zzKcFiqZeGkcbap96+Kau6CdDj24ZHiRGa Q2zhMsmUYxNe1fKuNJi+fadfkVOhVPTJQaB5QzuCiM6j9PCHKVFYvkXI0YUVfhrHbguT 8A/vXzxYejgUTOGIzBgVv2pHosi3uGW7IuI/vRPFGBQQNnq/B1RWcxAjPPw6Yvf0O6Vl WepQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=TlEP1yhl; 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 dg12si4779805edb.166.2021.06.04.00.22.48; Fri, 04 Jun 2021 00:22:48 -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=TlEP1yhl; 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 4943C68A154; Fri, 4 Jun 2021 10:22:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-36.mail.qq.com (out203-205-251-36.mail.qq.com [203.205.251.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E345689B0B for ; Fri, 4 Jun 2021 10:22:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1622791351; bh=UK/D/hiaAucTqTkQzk+6k21Dtr2sdIIHVKmbwy3LyZ8=; h=From:To:Cc:Subject:Date; b=TlEP1yhlJoMPXxlxK5MLEFTICWG80DZkzDOfh/fyA4p78VcaUnXJsGdYv/z3EURsZ oN5maoyVqgbw2ZkvClZlhLcrAz/HYc4kGD6TPKyxnn7CJWAgtixmF/xlW77UmkaOZX 03J/EwtP4AzsjMeerYCMsCn41ME/7yK33bo//PtQ= 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: xmsmtpt1622791350tb7r82w4z Message-ID: X-QQ-XMAILINFO: MUX0Fcv92NUeAqtdxU/HqQU66rt3/6ODF60d9X51sBo5g0sPoXAXxiDfkJHWUq AgY4f+iyKtz91XflD4ArhJDL/IcYsbO6kIYRdTbVqtkUX6NSSNe7uztifWH75KqJVaZNBvtQUm58 tGjLWlIFaCL7LVojy8NnlNX8OHyreS7qjfy0+OlnvUGULKXREOxPmN0iXLrxCWmm9MSrVIMsLqV1 MpCfTrfgr97yh31QKe71gBJgu3v+c8f4v2I7gk65EyFd/alSPuoA5MEdDbkleqsJ5f0vxKFLvAQk eFGZ6TlZ2/jyDPbCeraSEt8nWRoUDuOKkleAoyr/RWEtBRoxnmiate8KM9ecLurVeuQHo0NjkG5P FGBqmxcgrPXQ0Li+YVNxN71VjAZj1DxXpfxE5QXwg+g9zfVTcrcab6OeyVwBInQTcnGiI9jlb/Uj deVUxBQ5P00XUgCzsyNaP+EQc4ygRvuB8oXo+Q8jq6rZFByQjHElAUVB6WhwzhOSBnPw6Zu1enje Y8rd7DbnmkbNuhmFjMQDyvTUmExCMP9l/Lm96jgh0JXUROPdchB8ENdNJijM44G2SQu+dPpAjiUv Q+0MCtZNG1+0/R3fzKtaWdQNaEiC5YXWE7Z5xfzRoC+nBDX33IRXrWPI4lqtN7ql4wqWJz2IcAN2 1BUt8O+o234O5n2hTRpuhWK5pMs2oUG/3yX4pCBy3Zpm8qDKf0EtZqfh4W5hsH/LyOsEsMvt3xxk Ihj5mkenuPpC3va2zLtI6Mj9wt+Rn9XOSUirSUp4TFgfIRC1uboUy4Zowe3QD8AbfMsKq87gI7Or 4c69Yxv8QxtEDj7gt05TB4uBxKCU8KXhs= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Jun 2021 15:22:27 +0800 X-OQ-MSGID: <20210604072228.85318-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/2] avformat/libsrt: send message in order 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: LrnIMgmAmvQM From: Zhao Zhili There is no good use case for out of order delivery of data. For live streaming with TSBPD enabled by default, the receiver get data in order based on the timestamps. However, if TSBPD is disabled, the data can be delivered out of order. --- libavformat/libsrt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index afbf01fc87..5298725ad5 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -690,7 +690,7 @@ static int libsrt_write(URLContext *h, const uint8_t *buf, int size) return ret; } - ret = srt_sendmsg(s->fd, buf, size, -1, 0); + ret = srt_sendmsg(s->fd, buf, size, -1, 1); if (ret < 0) { ret = libsrt_neterrno(h); } 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); }