Revert "Change 'JxlEncoderOptions' to 'JxlEncoderFrameSettings'" 60/289260/3 accepted/tizen/unified/20230307.163823
authorjiyong.min <jiyong.min@samsung.com>
Fri, 3 Mar 2023 09:26:54 +0000 (18:26 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Sun, 5 Mar 2023 23:26:49 +0000 (08:26 +0900)
This reverts commit f2a83867f53c21f7c1c65d594b23d8a23880937a.

- The libjxl contains the highway library to use hardware accelerator.
  Due to the highway library does not support armv8, TV can't use the libjxl.
  The software method is under developement, and it is still unstable.
  So we revert the highway, the libjxl and this change.

Change-Id: Ia7a0a836e9ad009a7e166c31ca60116c13d60e15

jxl/mm_util_jxl.c
packaging/libmm-utility.spec

index 29d3603..9a49ecc 100644 (file)
@@ -111,53 +111,20 @@ static size_t __get_encoding_threads_configuration(void)
        return (size_t)(num_of_encoding_threads = mm_util_ini_get_int(INI_CATEGORY_JPEG_XL, INI_ITEM_NUM_OF_ENCODING_TRHEADS, DEFAULT_THREAD));
 }
 
-static int __set_basic_info_from_pixel_format(JxlBasicInfo *basic_info, const JxlPixelFormat *pixel_format)
+static int __get_decoded_data(mm_util_image_h decoded, uint32_t *width, uint32_t *height, JxlPixelFormat *format, uint8_t **pixels, size_t *pixels_size)
 {
-       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;
+       mm_image_info_s *_image = (mm_image_info_s *)decoded;
 
        mm_util_retvm_if(!mm_image_is_valid_image(decoded), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid decoded");
-       mm_util_retvm_if((mm_image->color != MM_UTIL_COLOR_RGB24) && (mm_image->color != MM_UTIL_COLOR_RGBA),
-                               MM_UTIL_ERROR_INVALID_PARAMETER, "invalid format %d", mm_image->color);
-       mm_util_retvm_if(!format, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid format");
+       mm_util_retvm_if((_image->color != MM_UTIL_COLOR_RGB24) && (_image->color != MM_UTIL_COLOR_RGBA),
+                               MM_UTIL_ERROR_INVALID_PARAMETER, "invalid format %d", _image->color);
        mm_image_debug_image(decoded, "SOURCE");
 
-       basic_info->xsize = (uint32_t)mm_image->width;
-       basic_info->ysize = (uint32_t)mm_image->height;
-       *format = jxl_formats[mm_image->color];
-       *pixels = mm_image->data;
-       *pixels_size = (mm_image->size == TEMP_DATA_SIZE) ? (size_t)(mm_image->width * mm_image->height * format->num_channels) : mm_image->size;
+       *width = (uint32_t)_image->width;
+       *height = (uint32_t)_image->height;
+       *format = jxl_formats[_image->color];
+       *pixels = _image->data;
+       *pixels_size = _image->size;
 
        return MM_UTIL_ERROR_NONE;
 }
@@ -297,7 +264,7 @@ static int __mm_util_encode_jpegxl(mm_util_image_h decoded_image, mm_util_enc_op
        JxlPixelFormat jxl_format;
        JxlBasicInfo basic_info;
        JxlColorEncoding color_encoding;
-       JxlEncoderFrameSettings *frame_settings = NULL;
+       JxlEncoderOptions* options = NULL;
        uint8_t *pixels = NULL;
        size_t pixels_size = 0;
        size_t compressed_size = 64;
@@ -312,20 +279,20 @@ static int __mm_util_encode_jpegxl(mm_util_image_h decoded_image, mm_util_enc_op
 
        JxlEncoderInitBasicInfo(&basic_info);
 
-       ret = __set_basic_info_from_image(decoded_image, &basic_info,
+       ret = __get_decoded_data(decoded_image, &basic_info.xsize, &basic_info.ysize,
                                &jxl_format, &pixels, &pixels_size);
        if (ret != MM_UTIL_ERROR_NONE) {
-               mm_util_error("failed to __set_basic_info_from_image");
-               return ret;
-       }
-
-       ret = __set_basic_info_from_pixel_format(&basic_info, &jxl_format);
-       if (ret != MM_UTIL_ERROR_NONE) {
-               mm_util_error("failed to __set_basic_info_from_pixel_format");
+               mm_util_error("failed to __get_decoded_data");
                return ret;
        }
 
        basic_info.uses_original_profile = (enc_opt && enc_opt->lossless) ? JXL_TRUE : JXL_FALSE;
+       basic_info.num_color_channels = jxl_format.num_channels;
+       if (jxl_format.num_channels == 4)
+               basic_info.alpha_bits = basic_info.bits_per_sample;
+
+       mm_util_info("num_color_channels = %u, alpha_bits = %u",
+                               basic_info.num_color_channels, basic_info.alpha_bits);
 
        jxl_enc = JxlEncoderCreate(NULL);
        if (!jxl_enc) {
@@ -364,18 +331,18 @@ static int __mm_util_encode_jpegxl(mm_util_image_h decoded_image, mm_util_enc_op
                goto Exit;
        }
 
-       // set default frame_settings
-       // 'frame_settings' will be destroyed when 'JxlEncoderDestroy' is called
-       frame_settings = JxlEncoderFrameSettingsCreate(jxl_enc, NULL);
+       // set default options
+       // 'options' will be destroyed when 'JxlEncoderDestroy' is called
+       options = JxlEncoderOptionsCreate(jxl_enc, NULL);
 
-       // set lossless
-       status = JxlEncoderSetFrameLossless(frame_settings, basic_info.uses_original_profile);
+       // set lossless into options
+       status = JxlEncoderOptionsSetLossless(options, (enc_opt && enc_opt->lossless) ? JXL_TRUE : JXL_FALSE);
        if (status != JXL_ENC_SUCCESS) {
-               mm_util_error("failed to JxlEncoderSetFrameLossless(%d)", status);
+               mm_util_error("failed to JxlEncoderOptionsSetLossless(%d)", status);
                goto Exit;
        }
 
-       status = JxlEncoderAddImageFrame(frame_settings, &jxl_format, pixels, pixels_size);
+       status = JxlEncoderAddImageFrame(options, &jxl_format, pixels, pixels_size);
        if (status != JXL_ENC_SUCCESS) {
                mm_util_error("failed to JxlEncoderAddImageFrame(%d)", status);
                goto Exit;
@@ -415,9 +382,6 @@ static int __mm_util_encode_jpegxl(mm_util_image_h decoded_image, mm_util_enc_op
 
 Exit:
 
-       if (status != JXL_ENC_SUCCESS)
-               mm_util_error("JxlEncoderGetError: %d", JxlEncoderGetError(jxl_enc));
-
        g_free(compressed);
        JxlThreadParallelRunnerDestroy(jxl_thread);
        JxlEncoderDestroy(jxl_enc);
index 8978779..ae00c9c 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-utility
 Summary:    Multimedia Framework Utility Library
-Version:    0.4.12
+Version:    0.4.13
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0