diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-06-12 14:59:33 +0300 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-06-12 14:59:33 +0300 |
commit | ce07f83796483fb4cc7c5aa2a47f7f199673f89a (patch) | |
tree | 1f93eaad48521a22530bc2ebd18dd1d9188f9fb0 /decoder | |
parent | 7190a201b7380fc106b9d34915f50044e8d08d95 (diff) |
Fix order of HDR primaries
Diffstat (limited to 'decoder')
-rw-r--r-- | decoder/LAVVideo/decoders/avcodec.cpp | 13 |
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]); |