[FFmpeg-devel] [PATCH v6 1/3] avformat/mxfdec: set toolkit version metadata
Tomas Härdin
tjoppen at acc.umu.se
Mon Feb 1 12:56:25 EET 2021
mån 2021-02-01 klockan 07:50 +0800 skrev lance.lmwang at gmail.com:
> From: Limin Wang <lance.lmwang at gmail.com>
>
> Please check the string of toolkit version with below command:
> ./ffmpeg -i ../fate-suite/mxf/Sony-00001.mxf -c:v copy -c:a copy out.mxf
> ./ffmpeg -i out.mxf
> ....
> toolkit_version : 58.65.101
>
> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> ---
> libavformat/mxfdec.c | 25 +++++++++++++++++++++++++
> tests/ref/fate/mxf-probe-applehdr10 | 1 +
> tests/ref/fate/mxf-probe-dnxhd | 1 +
> 3 files changed, 27 insertions(+)
>
> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> index afff204..61c8104 100644
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -1970,6 +1970,18 @@ static int mxf_umid_to_str(UID ul, UID uid, char **str)
> return 0;
> }
>
> +static int mxf_version_to_str(uint16_t major, uint16_t minor, uint16_t tertiary, char **str)
> +{
> + int size = sizeof(major) * 5 + 1;
This is just wrong. Should be 3*5+2+1 = 18.
> +
> + *str = av_mallocz(size);
> + if (!*str)
> + return AVERROR(ENOMEM);
> +
> + snprintf(*str, size, "%d.%d.%d", major, minor, tertiary);
snprintf() is not safe - *str can end up not NUL terminated
> +#define SET_VERSION_METADATA(pb, name, major, minor, tertiary, str) do { \
> + major = avio_rb16(pb); \
> + minor = avio_rb16(pb); \
> + tertiary = avio_rb16(pb); \
> + if ((ret = mxf_version_to_str(major, minor, tertiary, &str)) < 0) \
> + return ret; \
> + av_dict_set(&s->metadata, name, str, AV_DICT_DONT_STRDUP_VAL); \
> +} while (0)
Why not a function?
/Tomas
More information about the ffmpeg-devel
mailing list