+ mm_util_retvm_if(!basic_info, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid basic_info");
+ mm_util_retvm_if(!pixel_format, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid pixel_format");
+
+ switch (pixel_format->data_type) {
+ case JXL_TYPE_UINT8:
+ basic_info->bits_per_sample = 8;
+ basic_info->exponent_bits_per_sample = 0;
+ break;
+ default:
+ mm_util_error("not supported data_type(%d)", pixel_format->data_type);
+ return MM_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ basic_info->num_color_channels = (pixel_format->num_channels < 3) ? 1 : 3;
+ if (pixel_format->num_channels == 2 || pixel_format->num_channels == 4) {
+ basic_info->alpha_exponent_bits = basic_info->exponent_bits_per_sample;
+ basic_info->alpha_bits = basic_info->bits_per_sample;
+ basic_info->num_extra_channels = 1;
+ } else {
+ basic_info->alpha_exponent_bits = 0;
+ basic_info->alpha_bits = 0;
+ }
+
+ mm_util_info("bits_per_sample = %u, exponent_bits_per_sample = %u, num_color_channels = %u, alpha_exponent_bits = %u, alpha_bits = %u, num_extra_channels = %u",
+ basic_info->bits_per_sample, basic_info->exponent_bits_per_sample, basic_info->num_color_channels,
+ basic_info->alpha_exponent_bits, basic_info->alpha_bits, basic_info->num_extra_channels);
+
+ return MM_UTIL_ERROR_NONE;
+}
+
+static int __set_basic_info_from_image(mm_util_image_h decoded, JxlBasicInfo *basic_info, JxlPixelFormat *format, uint8_t **pixels, size_t *pixels_size)
+{
+ mm_image_info_s *mm_image = (mm_image_info_s *)decoded;