diff options
author | wenchangliu <wenchangliu@google.com> | 2023-03-25 07:35:27 +0000 |
---|---|---|
committer | wenchangliu <wenchangliu@google.com> | 2023-03-27 12:29:06 +0000 |
commit | fa7ff4574b09cab7a858df597ee6bccf247970ff (patch) | |
tree | 6d9c9f5f37efb9b115a4ab4b3e015f18111a16c8 | |
parent | 7591752dde4e8aec0e1d030fdabbb1f694fdab1a (diff) | |
download | gchips-fa7ff4574b09cab7a858df597ee6bccf247970ff.tar.gz |
videoapi: remove USE_FULL_ST2094_40 flag
Bug: 233398860
Test: run cts -m CtsMediaV2TestCases -t android.mediav2.cts.EncoderHDRInfoTest
Test: run cts -m CtsMediaV2TestCases -t android.mediav2.cts.DecoderHDRInfoTest
Test: run cts -m CtsMediaDecoderTestCases -t android.media.decoder.cts.HDRDecoderTest
Change-Id: Id7bb22fb7a77436210c879bc18667a072c46f06b
Signed-off-by: wenchangliu <wenchangliu@google.com>
-rw-r--r-- | include/VendorVideoAPI.h | 21 | ||||
-rw-r--r-- | videoapi/Android.mk | 4 | ||||
-rw-r--r-- | videoapi/VendorVideoAPI.cpp | 792 |
3 files changed, 0 insertions, 817 deletions
diff --git a/include/VendorVideoAPI.h b/include/VendorVideoAPI.h index 15ba530..e744e4c 100644 --- a/include/VendorVideoAPI.h +++ b/include/VendorVideoAPI.h @@ -81,10 +81,6 @@ typedef struct _ExynosHdrStaticInfo { }; } ExynosHdrStaticInfo; -#ifdef USE_FULL_ST2094_40 -#define USE_FULL_ST2094_40_INFO -#endif - typedef struct _ExynosHdrData_ST2094_40 { unsigned char country_code; unsigned short provider_code; @@ -93,7 +89,6 @@ typedef struct _ExynosHdrData_ST2094_40 { unsigned char application_identifier; unsigned char application_version; -#ifdef USE_FULL_ST2094_40 unsigned char num_windows; unsigned short window_upper_left_corner_x[2]; @@ -138,22 +133,6 @@ typedef struct _ExynosHdrData_ST2094_40 { unsigned char color_saturation_mapping_flag[3]; unsigned char color_saturation_weight[3]; -#else - unsigned int display_maximum_luminance; - unsigned int maxscl[3]; - - unsigned char num_maxrgb_percentiles; - unsigned char maxrgb_percentages[15]; - unsigned int maxrgb_percentiles[15]; - - struct { - unsigned short tone_mapping_flag; - unsigned short knee_point_x; - unsigned short knee_point_y; - unsigned short num_bezier_curve_anchors; - unsigned short bezier_curve_anchors[15]; - } tone_mapping; -#endif } ExynosHdrData_ST2094_40; typedef struct _ExynosHdrDynamicInfo { diff --git a/videoapi/Android.mk b/videoapi/Android.mk index d99d029..0fd176c 100644 --- a/videoapi/Android.mk +++ b/videoapi/Android.mk @@ -21,10 +21,6 @@ LOCAL_PROPRIETARY_MODULE := true LOCAL_CFLAGS := -ifeq ($(BOARD_USE_FULL_ST2094_40), true) -LOCAL_CFLAGS += -DUSE_FULL_ST2094_40 -endif - LOCAL_SRC_FILES := \ VendorVideoAPI.cpp diff --git a/videoapi/VendorVideoAPI.cpp b/videoapi/VendorVideoAPI.cpp index 873d77e..6e7f6ee 100644 --- a/videoapi/VendorVideoAPI.cpp +++ b/videoapi/VendorVideoAPI.cpp @@ -132,7 +132,6 @@ int Exynos_parsing_user_data_registered_itu_t_t35 ( data = 0; CHECK_BOUNDARY(bit_offset + 2, size); -#ifdef USE_FULL_ST2094_40 /* num_windows : 2bit*/ for (i = 0; i < 1; i++) { for (j = 0; j < 2; j++) { @@ -865,465 +864,6 @@ int Exynos_parsing_user_data_registered_itu_t_t35 ( } } -#else // USE_FULL_ST2094_40 - /* Device does not support full ST2094_40 info for HDR10 plus - * So some infos will be omitted from data parsing or muxing. - * (Not parsed but just offset moved) - */ - - /* num_windows : 2bit*/ - for (i = 0; i < 1; i++) { - for (j = 0; j < 2; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - } - bit_offset += 2; - extraBit = (bit_offset % 8); - data = data >> (8 - extraBit); - windows = data; - data = 0; - - for (i = 1; i < windows; i++) { - /* window_upper_left_corner_x : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* window_upper_left_corner_y : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* window_lower_right_corner_x : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* window_lower_right_corner_y : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* center_of_ellipse_x : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* center_of_ellipse_y : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* rotation_angle : 8bit */ - bit_offset += 8; - extraBit = bit_offset % 8; - - /* semimajor_axis_internal_ellipse : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* semimajor_axis_external_ellipse : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* semiminor_axis_external_ellipse : 16bit */ - bit_offset += 16; - extraBit = bit_offset % 8; - - /* overlap_process_option : 1bit */ - bit_offset += 1; - extraBit = bit_offset % 8; - } - - /* targeted_system_display_maximum_luminance : 27bit */ - if (extraBit > 5) - extraByte = 2; - else if (extraBit <= 5) - extraByte = 1; - - for (i = 0; i < 3 + extraByte; i++) { - for (j = extraBit; j < 8; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - - if (i < 3 + extraByte - 1) - data = data << 8; - - extraBit += (j - extraBit); - extraBit %= 8; - } - bit_offset += 27; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.display_maximum_luminance = data; - data = 0; - - /* targeted_system_display_actual_peak_luminance_flag : 1bit */ - data |= (*((char *)src + (bit_offset / 8)) & (1 << (7 - extraBit))); - - bit_offset += 1; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - targeted_system_display_actual_peak_luminance_flag = data; - data = 0; - - if (targeted_system_display_actual_peak_luminance_flag) { - /* num_rows_targeted_system_display_actual_peak_luminance : 5bit */ - if (extraBit > 3) - extraByte = 1; - - for (i = 0; i < 1 + extraByte; i++) { - for (j = extraBit; j < 8; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - - if (i < 1) - data = data << 8; - - extraBit += (j - extraBit); - extraBit %= 8; - } - bit_offset += 5; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - num_rows_targeted_system_display_actual_peak_luminance = data; - data = 0; - - /* num_cols_targeted_system_display_actual_peak_luminance : 5bit */ - if (extraBit > 3) - extraByte = 1; - - for (i = 0; i < 1 + extraByte; i++) { - for (j = extraBit; j < 8; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - - if (i < 1) - data = data << 8; - - extraBit += (j - extraBit); - extraBit %= 8; - } - bit_offset += 5; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - num_cols_targeted_system_display_actual_peak_luminance = data; - data = 0; - - for (i = 0; i < num_rows_targeted_system_display_actual_peak_luminance; i++) { - for (j = 0; j < num_cols_targeted_system_display_actual_peak_luminance; j++) { - /* mastering_display_actual_peak_luminance : 4bit */ - bit_offset += 4; - extraBit = bit_offset % 8; - } - } - } - - for (i = 0; i < windows; i++) { - for (j = 0; j < 3; j++) { - CHECK_BOUNDARY(bit_offset + 17, size); - /* maxscl : 17bit */ - for (k = 0; k < 3; k++) { - for (l = extraBit; l < 8; l++) { - data |= (*((char *)src + (bit_offset / 8) + k) & (1 << (7 - l))); - } - - if (k < 2) - data = data << 8; - - extraBit += (l - extraBit); - extraBit %= 8; - } - bit_offset += 17; - extraBit = bit_offset % 8; - - if (extraBit != 0) - data = data >> (8 - extraBit); - - pHdr10PlusInfo->data.maxscl[j] = data; - data = 0; - } - CHECK_BOUNDARY(bit_offset + 17, size); - /* average_maxrgb : 17bit */ - bit_offset += 17; - extraBit = bit_offset % 8; - - CHECK_BOUNDARY(bit_offset + 4, size); - /* num_distribution_maxrgb_percentiles : 4bit */ - if (extraBit > 4) - extraByte = 1; - - for (j = 0; j < 1 + extraByte; j++) { - for (k = extraBit; k < 8; k++) { - data |= (*((char *)src + (bit_offset / 8) + j) & (1 << (7 - k))); - } - - if (extraByte > 0) { - if (j < 1) - data = data << 8; - } - - extraBit += (k - extraBit); - extraBit %= 8; - } - bit_offset += 4; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.num_maxrgb_percentiles = data; - data = 0; - - for (j = 0; j < pHdr10PlusInfo->data.num_maxrgb_percentiles; j++) { - CHECK_BOUNDARY(bit_offset + 7, size); - /* distribution_maxrgb_percentages : 7bit */ - if (extraBit > 1) - extraByte = 1; - - for (k = 0; k < 1 + extraByte; k++) { - for (l = extraBit; l < 8; l++) { - data |= (*((char *)src + (bit_offset / 8) + k) & (1 << (7 - l))); - } - - if (k < 1) - data = data << 8; - - extraBit += (l - extraBit); - extraBit %= 8; - } - bit_offset += 7; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.maxrgb_percentages[j] = data; - data = 0; - - CHECK_BOUNDARY(bit_offset + 17, size); - /* distribution_maxrgb_percentiles : 17bit */ - if (extraBit >= 0) - extraByte = 1; - - for (k = 0; k < 2 + extraByte; k++) { - for (l = extraBit; l < 8; l++) { - data |= (*((char *)src + (bit_offset / 8) + k) & (1 << (7 - l))); - } - - if (k < 2) - data = data << 8; - - extraBit += (l - extraBit); - extraBit %= 8; - } - bit_offset += 17; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.maxrgb_percentiles[j] = data; - data = 0; - } - - CHECK_BOUNDARY(bit_offset + 10, size); - /* fraction_bright_pixels : 10bit*/ - bit_offset += 10; - extraBit = bit_offset % 8; - } - - CHECK_BOUNDARY(bit_offset + 1, size); - /* mastering_display_actual_peak_luminance_flag : 1bit */ - data |= (*((char *)src + (bit_offset / 8)) & (1 << (7 - extraBit))); - - bit_offset += 1; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - mastering_display_actual_peak_luminance_flag = data; - data = 0; - - if (mastering_display_actual_peak_luminance_flag) { - CHECK_BOUNDARY(bit_offset + 5, size); - /* num_rows_mastering_display_actual_peak_luminance : 5bit */ - if (extraBit > 3) - extraByte = 1; - - for (i = 0; i < 1 + extraByte; i++) { - for (j = extraBit; j < 8; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - - if (i < 1) - data = data << 8; - - extraBit += (j - extraBit); - extraBit %= 8; - } - bit_offset += 5; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - num_rows_mastering_display_actual_peak_luminance = data; - data = 0; - - CHECK_BOUNDARY(bit_offset + 5, size); - /* num_cols_mastering_display_actual_peak_luminance : 5bit */ - if (extraBit > 3) - extraByte = 1; - - for (i = 0; i < 1 + extraByte; i++) { - for (j = extraBit; j < 8; j++) { - data |= (*((char *)src + (bit_offset / 8) + i) & (1 << (7 - j))); - } - - if (i < 1) - data = data << 8; - - extraBit += (j - extraBit); - extraBit %= 8; - } - bit_offset += 5; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - num_cols_mastering_display_actual_peak_luminance = data; - data = 0; - - for (i = 0; i < num_rows_mastering_display_actual_peak_luminance; i++) { - for (j = 0; j < num_cols_mastering_display_actual_peak_luminance; j++) { - CHECK_BOUNDARY(bit_offset + 4, size); - /* mastering_display_actual_peak_luminance : 4bit */ - bit_offset += 4; - extraBit = bit_offset % 8; - } - } - } - - for (i = 0; i < windows; i++) { - CHECK_BOUNDARY(bit_offset + 1, size); - /* tone_mapping_flag : 1bit */ - data |= (*((char *)src + (bit_offset / 8)) & (1 << (7 - extraBit))); - - bit_offset += 1; - extraBit = bit_offset % 8; - data = data >> (8 - extraBit); - pHdr10PlusInfo->data.tone_mapping.tone_mapping_flag = data; - data = 0; - - if (pHdr10PlusInfo->data.tone_mapping.tone_mapping_flag) { - CHECK_BOUNDARY(bit_offset + 12, size); - /* knee_point_x : 12bit */ - if (extraBit > 5) - extraByte = 2; - else if (extraBit <= 5) - extraByte = 1; - - for (j = 0; j < 1 + extraByte; j++) { - for (k = extraBit; k < 8; k++) { - data |= (*((char *)src + (bit_offset / 8) + j) & (1 << (7 - k))); - } - - if (j < 1 + extraByte - 1) - data = data << 8; - - extraBit += (k - extraBit); - extraBit %= 8; - } - bit_offset += 12; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.tone_mapping.knee_point_x = data; - data = 0; - - CHECK_BOUNDARY(bit_offset + 12, size); - /* knee_point_y : 12bit */ - if (extraBit > 5) - extraByte = 2; - else if (extraBit <= 5) - extraByte = 1; - - for (j = 0; j < 1 + extraByte; j++) { - for (k = extraBit; k < 8; k++) { - data |= (*((char *)src + (bit_offset / 8) + j) & (1 << (7 - k))); - } - - if (j < 1 + extraByte - 1) - data = data << 8; - - extraBit += (k - extraBit); - extraBit %= 8; - } - bit_offset += 12; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.tone_mapping.knee_point_y = data; - data = 0; - - CHECK_BOUNDARY(bit_offset + 4, size); - /* num_bezier_curve_anchors : 4bit */ - if (extraBit > 4) - extraByte = 1; - - for (j = 0; j < 1 + extraByte; j++) { - for (k = extraBit; k < 8; k++) { - data |= (*((char *)src + (bit_offset / 8) + j) & (1 << (7 - k))); - } - - if (j < 1 + extraByte - 1) - data = data << 8; - - extraBit += (k - extraBit); - extraBit %= 8; - } - bit_offset += 4; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.tone_mapping.num_bezier_curve_anchors = data; - data = 0; - - for (j = 0; j < pHdr10PlusInfo->data.tone_mapping.num_bezier_curve_anchors; j++) { - CHECK_BOUNDARY(bit_offset + 10, size); - /* bezier_curve_anchors : 10bit */ - if (extraBit > 6) - extraByte = 2; - else if (extraBit <= 6) - extraByte = 1; - - for (k = 0; k < 1 + extraByte; k++) { - for (l = extraBit; l < 8; l++) { - data |= (*((char *)src + (bit_offset / 8) + k) & (1 << (7 - l))); - } - - if (k < 1 + extraByte - 1) - data = data << 8; - - extraBit += (l - extraBit); - extraBit %= 8; - } - bit_offset += 10; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - pHdr10PlusInfo->data.tone_mapping.bezier_curve_anchors[j] = data; - data = 0; - } - } - - CHECK_BOUNDARY(bit_offset + 1, size); - /* color_saturation_mapping_flag : 1bit */ - data |= (*((char *)src + (bit_offset / 8)) & (1 << (7 - extraBit))); - - bit_offset += 1; - extraByte = 0; - extraBit = bit_offset % 8; - data = (extraBit != 0) ? (data >> (8 - extraBit)) : data; - color_saturation_mapping_flag = data; - data = 0; - - if (color_saturation_mapping_flag) { - CHECK_BOUNDARY(bit_offset + 6, size); - /* color_saturation_weight : 6bit */ - bit_offset += 6; - extraBit = bit_offset % 8; - } - } -#endif // USE_FULL_ST2094_40 - return 0; } @@ -1422,7 +962,6 @@ int Exynos_dynamic_meta_to_itu_t_t35 ( } extraBit = (bit_offset % 8); -#ifdef USE_FULL_ST2094_40 /* num_windows: 2bit */ offset_limit = bit_offset + 2; @@ -2217,337 +1756,6 @@ int Exynos_dynamic_meta_to_itu_t_t35 ( extraByte = 0; } } -#else // USE_FULL_ST2094_40 - /* num_windows: 2bit */ - offset_limit = bit_offset + 2; - - for (i = 0; i < 2; i++) { - /* num_windows is always 1 now */ - *((char *)pBlob + (bit_offset / 8)) |= ((char)0x40/* num_windows */ & (1 << (7 - i))); - bit_offset++; - - if (bit_offset == offset_limit) - break; - } - extraBit = (bit_offset % 8); - - for (i = 1; i < 1 /* num_windows */; i++) { - /* window_upper_left_corner_x: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* window_upper_left_corner_y: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* window_lower_right_corner_x: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* window_lower_right_corner_y: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* center_of_ellipse_x: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* center_of_ellipse_y: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* rotation_angle: 8bit */ - bit_offset += 8; - extraBit = (bit_offset % 8); - - /* semimajor_axis_internal_ellipse: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* semimajor_axis_external_ellipse: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* semiminor_axis_external_ellipse: 16bit */ - bit_offset += 16; - extraBit = (bit_offset % 8); - - /* overlap_process_option: 1bit */ - bit_offset += 1; - extraBit = (bit_offset % 8); - } - - /* targeted_system_display_maximum_luminance: 27bit */ - offset_limit = bit_offset + 27; - - tempBuffer = pHDRDynamicInfo->data.display_maximum_luminance << (5 - extraBit); - for (i = 0; i < 4; i++) { - memcpy((char *)&buffer + i, (char *)&tempBuffer + (3 - i), sizeof(char)); - } - - for (i = 0; i < 4; i++) { - for (j = extraBit; j < 8; j++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + i) & (1 << (7 - j))); - bit_offset++; - - if (bit_offset == offset_limit) - break; - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - - /* targeted_system_display_actual_peak_luminance_flag: 1bit (always 0) */ - bit_offset += 1; - extraBit = (bit_offset % 8); - - /* NOTE: These info would not set because targeted_system_display_actual_peak_luminance_flag is always 0 - * - num_rows_targeted_system_display_actual_peak_luminance: 5bit - * - num_cols_targeted_system_display_actual_peak_luminance: 5bit - * - targeted_system_display_actual_peak_luminance: 4bit - */ - - /* maxscl: 17bit */ - for (i = 0; i < 3; i++) { - offset_limit = bit_offset + 17; - - tempBuffer = pHDRDynamicInfo->data.maxscl[i] << (15 - extraBit); - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < 3; j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) - break; - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - } - - /* average_maxrgb: 17bit */ - bit_offset += 17; - extraBit = (bit_offset % 8); - - /* num_distribution_maxrgb_percentiles: 4bit */ - offset_limit = bit_offset + 4; - - tempBuffer = pHDRDynamicInfo->data.num_maxrgb_percentiles << (4 - extraBit); - - for (i = extraBit; i < 8; i++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&tempBuffer) & (1 << (7 - i))); - bit_offset++; - - if (bit_offset == offset_limit) - break; - } - extraBit = (bit_offset % 8); - tempBuffer = 0; - - for (i = 0; i < pHDRDynamicInfo->data.num_maxrgb_percentiles; i++) { - /* distribution_maxrgb_percentaged: 7bit */ - offset_limit = bit_offset + 7; - - if (extraBit > 1) - extraByte = 1; - - tempBuffer = pHDRDynamicInfo->data.maxrgb_percentages[i]; - tempBuffer = tempBuffer << (25 - extraBit); - - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < (1 + extraByte); j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - extraByte = 0; - - /* distribution_maxrgb_percentiles: 17bit */ - offset_limit = bit_offset + 17; - - tempBuffer = pHDRDynamicInfo->data.maxrgb_percentiles[i] << (15 - extraBit); - - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < 3; j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - } - - /* fraction_bright_pixels: 10bit */ - bit_offset += 10; - extraBit = (bit_offset % 8); - - /* mastering_display_actual_peak_luminance_flag: 1bit */ - bit_offset += 1; - extraBit = (bit_offset % 8); - - /* NOTE: These infos would not be set because mastering_display_actual_peak_luminance_flag is always 0. - * - num_rows_mastering_display_actual_peak_luminance: 5bit - * - num_cols_mastering_display_actual_peak_luminance: 5bit - * - mastering_display_actual_peak_luminance: 4bit - */ - - /* tone_mapping_flag: 1bit */ - if (pHDRDynamicInfo->data.tone_mapping.tone_mapping_flag) { - *((char *)pBlob + (bit_offset / 8)) |= (1 << (7 - extraBit)); - } - bit_offset += 1; - extraBit = (bit_offset % 8); - - if (pHDRDynamicInfo->data.tone_mapping.tone_mapping_flag) { - /* knee_point_x: 12bit */ - if (extraBit > 4) - extraByte = 1; - - offset_limit = bit_offset + 12; - - tempBuffer = pHDRDynamicInfo->data.tone_mapping.knee_point_x; - tempBuffer = tempBuffer << (20 - extraBit); - - for (i = 0; i < 4; i++) { - memcpy((char *)&buffer + i, (char *)&tempBuffer + (3 - i), sizeof(char)); - } - - for (i = 0; i < (2 + extraByte); i++) { - for (j = extraBit; j < 8; j++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + i) & (1 << (7 - j))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - extraByte = 0; - - /* knee_point_y: 12bit */ - if (extraBit > 4) - extraByte = 1; - - offset_limit = bit_offset + 12; - - tempBuffer = pHDRDynamicInfo->data.tone_mapping.knee_point_y; - tempBuffer = tempBuffer << (20 - extraBit); - - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < (2 + extraByte); j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - extraByte = 0; - - /* num_bezier_curve_anchors: 4bit */ - if (extraBit > 4) - extraByte = 1; - - offset_limit = bit_offset + 4; - - tempBuffer = pHDRDynamicInfo->data.tone_mapping.num_bezier_curve_anchors; - tempBuffer = tempBuffer << (28 - extraBit); - - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < (1 + extraByte); j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - extraByte = 0; - - for (i = 0; i < pHDRDynamicInfo->data.tone_mapping.num_bezier_curve_anchors; i++) { - /* bezier_curve_anchors: 10bit */ - if (extraBit > 6) - extraByte = 1; - - offset_limit = bit_offset + 10; - - tempBuffer = pHDRDynamicInfo->data.tone_mapping.bezier_curve_anchors[i]; - tempBuffer = tempBuffer << (22 - extraBit); - - for (j = 0; j < 4; j++) { - memcpy((char *)&buffer + j, (char *)&tempBuffer + (3 - j), sizeof(char)); - } - - for (j = 0; j < (2 + extraByte); j++) { - for (k = extraBit; k < 8; k++) { - *((char *)pBlob + (bit_offset / 8)) |= (*((char *)&buffer + j) & (1 << (7 - k))); - bit_offset++; - - if (bit_offset == offset_limit) { - break; - } - } - extraBit = (bit_offset % 8); - } - buffer = 0; - tempBuffer = 0; - extraByte = 0; - } - } - - /* color_saturation_mapping_flag: 1bit */ - bit_offset += 1; - extraBit = (bit_offset % 8); - - /* NOTE: This info would not be set because color_saturation_mapping_flag is always 0. - * - color_saturation_weight: 6bit - */ -#endif // USE_FULL_ST2094_40 if(extraBit > 0) { size = (bit_offset / 8) + 1; |