From patchwork Thu Jul 14 04:48:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 36788 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp137211pzb; Wed, 13 Jul 2022 21:48:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v90nOjYIrnjkUu5SErRN7872N5jQB6ffi/a4pxjyL3XKLK3a4vb42zT7fvQUm6yvsuH1SW X-Received: by 2002:a05:6402:5388:b0:435:71b:5d44 with SMTP id ew8-20020a056402538800b00435071b5d44mr9496659edb.364.1657774133306; Wed, 13 Jul 2022 21:48:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657774133; cv=none; d=google.com; s=arc-20160816; b=HXbGZ1jgYcx8FOWRoB+nRCB5fqa4UaM0Q5Pr05DNNqYBC7DnVnvyR8kWcwJ84yvtwL ZOcO0IMFup5RB2FGDwk0URMGB398LiUIBW298AP9GuhWJW8xySpjyyrUTH4Ec6aJDXrE K74lvjWAnv1v6QItsK7EPh9ug1rJJP0Z9ZtXrt4v9G4toaRZI1sWoY28NpLHWMHis0Xg kjhCFVQ33rdVvEmZo4XvKgBDIyZcGn3FTAfs99fYthYmpqTIejxw5iVD3mo6SlcMNRqf CR4C3dh0aoIfKueRqcNAxANvjIkdyUlrKf8unwZ/9k7UjjH+PUjwXly42v/D5TDv7noj lZJw== 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=RhyWRK3LGJzibKLc2Rqnesfx3NLY4SsYD/aoi80fZZE=; b=M6BhQmm7y0VnSb6K0AneiVBg0zdzwoatcaal1I+Z3CJPEgepH+uRDcfKDtVHSn5B6q fBPu4z/tt63jxCoYy4M9fhKd8Y5UvmR8edq29Ev/KB8qPnRIJkVDuCOIQ6BR3GL7fkOi v7ghgyn2LgUndDh59Ic3fUqLGX+N+kgLSXBAUDN+8LmqIMPhzxITTbX63PWFd0cbbGh6 afrL+yBRT6PHbgAkfElkzJZYDCroYc98cyp5FV3wgSOPIGjjONOJaOrM+cPF0Capnrve +AA3oq8DgP33UxFMvmBeirhomJnnyyOn9qMCKdwzhprmzxd4/9uWkTpwnBP8IpfZmB9q c74A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=agmua9lB; 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 j22-20020a170906431600b00722e55f1eccsi13646ejm.198.2022.07.13.21.48.51; Wed, 13 Jul 2022 21:48:53 -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=agmua9lB; 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 B2A8B68B9B8; Thu, 14 Jul 2022 07:48:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DF1E868B947 for ; Thu, 14 Jul 2022 07:48:31 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1657774105; bh=JU+Dl0Js1+P7vNWLgvF/RXPTLMEgo9T0Rckw6RP5+ZM=; h=From:To:Cc:Subject:Date; b=agmua9lB8IlcPmj8Hsx95aR3obet/KhsmsF+ZzuYEceA3G64Lswovw4isTLA/5+wI ntszCkr5jV4RzcmpLdVguVs/cbOpvWs76gz2K1c9ey+M4w5fMHr4SNARnNSuKju+b0 RfoVkTpmELCUGY93hWhG10W8Ll89Utrge8BlB5tY= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.51]) by newxmesmtplogicsvrsza8.qq.com (NewEsmtp) with SMTP id C189D885; Thu, 14 Jul 2022 12:48:24 +0800 X-QQ-mid: xmsmtpt1657774104ta2xjmcdv Message-ID: X-QQ-XMAILINFO: OfkeHAqGKDFb/exY4R/icGPXSz10+ZtVTKLNZuSM8LQunciMe+zKcYk+J/iOhv p0f1GV/ZPYidyEpxqi9vTGliXNq496yjC+h5/jeBs+bB1HmKS1q3QbKStNfVu6fzGCWbCdVfQG0J g1AOdsNAPQEOjUoz11e98DvEsBQ62vADG/c1XKWNVk86BhGa2tP8s+rsGaJG2wCPD2tTS1F1yqmD zbi/QdyM5mkNvjU+pJ32lEmSh/Ml/3yuPxOI1xXdT80K1sAEfyqCfhLOXUXZa2VSG7Nq43PCAEVH sQaggE8dsOOo+BmJLWbAIPhErDilOKWF2lCUFNdPDGeViIkyB3eVbyTvF8O3uahvo2b9pCSDA+tM a1B6uc5S+br1NNPvLfQZJVoNlnrqo76gqnKQupIw9XEM2cDkQd8/y9fshX9fVskfWxh+uDu/Rzar LwPc5Vem+LlvLfC/tDGJrAb+YvuwoywmyvFrfjTdKNqESpFfO6H/w/hn4RMvhWVWLCagE41DByFM W7N07K5xEKC1iUxHbOygf97WRqtWZvjEGUiQrZ2ibNxkMVXqQFj6qOAwRXTrjuxS6M5hBIIFF47b xsxm1w6RN1Bf5uIcFL1PnM70FRpD5xHB6yrU1OPik+7Ep/s8bITtuZ9Tyk0P0IUni7c466lmMabm JIyuGVfqKFDI1p/ltV1Th1+KuQWsOLmhUDQeOpSyddILvU5Jkc0V4+q4zgG5RbJDtuSaIlRBWH5k lc+WP9eDRGDWtj7mJzn/KL+i7hdwS+nZqpap4d02EwMqO9cDESX556rUNrY8xJrQglvA1zIUqguV yOw3h4MeXVadkeXAtrhVa1y7OZn3lDtkmTYrJoYfmjJfW4/D515g8/ww7zYOcZw81UmLtDxHkT9t wMqx6Fwdg0dgYe5Yt0m9QTo0rEokPVBEWDY2csTETs1hOuWgO7xek0UUMxgwydhH37sK5wkm9G From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 14 Jul 2022 12:48:13 +0800 X-OQ-MSGID: <20220714044814.72083-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/flvenc: fix timestamp of key frame index 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: lingjiujianke@gmail.com, Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: GHiLEny2/1PL From: Zhao Zhili Firstly, the timestamps generated from framerate are inaccurate for variable framerate mode. Secondly, the timestamps always start from zero, while pts/dts can start from nonzero. FLV demuxer rejects such index with message: "Found invalid index entries, clearing the index". --- libavformat/flvenc.c | 5 +---- tests/ref/fate/flv-add_keyframe_index | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 770ca319ed..1c4ffb985a 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -104,7 +104,6 @@ typedef struct FLVContext { int64_t lastkeyframelocation_offset; int64_t lastkeyframelocation; - int acurframeindex; int64_t keyframes_info_offset; int64_t filepositions_count; @@ -391,7 +390,6 @@ static void write_metadata(AVFormatContext *s, unsigned int ts) } if (flv->flags & FLV_ADD_KEYFRAME_INDEX) { - flv->acurframeindex = 0; flv->keyframe_index_size = 0; put_amf_string(pb, "hasVideo"); @@ -993,8 +991,7 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) switch (par->codec_type) { case AVMEDIA_TYPE_VIDEO: flv->videosize += (avio_tell(pb) - cur_offset); - flv->lasttimestamp = flv->acurframeindex / flv->framerate; - flv->acurframeindex++; + flv->lasttimestamp = pkt->dts / 1000.0; if (pkt->flags & AV_PKT_FLAG_KEY) { double ts = flv->lasttimestamp; int64_t pos = cur_offset; diff --git a/tests/ref/fate/flv-add_keyframe_index b/tests/ref/fate/flv-add_keyframe_index index 39c4bed85a..6549170a68 100644 --- a/tests/ref/fate/flv-add_keyframe_index +++ b/tests/ref/fate/flv-add_keyframe_index @@ -1,4 +1,4 @@ -5f38d76da3ed4a5be06ca604c53666f2 *tests/data/fate/flv-add_keyframe_index.flv +9f3d6de74f3329651a4c515c20cea00f *tests/data/fate/flv-add_keyframe_index.flv 630192 tests/data/fate/flv-add_keyframe_index.flv #tb 0: 1/1000 #media_type 0: video