mm-video-v4l2: vdec: Correct order of reading color primaries
According to H265 spec, the color primaries should be in G,B,R
order. But in the exisisting code they are read in R, G, B order.
Correct the order of reading bitstream as per the specification.
(Cherry-picked from:
https://partner-android-review.googlesource.com/c/platform/hardware/qcom/sdm845/media/+/1120439)
Bug: 111799726
Change-Id: Ic6703dcf7878c27e3e18e437039ddb74cf8d32d6
(cherry picked from commit acb885f628ccf4731d887d47300e5d9ff58b72b4)
(cherry picked from commit 96454aaa4ab9f17690ecd4f5f147f3afe5e0361d)
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 6590fe1..71db982 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -9671,12 +9671,12 @@
HDRStaticInfo* hdr_info = &m_internal_hdr_info.sInfo;
bool internal_disp_changed_flag = false;
- internal_disp_changed_flag |= (hdr_info->sType1.mR.x != mastering_display_payload->nDisplayPrimariesX[0]) ||
- (hdr_info->sType1.mR.y != mastering_display_payload->nDisplayPrimariesY[0]);
- internal_disp_changed_flag |= (hdr_info->sType1.mG.x != mastering_display_payload->nDisplayPrimariesX[1]) ||
- (hdr_info->sType1.mG.y != mastering_display_payload->nDisplayPrimariesY[1]);
- internal_disp_changed_flag |= (hdr_info->sType1.mB.x != mastering_display_payload->nDisplayPrimariesX[2]) ||
- (hdr_info->sType1.mB.y != mastering_display_payload->nDisplayPrimariesY[2]);
+ internal_disp_changed_flag |= (hdr_info->sType1.mG.x != mastering_display_payload->nDisplayPrimariesX[0]) ||
+ (hdr_info->sType1.mG.y != mastering_display_payload->nDisplayPrimariesY[0]);
+ internal_disp_changed_flag |= (hdr_info->sType1.mB.x != mastering_display_payload->nDisplayPrimariesX[1]) ||
+ (hdr_info->sType1.mB.y != mastering_display_payload->nDisplayPrimariesY[1]);
+ internal_disp_changed_flag |= (hdr_info->sType1.mR.x != mastering_display_payload->nDisplayPrimariesX[2]) ||
+ (hdr_info->sType1.mR.y != mastering_display_payload->nDisplayPrimariesY[2]);
internal_disp_changed_flag |= (hdr_info->sType1.mW.x != mastering_display_payload->nWhitePointX) ||
(hdr_info->sType1.mW.y != mastering_display_payload->nWhitePointY);
@@ -9690,12 +9690,12 @@
(hdr_info->sType1.mMinDisplayLuminance != mastering_display_payload->nMinDisplayMasteringLuminance);
if (internal_disp_changed_flag) {
- hdr_info->sType1.mR.x = mastering_display_payload->nDisplayPrimariesX[0];
- hdr_info->sType1.mR.y = mastering_display_payload->nDisplayPrimariesY[0];
- hdr_info->sType1.mG.x = mastering_display_payload->nDisplayPrimariesX[1];
- hdr_info->sType1.mG.y = mastering_display_payload->nDisplayPrimariesY[1];
- hdr_info->sType1.mB.x = mastering_display_payload->nDisplayPrimariesX[2];
- hdr_info->sType1.mB.y = mastering_display_payload->nDisplayPrimariesY[2];
+ hdr_info->sType1.mG.x = mastering_display_payload->nDisplayPrimariesX[0];
+ hdr_info->sType1.mG.y = mastering_display_payload->nDisplayPrimariesY[0];
+ hdr_info->sType1.mB.x = mastering_display_payload->nDisplayPrimariesX[1];
+ hdr_info->sType1.mB.y = mastering_display_payload->nDisplayPrimariesY[1];
+ hdr_info->sType1.mR.x = mastering_display_payload->nDisplayPrimariesX[2];
+ hdr_info->sType1.mR.y = mastering_display_payload->nDisplayPrimariesY[2];
hdr_info->sType1.mW.x = mastering_display_payload->nWhitePointX;
hdr_info->sType1.mW.y = mastering_display_payload->nWhitePointY;