Skip to content

Commit

Permalink
Modify few default encoding configurations
Browse files Browse the repository at this point in the history
By default gainmap scale factor is set to 1, multi-channel gainmap
encoding is enabled.

Also removed an alias variable

fixes google#246

Test: ./ultrahdr_unit_test
  • Loading branch information
ram-mohan committed Sep 6, 2024
1 parent 68ce76a commit 92ad1f5
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 18 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ option_if_not_defined(UHDR_BUILD_DEPS "Build deps and not use pre-installed pack
option_if_not_defined(UHDR_ENABLE_LOGS "Build with verbose logging " FALSE)
option_if_not_defined(UHDR_ENABLE_INSTALL "Enable install and uninstall targets for libuhdr package " TRUE)
option_if_not_defined(UHDR_ENABLE_INTRINSICS "Build with SIMD acceleration " TRUE)
option_if_not_defined(UHDR_ENABLE_GLES "Build with GPU acceleration " TRUE)
option_if_not_defined(UHDR_ENABLE_GLES "Build with GPU acceleration " FALSE)
option_if_not_defined(UHDR_BUILD_JAVA "Build JNI wrapper and Java front-end classes " FALSE)

# pre-requisites
Expand Down
12 changes: 6 additions & 6 deletions examples/ultrahdr_app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,8 @@ class UltraHdrAppInput {
uhdr_color_transfer_t hdrTf = UHDR_CT_HLG, int quality = 95,
uhdr_color_transfer_t oTf = UHDR_CT_HLG,
uhdr_img_fmt_t oFmt = UHDR_IMG_FMT_32bppRGBA1010102, bool isHdrCrFull = false,
int gainmapScaleFactor = 4, int gainmapQuality = 85,
bool enableMultiChannelGainMap = false, float gamma = 1.0f,
int gainmapScaleFactor = 1, int gainmapQuality = 85,
bool enableMultiChannelGainMap = true, float gamma = 1.0f,
bool enableGLES = false, uhdr_enc_preset_t encPreset = UHDR_USAGE_REALTIME,
float minContentBoost = FLT_MIN, float maxContentBoost = FLT_MAX)
: mHdrIntentRawFile(hdrIntentRawFile),
Expand Down Expand Up @@ -311,9 +311,9 @@ class UltraHdrAppInput {
mOTf(oTf),
mOfmt(oFmt),
mFullRange(UHDR_CR_UNSPECIFIED),
mMapDimensionScaleFactor(4),
mMapDimensionScaleFactor(1),
mMapCompressQuality(85),
mUseMultiChannelGainMap(false),
mUseMultiChannelGainMap(true),
mGamma(1.0f),
mEnableGLES(enableGLES),
mEncPreset(UHDR_USAGE_REALTIME),
Expand Down Expand Up @@ -1474,8 +1474,8 @@ int main(int argc, char* argv[]) {
uhdr_color_transfer_t out_tf = UHDR_CT_HLG;
uhdr_img_fmt_t out_cf = UHDR_IMG_FMT_32bppRGBA1010102;
int mode = -1;
int gainmap_scale_factor = 4;
bool use_multi_channel_gainmap = false;
int gainmap_scale_factor = 1;
bool use_multi_channel_gainmap = true;
bool use_full_range_color_hdr = false;
int gainmap_compression_quality = 85;
int compute_psnr = 0;
Expand Down
4 changes: 2 additions & 2 deletions java/com/google/media/codecs/ultrahdr/UltraHDREncoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ public void setQualityFactor(int qualityFactor, int intent) throws IOException {
}

/**
* Enable/Disable multi-channel gainmap. By default, single channel gainmap is enabled.
* Enable/Disable multi-channel gainmap. By default, multi-channel gainmap is enabled.
*
* @param enable if true, multi-channel gainmap is enabled, else, single-channel gainmap is
* enabled
Expand All @@ -345,7 +345,7 @@ public void setMultiChannelGainMapEncoding(boolean enable) throws IOException {
* image instead of full resolution. This setting controls the factor by which the renditions
* are downscaled. For instance, gain_map_scale_factor = 2 implies gainmap_image_width =
* primary_image_width / 2 and gainmap image height = primary_image_height / 2.
* Default gain map scaling factor is 4.
* Default gain map scaling factor is 1.
*
* @param scaleFactor gain map scale factor. Any integer in range (0, 128]
* @throws IOException If parameters are not valid or current encoder instance is not valid
Expand Down
14 changes: 8 additions & 6 deletions lib/include/ultrahdr/jpegr.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,21 @@
namespace ultrahdr {

// Default configurations
// Map is quarter res / sixteenth size
static const size_t kMapDimensionScaleFactorDefault = 4;
// gainmap image downscale factor
static const size_t kMapDimensionScaleFactorDefault = 1;
static const size_t kMapDimensionScaleFactorAndroidDefault = 4;

// JPEG compress quality (0 ~ 100) for gain map
static const int kMapCompressQualityDefault = 85;

// Gain map calculation
static const bool kUseMultiChannelGainMapDefault = false;
static const bool kUseMultiChannelGainMapDefault = true;
static const bool kUseMultiChannelGainMapAndroidDefault = false;

// Default gamma value for gain map
static const float kGainMapGammaDefault = 1.0f;

// The current JPEGR version that we encode to
static const char* const kGainMapVersion = "1.0";
static const char* const kJpegrVersion = "1.0";

/*
Expand Down Expand Up @@ -74,9 +76,9 @@ typedef struct jpegr_info_struct* jr_info_ptr;
class JpegR {
public:
JpegR(void* uhdrGLESCtxt = nullptr,
size_t mapDimensionScaleFactor = kMapDimensionScaleFactorDefault,
size_t mapDimensionScaleFactor = kMapDimensionScaleFactorAndroidDefault,
int mapCompressQuality = kMapCompressQualityDefault,
bool useMultiChannelGainMap = kUseMultiChannelGainMapDefault,
bool useMultiChannelGainMap = kUseMultiChannelGainMapAndroidDefault,
float gamma = kGainMapGammaDefault, uhdr_enc_preset_t preset = UHDR_USAGE_REALTIME,
float minContentBoost = FLT_MIN, float maxContentBoost = FLT_MAX);

Expand Down
2 changes: 1 addition & 1 deletion lib/src/gainmapmetadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ uhdr_error_info_t uhdr_gainmap_metadata_frac::gainmapMetadataFractionToFloat(
UHDR_CHECK_NON_ZERO(from->baseOffsetD[i], "baseOffset denominator");
UHDR_CHECK_NON_ZERO(from->alternateOffsetD[i], "alternateOffset denominator");
}
to->version = kGainMapVersion;
to->version = kJpegrVersion;
to->max_content_boost = (float)from->gainMapMaxN[0] / from->gainMapMaxD[0];
to->min_content_boost = (float)from->gainMapMinN[0] / from->gainMapMinD[0];
to->gamma = (float)from->gainMapGammaN[0] / from->gainMapGammaD[0];
Expand Down
20 changes: 20 additions & 0 deletions tests/jpegr_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1474,6 +1474,10 @@ TEST_P(JpegRAPIEncodeAndDecodeTest, EncodeAPI0AndDecodeTest) {
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_quality(obj, kQuality, UHDR_BASE_IMG);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_using_multi_channel_gainmap(obj, false);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_gainmap_scale_factor(obj, 4);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_encode(obj);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
uhdr_compressed_image_t* compressedImage = uhdr_get_encoded_stream(obj);
Expand Down Expand Up @@ -1536,6 +1540,10 @@ TEST_P(JpegRAPIEncodeAndDecodeTest, EncodeAPI0AndDecodeTest) {
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_quality(obj, kQuality, UHDR_BASE_IMG);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_using_multi_channel_gainmap(obj, false);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_gainmap_scale_factor(obj, 4);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_encode(obj);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
uhdr_compressed_image_t* compressedImage = uhdr_get_encoded_stream(obj);
Expand Down Expand Up @@ -1754,6 +1762,10 @@ TEST_P(JpegRAPIEncodeAndDecodeTest, EncodeAPI1AndDecodeTest) {

status = uhdr_enc_set_quality(obj, kQuality, UHDR_BASE_IMG);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_using_multi_channel_gainmap(obj, false);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_gainmap_scale_factor(obj, 4);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_encode(obj);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
uhdr_compressed_image_t* compressedImage = uhdr_get_encoded_stream(obj);
Expand Down Expand Up @@ -1970,6 +1982,10 @@ TEST_P(JpegRAPIEncodeAndDecodeTest, EncodeAPI2AndDecodeTest) {

status = uhdr_enc_set_quality(obj, kQuality, UHDR_BASE_IMG);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_using_multi_channel_gainmap(obj, false);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_gainmap_scale_factor(obj, 4);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_encode(obj);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
uhdr_compressed_image_t* compressedImage = uhdr_get_encoded_stream(obj);
Expand Down Expand Up @@ -2131,6 +2147,10 @@ TEST_P(JpegRAPIEncodeAndDecodeTest, EncodeAPI3AndDecodeTest) {

status = uhdr_enc_set_quality(obj, kQuality, UHDR_BASE_IMG);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_using_multi_channel_gainmap(obj, false);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_enc_set_gainmap_scale_factor(obj, 4);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
status = uhdr_encode(obj);
ASSERT_EQ(UHDR_CODEC_OK, status.error_code) << status.detail;
uhdr_compressed_image_t* compressedImage = uhdr_get_encoded_stream(obj);
Expand Down
4 changes: 2 additions & 2 deletions ultrahdr_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ UHDR_EXTERN uhdr_error_info_t uhdr_enc_set_quality(uhdr_codec_private_t* enc, in
UHDR_EXTERN uhdr_error_info_t uhdr_enc_set_exif_data(uhdr_codec_private_t* enc,
uhdr_mem_block_t* exif);

/*!\brief Enable/Disable multi-channel gainmap. By default single-channel gainmap is enabled.
/*!\brief Enable/Disable multi-channel gainmap. By default multi-channel gainmap is enabled.
*
* \param[in] enc encoder instance.
* \param[in] use_multi_channel_gainmap enable/disable multichannel gain map.
Expand All @@ -363,7 +363,7 @@ uhdr_enc_set_using_multi_channel_gainmap(uhdr_codec_private_t* enc, int use_mult
* image instead of full resolution. This setting controls the factor by which the renditions are
* downscaled. For instance, gain_map_scale_factor = 2 implies gainmap_image_width =
* primary_image_width / 2 and gainmap image height = primary_image_height / 2.
* Default gain map scaling factor is 4.
* Default gain map scaling factor is 1.
* NOTE: This has no effect on base image rendition. Base image is signalled in full resolution
* always.
*
Expand Down

0 comments on commit 92ad1f5

Please sign in to comment.