From patchwork Thu Mar 28 13:23:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 12517 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 995CB447EE4 for ; Thu, 28 Mar 2019 15:23:43 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7537468A8F7; Thu, 28 Mar 2019 15:23:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7332B68A7B1 for ; Thu, 28 Mar 2019 15:23:36 +0200 (EET) Received: by mail-pl1-f194.google.com with SMTP id p19so4960808plo.2 for ; Thu, 28 Mar 2019 06:23:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=g/gxCdfgaWGluBJnI/GZkb14IAt79I6gMS8nEchp7WI=; b=JNi1H7FhhUvuqvMrm5R7g9PxylGKUZVyuzc8bUUtgWxRkOEvED+ZV2qjjVSESQuH+l H1Ql7KDScV0mB8G/jTsAxBXz5fcK04wt6WBVur5b3Aj6nkx2+332kbxkQUde7x0bHcly oNppTWtlgF2aTE7e0cfeU+haGd5XPgYWGPlGwSth2QmlY+Y6ERD/nZ8JbyzL2kUVPq5J ojwGO1JAQuDuKOL5VE1wVeGGwW3k1KWKwOD8EpE57cw4HAdYgdMysTfom8Vng0Z0IPnh CcVeYe3WLKHZdJwr+mRmL/k88IFXMQDR1SicHBE0SV8wVz8ULkoYPkxj6Fx/f0mTcCsX avUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=g/gxCdfgaWGluBJnI/GZkb14IAt79I6gMS8nEchp7WI=; b=Kr/DdW8fML6ccpx7XNwX6duopGKkfEdm7tPPDUnHTF1FFi6tgLaprlRlIlr1oUTd3D AUJNKuX35gvdmYwjXoKRDr820XS4v+vWr4UXXXmwsV1E5JK1u7tzDEmYSIZR5XuRUFP7 L/gCOFy0UEQjY6gifFJYbWgLHwT4sP1ufUV6eEFLb/P13wcZU5keb7YZynMrVP/974SR UdjZ6IabezCfIm62j1myYQQudX7f3EFBOG3A/vYIxZzi3Zv4QWSoJBTseNRhGBsORA/k YTgg3u62XVimbnXxKvYal537s9Df97cJBIZRZs2kSIx6pTtxme280aQto3FHV1j+14+v ZKRQ== X-Gm-Message-State: APjAAAXFwSc7Mk4/1RLGqnFTG89aIW1nBhoZjcEN4NDeUD9wj4rUYZKR caa0BRCaxU4bKDXiWlY7ecoLhfcT X-Google-Smtp-Source: APXvYqx7ylhJM8rYXlyTqZjZZn7yDSjQiDX2TnXZOj2y4fE0c793ccn0NHVSH/S2PGtblQ3ReaslRQ== X-Received: by 2002:a17:902:988e:: with SMTP id s14mr30422052plp.167.1553779414302; Thu, 28 Mar 2019 06:23:34 -0700 (PDT) Received: from localhost.localdomain ([47.90.47.25]) by smtp.gmail.com with ESMTPSA id h64sm40903857pfj.40.2019.03.28.06.23.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Mar 2019 06:23:33 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Thu, 28 Mar 2019 21:23:29 +0800 Message-Id: <1553779409-32200-1-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 1.7.1 Subject: [FFmpeg-devel] [PATCH V2] lavf/flvdec: Fix AMF NUMBER type to metadata lost precision X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao Use %.12g replace %.f when save AMF NUMBER(double) type to metadata. And update fate ref. before this fix, we get FLV metadata like: Metadata: lasttimestamp : 113 lastkeyframetimestamp: 112 after this fix: Metadata: lasttimestamp : 113.005 lastkeyframetimestamp: 111.678 Signed-off-by: Jun Zhao --- libavformat/flvdec.c | 2 +- tests/ref/fate/flv-add_keyframe_index | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 445d58d..12bfd4b 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -649,7 +649,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, sizeof(str_val)); av_dict_set(&s->metadata, key, str_val, 0); } else if (amf_type == AMF_DATA_TYPE_NUMBER) { - snprintf(str_val, sizeof(str_val), "%.f", num_val); + snprintf(str_val, sizeof(str_val), "%.12g", num_val); av_dict_set(&s->metadata, key, str_val, 0); } else if (amf_type == AMF_DATA_TYPE_STRING) { av_dict_set(&s->metadata, key, str_val, 0); diff --git a/tests/ref/fate/flv-add_keyframe_index b/tests/ref/fate/flv-add_keyframe_index index 1c4da65..ce3809e 100644 --- a/tests/ref/fate/flv-add_keyframe_index +++ b/tests/ref/fate/flv-add_keyframe_index @@ -7,6 +7,6 @@ canSeekToEnd=true datasize=629776 videosize=629381 audiosize=0 -lasttimestamp=20 +lasttimestamp=19.8571428571 lastkeyframetimestamp=19 lastkeyframelocation=597963