From patchwork Fri May 14 19:28:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 27778 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp744812iof; Fri, 14 May 2021 12:29:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxT+jhbEr6RgpIotUlpwPpBsxrB9sBPxqQaDHB5yM5YaodAsPBOqhWhLhxZVg6HGDh/lZKx X-Received: by 2002:a17:906:5210:: with SMTP id g16mr23273193ejm.116.1621020572448; Fri, 14 May 2021 12:29:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621020572; cv=none; d=google.com; s=arc-20160816; b=ox7mVhEPIzJgZmc/dJjgDvdHW3JPC/ksz4kLQg1VJkRqow7vpLt+8kzcIbbWlwDf1T A2evXC0lRMSAREeMny+w+kRQs/8w6mR4Kp+HQVjcJY2fUdjiNjP4YaqSQGjMh098Qt6r 42Dq2+v2w3N3J1FcOzC++ydgwQBnvU3Snb0508muuc4giVL+bbJE2t6AYtkQ4Xrra40G CqbkRk+bGMVVpU0sjQDY7FFX/N6TcWIwT8GJyFDex+wVD4F5mM1BOQ+0p7/rTLt0LNsB 0PW+PNJHLkYyUW5K+Szg/IF2EKfICazqQxu1pBH9XxBLcad3h1jG7hTYredVD6WcwiZe vIWA== 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 :message-id:date:to:from:delivered-to; bh=jc4/MJPlypviwwyNL7Ru+07G/BnuQQXs9aqTDaWwcAQ=; b=CllEMncqEKWblxBhdC19QEllDo2dF8rTMs1ZWndg/y+8kjhpUF3mKxIgjQst5w1GUI KVe2AWHY7m1XnsLtJTUb5yysinwD4TxlVny2DYan9yRILsyfB7zz9tGDEN/sOqeuHyzQ cE+caSxF/GmPKDIifmp1zKDzywX7KAHH9AZeeS78bgCgSxkTG8TfRrOdwL6z1OZRNTXv 7P+BSGtCFvL1boaw4aPKrBPGVzo65lxniBMGe5q+s2eINIzPE/YIPBMRHH+E4z0pP3ra HhMWq9dHnOmqqQI3z2JXUC6ud+kIBQDcJJuxhulkbbuTRQfs/GSz5cUGZCoXkAv7leyT b/zw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g12si6870281edw.596.2021.05.14.12.29.32; Fri, 14 May 2021 12:29:32 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B09D3680C0F; Fri, 14 May 2021 22:29:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 121EB68094F for ; Fri, 14 May 2021 22:29:23 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id F12F6E54E6; Fri, 14 May 2021 21:29:22 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eebb5RvwjeGp; Fri, 14 May 2021 21:29:20 +0200 (CEST) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 1E42CE4127; Fri, 14 May 2021 21:29:20 +0200 (CEST) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Fri, 14 May 2021 21:28:06 +0200 Message-Id: <20210514192806.23368-1-cus@passwd.hu> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avformat/flvdec: use milisecond precision for parsing timestamps 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: Marton Balint Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gflUQLA9vn+Q Also use helper function to set the timestamp. Maybe we could also use nanosecond precision, but there were some float rounding concerns. Signed-off-by: Marton Balint --- libavformat/flvdec.c | 11 ++--------- tests/ref/fate/flv-demux | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) -format|filename=Enigma_Principles_of_Lust-part.flv|nb_streams=2|nb_programs=0|format_name=flv|start_time=0.000000|duration=210.209999|size=512000|bit_rate=19485|probe_score=100|tag:hasKeyframes=true|tag:hasMetadata=true|tag:datasize=11970544|tag:hasVideo=true|tag:canSeekToEnd=false|tag:lasttimestamp=210|tag:lastkeyframetimestamp=210|tag:audiosize=1791332|tag:hasAudio=true|tag:audiodelay=0|tag:videosize=10176110|tag:metadatadate=2011-02-27T11:00:33Z|tag:metadatacreator=inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2|tag:hasCuePoints=false +format|filename=Enigma_Principles_of_Lust-part.flv|nb_streams=2|nb_programs=0|format_name=flv|start_time=0.000000|duration=210.209999|size=512000|bit_rate=19485|probe_score=100|tag:hasKeyframes=true|tag:hasMetadata=true|tag:datasize=11970544|tag:hasVideo=true|tag:canSeekToEnd=false|tag:lasttimestamp=210|tag:lastkeyframetimestamp=210|tag:audiosize=1791332|tag:hasAudio=true|tag:audiodelay=0|tag:videosize=10176110|tag:metadatadate=2011-02-27T11:00:33.125000Z|tag:metadatacreator=inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2|tag:hasCuePoints=false diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index ddaceaafe4..6bd6c8c944 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -28,6 +28,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/dict.h" #include "libavutil/opt.h" +#include "libavutil/internal.h" #include "libavutil/intfloat.h" #include "libavutil/mathematics.h" #include "libavutil/time_internal.h" @@ -682,17 +683,9 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, } else if (amf_type == AMF_DATA_TYPE_STRING) { av_dict_set(&s->metadata, key, str_val, 0); } else if (amf_type == AMF_DATA_TYPE_DATE) { - time_t time; - struct tm t; - char datestr[128]; - time = date.milliseconds / 1000; // to seconds - gmtime_r(&time, &t); - // timezone is ignored, since there is no easy way to offset the UTC // timestamp into the specified timezone - strftime(datestr, sizeof(datestr), "%Y-%m-%dT%H:%M:%SZ", &t); - - av_dict_set(&s->metadata, key, datestr, 0); + avpriv_dict_set_timestamp(&s->metadata, key, 1000 * (int64_t)date.milliseconds); } } diff --git a/tests/ref/fate/flv-demux b/tests/ref/fate/flv-demux index 827b56ea09..09451c11e9 100644 --- a/tests/ref/fate/flv-demux +++ b/tests/ref/fate/flv-demux @@ -605,4 +605,4 @@ packet|codec_type=audio|stream_index=1|pts=11656|pts_time=11.656000|dts=11656|dt packet|codec_type=video|stream_index=0|pts=11678|pts_time=11.678000|dts=11678|dts_time=11.678000|duration=33|duration_time=0.033000|size=1190|pos=510794|flags=__|data_hash=CRC32:a0206c90 stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|width=426|height=240|coded_width=426|coded_height=240|closed_captions=0|has_b_frames=1|sample_aspect_ratio=1:1|display_aspect_ratio=71:40|pix_fmt=yuv420p|level=21|color_range=unknown|color_space=unknown|color_transfer=unknown|color_primaries=unknown|chroma_location=left|field_order=progressive|refs=1|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=30/1|time_base=1/1000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=393929|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=351|extradata_hash=CRC32:07b85ca9|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnail s=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0 stream|index=1|codec_name=aac|profile=1|codec_type=audio|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|sample_fmt=fltp|sample_rate=22050|channels=2|channel_layout=stereo|bits_per_sample=0|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/1000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=67874|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=252|extradata_hash=CRC32:d039c029|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0