From patchwork Mon Feb 6 21:25:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 40302 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3358929pzk; Mon, 6 Feb 2023 05:26:00 -0800 (PST) X-Google-Smtp-Source: AK7set+8yL211lp7Azn0rNauJ7yGyHpoqIDD3EYZzCUQbDfUgraNjoEGCYLCL7qQ618qL/BIO0d1 X-Received: by 2002:a17:907:6da7:b0:8a4:7fb9:5658 with SMTP id sb39-20020a1709076da700b008a47fb95658mr3536201ejc.55.1675689960149; Mon, 06 Feb 2023 05:26:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675689960; cv=none; d=google.com; s=arc-20160816; b=Aqng+Vzo9xzze63X7Z3kSMadZ/SNX7P0dQ2WObVhkjxLB58wsAZPRbdBkvOGOY4xlq MQGo65Nqq48QrAVBFgjAFm0bIJwy44HZwnIiRKMQoFXcDrQXcX3oajQsTrbFb1tZ8kQw Va501F9wmOfCNowhxNPD7mAvw2YwlF7TtkQ8b5Hygks/lk4hhVazSFhgp7cfuQO0igdG +5joOTswzdjnHP8yb8YxzXi1sRn1wp9i0ipar61aU5O9qiDFZAyxDdUJi8BV5jXmltEO Az0G9dLl6OqTtb+ZFBukyoqyXXpH9NixkGDlmCYzgHSHENj/iGwx5mrH73EJNqxpaLt2 KKIg== 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=oYIOJ4EdoOyFGN9AOAh2jYfg0rhkCySb6tfr4n50rz0=; b=snvHNHxIyZse4WJ5UREdf1pm04iNEQEwWWYAsfUawkOVwfUwOkEAbD9PhwN81Ddw6y sPVxE8wHzk9E7zqyMIARmPOc6oVSTljH6FZee9s8PD60/CdRNnHf9a6HBK8k1v2I1NfO DTpMuV2QMpqzX/mFjkaJmaCGQnAHRYutVtlhdnD7AONsxrdLDih7bJHITx/6huOsSzjC ymtyKoU/ii/9Nc/7d3agPiIsVmwZzpyn70ZUCTD8ae/fr92LJT79PCWPiuNk4Alr7YzL SmtA9Vh1OqQt6Wdk0/flV3gAQFub+pX4b6hB+a27KkWYV3UTZ8OH6wDQTxbko3HCKF8P lYzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=HsvqyoGh; 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 up10-20020a170907cc8a00b00886e4a97692si11364286ejc.880.2023.02.06.05.25.59; Mon, 06 Feb 2023 05:26:00 -0800 (PST) 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=HsvqyoGh; 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 96FDE68B43E; Mon, 6 Feb 2023 15:25:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-87.mail.qq.com (unknown [162.62.57.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B1E1868BBC9 for ; Mon, 6 Feb 2023 15:25:48 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1675689945; bh=fQztoWM6t1NdNzGTJ8Po7y0LSjGiFfU8VjJjXHJ0JdY=; h=From:To:Cc:Subject:Date; b=HsvqyoGhGfGuuoXrfHfFOcb9p2pj6sKZxVXVC0eekouk6aFf2TKmXBwvkQsctHN3j 3QZ6rQ7wClkY/Z78T420iI27rv88sBpro3enuv93bGc2cVAWO5CWSJ3uMM75JTIOc1 hpO9BSfvFWBj5Oi09BBODIL8O8QAr4ROxHZ5HSmk= Received: from localhost.localdomain ([113.108.77.52]) by newxmesmtplogicsvrszc5-0.qq.com (NewEsmtp) with SMTP id 66C9E81F; Mon, 06 Feb 2023 21:25:44 +0800 X-QQ-mid: xmsmtpt1675689944tj6w2cgm2 Message-ID: X-QQ-XMAILINFO: NhpLzBn2I3XwwLqSCPwVEbn6xNJ3sKSmtK3sQdbIDRqKLashss3QGoxUhooMac 3oFJLjAIueEPcbMGgY6VefvmO53fDeH67YrVAwBrcJyAjt9mdKqgk48pI6zd+c64Xogf3hFsooSs 5KK/HLerIAEpKoxnh/romF+1GxFH0Clozu2FaK/yuxisMPMNtfPqFKMizAvdNE4jSrcoOKOOqs/A oCp2BagbcB/SSvNfV0D0w0c/V7pm3Wt+DZYnOj3vxQvvczCECVhM5OOV2veZRL7O6n3m1WDKS5qW dvvJcRNen0lXPWWrOlKPeCuuT9NJVjN2M7wPPGCzCRscx1uxyJBGe1aZezwSVzTYdMld5GIYAmNh ymU1a3utFEUGlGLksSPKpFiKFm5uIvNbIxyEgsZJKIBd/kNZPgQ7Yi4ROa1n4NtfoK8yso8iyefi tvTrrI4DJ3HaSwUcS7xmw0/6NLmQg/g94wFiYnEJ1NPJx5Tmr791lwtYtHou5wwB86fkVcvJ37jt j4tVWkR/YrJ2UvAJ4NyUKIyINJUT49ISI8nkyzNuLHKaRCjHztAxKebn1dce8XkoypMNJdDKvYnd 1gqA3GfMaKLhfvgzL+XdZdz24zU+xhlTKyp1uiU0JR+oGJcz8RO7RrgGJQkXq/FHbqf6YS3oSRFb AjtgAaWYazkhTXleyiKB7gmaWo0UHjrrnBTyuSQFu++k1pzIJFWP4xT/kbb7TzYUDR/INREQtvVg 79+3iuztHbedDBxo1N2s7dtN0dAZ7coJ8BWHoVlLWWKzIPEDk3Qmv4nFLGFnsy/YzsZ5e2+srkjW 7R+EfckecFnKZxy904ywiCxgwjr6hcS97HIud1iEQLB3qtIHnYKJzBlC5/mS0EIIUFhOqDAmaWwk TvcaI3OEzZzrmmAsbucwi7FsJWLb6+6UEmWICFiEqHnXQyM1SyXvy1wgIAShUseOo0Oxs1LGj3x5 3H+Fh4cbZE2m+AINYqzV40IVqwinFY From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Feb 2023 05:25:45 +0800 X-OQ-MSGID: <20230206212545.652085-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/flvenc: fix EOS tag 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: D9woB1DJTOX7 From: Zhao Zhili FLV spec only has AVC end of sequence tag, and the EOS tag has a CodecID as other video data packet. MPEG4 doesn't conformance to the spec, but it's there for a decade. So only 'fix' the EOS tag rather than remove it completely. Signed-off-by: Zhao Zhili --- libavformat/flvenc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 128ae8ebc0..8830c03044 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -235,13 +235,16 @@ static void put_timestamp(AVIOContext *pb, int64_t ts) { avio_w8(pb, (ts >> 24) & 0x7F); } -static void put_avc_eos_tag(AVIOContext *pb, unsigned ts) +static void put_eos_tag(AVIOContext *pb, unsigned ts, enum AVCodecID codec_id) { + uint32_t tag = ff_codec_get_tag(flv_video_codec_ids, codec_id); + /* ub[4] FrameType = 1, ub[4] CodecId */ + tag |= 1 << 4; avio_w8(pb, FLV_TAG_TYPE_VIDEO); avio_wb24(pb, 5); /* Tag Data Size */ put_timestamp(pb, ts); avio_wb24(pb, 0); /* StreamId = 0 */ - avio_w8(pb, 23); /* ub[4] FrameType = 1, ub[4] CodecId = 7 */ + avio_w8(pb, tag); avio_w8(pb, 2); /* AVC end of sequence */ avio_wb24(pb, 0); /* Always 0 for AVC EOS. */ avio_wb32(pb, 16); /* Size of FLV tag */ @@ -783,7 +786,7 @@ end: FLVStreamContext *sc = s->streams[i]->priv_data; if (par->codec_type == AVMEDIA_TYPE_VIDEO && (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4)) - put_avc_eos_tag(pb, sc->last_ts); + put_eos_tag(pb, sc->last_ts, par->codec_id); } }