[FFmpeg-devel] [PATCH V2] lavf/flvdec: Fix AMF NUMBER type to metadata lost precision

Michael Niedermayer michael at niedermayer.cc
Thu Apr 4 00:20:48 EEST 2019


On Thu, Mar 28, 2019 at 09:23:29PM +0800, Jun Zhao wrote:
> From: Jun Zhao <barryjzhao at tencent.com>
> 
> 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 <barryjzhao at tencent.com>
> ---
>  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

does every platform we support produce the same number here ?
if not then make fate would break
its a lot of digits after the decimal point, floats are not exact ...


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Does the universe only have a finite lifespan? No, its going to go on
forever, its just that you wont like living in it. -- Hiranya Peiri
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20190403/d9613ffe/attachment.sig>


More information about the ffmpeg-devel mailing list