On Thu, 19 Dec 2024 05:36:08 -0500 Leo Izen <leo.i...@gmail.com> wrote: > > > On 12/16/24 6:17 AM, Niklas Haas wrote: > > From: Niklas Haas <g...@haasn.dev> > > > > --- > > libswscale/utils.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/libswscale/utils.c b/libswscale/utils.c > > index 2d8fc10beb..3d3fcadacc 100644 > > --- a/libswscale/utils.c > > +++ b/libswscale/utils.c > > @@ -46,6 +46,7 @@ > > #include "libavutil/imgutils.h" > > #include "libavutil/intreadwrite.h" > > #include "libavutil/libm.h" > > +#include "libavutil/mastering_display_metadata.h" > > #include "libavutil/mathematics.h" > > #include "libavutil/mem.h" > > #include "libavutil/opt.h" > > @@ -2655,6 +2656,7 @@ SwsFormat ff_fmt_from_frame(const AVFrame *frame, int > > field) > > { > > const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); > > const AVColorPrimariesDesc *primaries; > > + AVFrameSideData *sd; > > > > SwsFormat fmt = { > > .width = frame->width, > > @@ -2727,6 +2729,26 @@ SwsFormat ff_fmt_from_frame(const AVFrame *frame, > > int field) > > if (primaries) > > fmt.color.gamut = primaries->prim; > > > > + if ((sd = av_frame_get_side_data(frame, > > AV_FRAME_DATA_MASTERING_DISPLAY_METADATA))) { > > + const AVMasteringDisplayMetadata *mdm = (const > > AVMasteringDisplayMetadata *) sd->data; > > + if (mdm->has_luminance) { > > + fmt.color.min_luma = mdm->min_luminance; > > + fmt.color.max_luma = mdm->max_luminance; > > + } > > + > > + if (mdm->has_primaries) { > > + /* Ignore mastering display white point as it has no bearance > > on > > + * the underlying content */ > > + fmt.color.gamut.r = (AVCIExy) { mdm->display_primaries[0][0], > > mdm->display_primaries[0][1] }; > > + fmt.color.gamut.g = (AVCIExy) { mdm->display_primaries[1][0], > > mdm->display_primaries[1][1] }; > > + fmt.color.gamut.b = (AVCIExy) { mdm->display_primaries[2][0], > > mdm->display_primaries[2][1] }; > > I think this kind of initializer chokes MSVC. We need to use something like: > > fmt.color.gamut.r = { .x = mdm->display_primaries[0][0], .y = > mdm->display_primaries[0][1] };
Fixed locally. I won't bother sending a new version just for this fix. > > > > + } > > + } > > + > > + /* PQ is always scaled down to absolute zero, so ignore mastering > > metadata */ > > + if (fmt.color.trc == AVCOL_TRC_SMPTE2084) > > + fmt.color.min_luma = av_make_q(0, 1); > > + > > return fmt; > > } > > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".