[FFmpeg-devel] [PATCH] lavc/libdav1d: fix exporting framerate
James Almer
jamrial at gmail.com
Mon May 15 14:47:48 EEST 2023
On 5/15/2023 5:22 AM, Anton Khirnov wrote:
> Same issues as in the previous commit.
> ---
> Updated for changes in previous patch.
> ---
> libavcodec/Makefile | 2 +-
> libavcodec/libdav1d.c | 10 ++++------
> 2 files changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 9587e56493..4d59411662 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -1086,7 +1086,7 @@ OBJS-$(CONFIG_LIBARIBCAPTION_DECODER) += libaribcaption.o ass.o
> OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
> OBJS-$(CONFIG_LIBCODEC2_DECODER) += libcodec2.o
> OBJS-$(CONFIG_LIBCODEC2_ENCODER) += libcodec2.o
> -OBJS-$(CONFIG_LIBDAV1D_DECODER) += libdav1d.o
> +OBJS-$(CONFIG_LIBDAV1D_DECODER) += libdav1d.o av1_parse.o
> OBJS-$(CONFIG_LIBDAVS2_DECODER) += libdavs2.o
> OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
> OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
> diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c
> index af072da681..0320ae7c6c 100644
> --- a/libavcodec/libdav1d.c
> +++ b/libavcodec/libdav1d.c
> @@ -30,6 +30,7 @@
> #include "libavutil/opt.h"
>
> #include "atsc_a53.h"
> +#include "av1_parse.h"
> #include "avcodec.h"
> #include "bytestream.h"
> #include "codec_internal.h"
> @@ -154,12 +155,9 @@ static void libdav1d_init_params(AVCodecContext *c, const Dav1dSequenceHeader *s
> else
> c->pix_fmt = pix_fmt[seq->layout][seq->hbd];
>
> - if (seq->num_units_in_tick && seq->time_scale) {
> - av_reduce(&c->framerate.den, &c->framerate.num,
> - seq->num_units_in_tick, seq->time_scale, INT_MAX);
> - if (seq->equal_picture_interval)
> - c->ticks_per_frame = seq->num_ticks_per_picture;
> - }
> + c->framerate = ff_av1_framerate(seq->num_ticks_per_picture,
> + seq->num_units_in_tick,
> + seq->time_scale);
libdav1d unfortunately is currently exporting num_units_in_tick and
time_scale as int, so in the (very unlikely but valid) case a value was
> INT_MAX in the bitstream, it will be stored in those as a negative value.
I suppose casting them to unsigned here should be enough.
>
> if (seq->film_grain_present)
> c->properties |= FF_CODEC_PROPERTY_FILM_GRAIN;
More information about the ffmpeg-devel
mailing list