Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/LAVFilters.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2016-06-12 14:59:33 +0300
committerHendrik Leppkes <h.leppkes@gmail.com>2016-06-12 14:59:33 +0300
commitce07f83796483fb4cc7c5aa2a47f7f199673f89a (patch)
tree1f93eaad48521a22530bc2ebd18dd1d9188f9fb0 /decoder
parent7190a201b7380fc106b9d34915f50044e8d08d95 (diff)
Fix order of HDR primaries
Diffstat (limited to 'decoder')
-rw-r--r--decoder/LAVVideo/decoders/avcodec.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/decoder/LAVVideo/decoders/avcodec.cpp b/decoder/LAVVideo/decoders/avcodec.cpp
index a9c9ae92..614d9dc1 100644
--- a/decoder/LAVVideo/decoders/avcodec.cpp
+++ b/decoder/LAVVideo/decoders/avcodec.cpp
@@ -920,12 +920,13 @@ STDMETHODIMP CDecAvcodec::Decode(const BYTE *buffer, int buflen, REFERENCE_TIME
AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sdHDR->data;
MediaSideDataHDR * hdr = (MediaSideDataHDR *)AddLAVFrameSideData(pOutFrame, IID_MediaSideDataHDR, sizeof(MediaSideDataHDR));
if (hdr) {
- hdr->display_primaries_x[0] = av_q2d(metadata->display_primaries[2][0]);
- hdr->display_primaries_y[0] = av_q2d(metadata->display_primaries[2][1]);
- hdr->display_primaries_x[1] = av_q2d(metadata->display_primaries[0][0]);
- hdr->display_primaries_y[1] = av_q2d(metadata->display_primaries[0][1]);
- hdr->display_primaries_x[2] = av_q2d(metadata->display_primaries[1][0]);
- hdr->display_primaries_y[2] = av_q2d(metadata->display_primaries[1][1]);
+ // avcodec exports the display primaries in RGB order, we export them in GBR
+ hdr->display_primaries_x[0] = av_q2d(metadata->display_primaries[1][0]);
+ hdr->display_primaries_y[0] = av_q2d(metadata->display_primaries[1][1]);
+ hdr->display_primaries_x[1] = av_q2d(metadata->display_primaries[2][0]);
+ hdr->display_primaries_y[1] = av_q2d(metadata->display_primaries[2][1]);
+ hdr->display_primaries_x[2] = av_q2d(metadata->display_primaries[0][0]);
+ hdr->display_primaries_y[2] = av_q2d(metadata->display_primaries[0][1]);
hdr->white_point_x = av_q2d(metadata->white_point[0]);
hdr->white_point_y = av_q2d(metadata->white_point[1]);