From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 98F384490A for ; Tue, 27 Sep 2022 12:38:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E9CE68B8F9; Tue, 27 Sep 2022 15:38:09 +0300 (EEST) Received: from out162-62-57-49.mail.qq.com (out162-62-57-49.mail.qq.com [162.62.57.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7989F68B1B3 for ; Tue, 27 Sep 2022 15:38:00 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1664282277; bh=4v5JNL2sOwIxOICQAkSnm4YG3qQM25GVreFC2tytBjo=; h=From:To:Cc:Subject:Date; b=kISgnn3HelCrXXXL4BBahrmvv4RtggaWnmkFDKlMsmb3Ol1dBAQPfZ9Rwly4C3EvK LwMnhe8g+zp/HerF4wvY38Ldxs2PGRZzOThtvPdBONAVcg/ZOk2Gf8FEXFx/0N/ncN P8/2k+zZhGUVXkeKoJZ+/XOp2qlDLTqWVjc5FWnk= Received: from localhost.localdomain ([59.37.125.102]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 9779C619; Tue, 27 Sep 2022 20:37:55 +0800 X-QQ-mid: xmsmtpt1664282275t4c6sfpba Message-ID: X-QQ-XMAILINFO: MXdylPHsT1M86+SU4s2mLR7SQkuS7e0A+MnIKTamL6DLJSodJQBPVWBNc/nx+y 1Y0sztJkxuAGl4VxPUuzEP1oHKHsRNSoY8sTeTdwUbeYqzQh1IOfvsR3EBmmIpfLd495+w5AxkZE lynHqzKI/nGO51we1ffZWhHHAO4+6kaL7RZ9RrEQDQA1+MXX7Tc4KPsVWRKJMevTCRWYWjJ13oU6 HUyJfXhznutBygM8wU0nNa5CotpNscp/pUULKUs2bA+GqKs+AWGyYsXigw0eIq19CSBFY8WIIn7i OZKwWq33rX8vbMALtmdp2+tKYEu2DfqONonbIeVJWDUMmW8qe1MGSecFXPxuG+0rANHC491uCwhf nqyredz6+zv7JUwZll/n6nrwfLUrDhdFHAmabgVap2YwsojZsZvQQ8kJ+mG8m6IHPWaxbinP43ZO cSSxM/2hyaxRr+Bpr7y8CCdG/WnuVbkpdeMyUdyBauRLx/PfP3ApKwQ/b/rKtlVioIbiWFJtXO5f /gqba/fPFV+RBrcsB7ER49ya02lOoLcWLVsH7Bbm0sUUv6/nFeCj2D77B75bww5v3F6mY75J2Dan zKdbNdcwZzGEng5HUJDgEFoyTIYjthE64SAG0O5PP0E2eaG91GQhuwuYaBQrBeYXyXCrNzd5iKik HY3kYsh/4SSS6ngryXm0h75d3UXs2QQy38iFN31o5O5kQ9ZZpbzjtt+RUTRFeTosp869I7w4TOAD AAOV3LxzviR9D4SG5LDedPZ2FJ3qbC2u8eyklIkW//UPBo+A/Eh+TBj1GG4moufjekwXxiemy58S 0W8iy5KWuvmHBW+jf5tbQEPcYcc5LblyJ1be1n8IDMUq6dLvr7s2LrQfllMFe9EFQaZdP39NyKkU OD1bGOk1OsEPjNpbReMoIUA+NvI5w78IG4SOjRkYZq8hFg86XNSbyuJtYZjhJ4cLuHIVgjq7+H6s 5c5HjU9xvYUTtbOLHXDq6cyVZFHRsG From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Sep 2022 04:37:59 +0800 X-OQ-MSGID: <20220927203759.1100904-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/mpegtsenc: add pcr_at_keyframe flag 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili Add PCR at keyframe can be undesirable when -pcr_period is specified. Add an flag to disable this behavior. Signed-off-by: Zhao Zhili --- doc/muxers.texi | 2 ++ libavformat/mpegtsenc.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/muxers.texi b/doc/muxers.texi index b2f4326aae..0f576d8096 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -1915,6 +1915,8 @@ Conform to System B (DVB) instead of System A (ATSC). Mark the initial packet of each stream as discontinuity. @item nit Emit NIT table. +@item pcr_at_keyframe +Write PCR at key frame. @end table @item mpegts_copyts @var{boolean} diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 5148a6aecd..808d2c04a2 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -112,6 +112,7 @@ typedef struct MpegTSWrite { #define MPEGTS_FLAG_SYSTEM_B 0x08 #define MPEGTS_FLAG_DISCONT 0x10 #define MPEGTS_FLAG_NIT 0x20 +#define MPEGTS_FLAG_PCR_AT_KEYFRAME 0x40 int flags; int copyts; int tables_version; @@ -1566,7 +1567,8 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, q = get_ts_payload_start(buf); ts_st->discontinuity = 0; } - if (key && is_start && pts != AV_NOPTS_VALUE && + if ((ts->flags & MPEGTS_FLAG_PCR_AT_KEYFRAME) && + key && is_start && pts != AV_NOPTS_VALUE && !is_dvb_teletext /* adaptation+payload forbidden for teletext (ETSI EN 300 472 V1.3.1 4.1) */) { // set Random Access for key frames if (ts_st->pcr_period) @@ -2269,7 +2271,7 @@ static const AVOption options[] = { { "muxrate", NULL, OFFSET(mux_rate), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, INT_MAX, ENC }, { "pes_payload_size", "Minimum PES packet payload in bytes", OFFSET(pes_payload_size), AV_OPT_TYPE_INT, { .i64 = DEFAULT_PES_PAYLOAD_SIZE }, 0, INT_MAX, ENC }, - { "mpegts_flags", "MPEG-TS muxing flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, 0, INT_MAX, ENC, "mpegts_flags" }, + { "mpegts_flags", "MPEG-TS muxing flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, { .i64 = MPEGTS_FLAG_PCR_AT_KEYFRAME }, 0, INT_MAX, ENC, "mpegts_flags" }, { "resend_headers", "Reemit PAT/PMT before writing the next packet", 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_FLAG_REEMIT_PAT_PMT }, 0, INT_MAX, ENC, "mpegts_flags" }, { "latm", "Use LATM packetization for AAC", @@ -2282,6 +2284,8 @@ static const AVOption options[] = { 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_FLAG_DISCONT }, 0, INT_MAX, ENC, "mpegts_flags" }, { "nit", "Enable NIT transmission", 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_FLAG_NIT}, 0, INT_MAX, ENC, "mpegts_flags" }, + { "pcr_at_keyframe", "Write PCR at key frame", + 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_FLAG_PCR_AT_KEYFRAME }, 0, INT_MAX, ENC, "mpegts_flags" }, { "mpegts_copyts", "don't offset dts/pts", OFFSET(copyts), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, ENC }, { "tables_version", "set PAT, PMT, SDT and NIT version", OFFSET(tables_version), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 31, ENC }, { "omit_video_pes_length", "Omit the PES packet length for video packets", -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".