diff --git a/CMakePresets.json b/CMakePresets.json index 7cceccfe00..1ab88397ad 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -14,7 +14,7 @@ "CMAKE_BUILD_TYPE": "Debug", "BUILD_SHARED_LIBS": "ON", "BUILD_TESTING" : "ON", - "ENABLE_EXPERIMENTAL_FEATURS" : "ON", + "ENABLE_EXPERIMENTAL_FEATURES" : "ON", "ENABLE_PLUGIN_LOADING" : "OFF", "WITH_AOM_DECODER" : "ON", diff --git a/README.md b/README.md index 6f1b1b14b1..876f22cb14 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ Further options are: Note that header compression is not widely supported yet. * `WITH_LIBSHARPYUV`: enables high-quality YCbCr/RGB color space conversion algorithms (requires `libsharpyuv`, e.g. from the `third-party` directory). -* `ENABLE_EXPERIMENTAL_FEATURS`: enables functions that are currently in development and for which the API is not stable yet. +* `ENABLE_EXPERIMENTAL_FEATURES`: enables functions that are currently in development and for which the API is not stable yet. When this is enabled, a header `heif_experimental.h` will be installed that contains this unstable API. Distributions that rely on a stable API should not enable this. * `ENABLE_MULTITHREADING_SUPPORT`: can be used to disable any multithreading support, e.g. for embedded platforms. diff --git a/examples/heif_enc.cc b/examples/heif_enc.cc index a5678755db..c0bc1975dc 100644 --- a/examples/heif_enc.cc +++ b/examples/heif_enc.cc @@ -210,7 +210,7 @@ void show_help(const char* argv0) << " --tiled-image-height # override image height of tiled image\n" << " --tiled-input-x-y usually, the first number in the input tile filename should be the y position.\n" << " With this option, this can be swapped so that the first number is x, the second number y.\n" -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES << " --tiling-method METHOD choose one of these methods: grid, tili, unci. The default is 'grid'.\n" << " --add-pyramid-group when several images are given, put them into a multi-resolution pyramid group.\n" #endif @@ -749,7 +749,7 @@ heif_image_handle* encode_tiled(heif_context* ctx, heif_encoder* encoder, heif_e return nullptr; } } -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES else if (tiling_method == "tili") { heif_tiled_image_parameters tiled_params{}; tiled_params.version = 1; @@ -974,7 +974,7 @@ int main(int argc, char** argv) case OPTION_TILING_METHOD: tiling_method = optarg; if (tiling_method != "grid" -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES && tiling_method != "tili" && tiling_method != "unci" #endif ) { @@ -1393,7 +1393,7 @@ int main(int argc, char** argv) heif_image_handle_release(primary_image_handle); } -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES if (add_pyramid_group && encoded_image_ids.size() > 1) { error = heif_context_add_pyramid_entity_group(context.get(), encoded_image_ids.data(), encoded_image_ids.size(), nullptr); if (error.code) { diff --git a/libheif/CMakeLists.txt b/libheif/CMakeLists.txt index 4530e93705..194c445586 100644 --- a/libheif/CMakeLists.txt +++ b/libheif/CMakeLists.txt @@ -129,14 +129,14 @@ if (ENABLE_PLUGIN_LOADING) endif () endif () -option(ENABLE_EXPERIMENTAL_FEATURS "Compile experimental features and install headers with unstable API" OFF) -if (ENABLE_EXPERIMENTAL_FEATURS) +option(ENABLE_EXPERIMENTAL_FEATURES "Compile experimental features and install headers with unstable API" OFF) +if (ENABLE_EXPERIMENTAL_FEATURES) list(APPEND libheif_sources api/libheif/heif_experimental.h api/libheif/heif_experimental.cc) list(APPEND libheif_headers api/libheif/heif_experimental.h) - target_compile_definitions(heif PUBLIC ENABLE_EXPERIMENTAL_FEATURS) + target_compile_definitions(heif PUBLIC ENABLE_EXPERIMENTAL_FEATURES) endif() # Needed to find libheif/heif_version.h while compiling the library diff --git a/libheif/api/libheif/heif_experimental.h b/libheif/api/libheif/heif_experimental.h index 3f42f21f0c..9f525f5d44 100644 --- a/libheif/api/libheif/heif_experimental.h +++ b/libheif/api/libheif/heif_experimental.h @@ -27,7 +27,7 @@ extern "C" { #endif -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES /* =================================================================================== * This file contains candidate APIs that did not make it into the public API yet. @@ -137,7 +137,7 @@ struct heif_tiled_image_parameters { uint8_t tiles_are_sequential; // TODO: can we derive this automatically }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES LIBHEIF_API struct heif_error heif_context_add_tiled_image(struct heif_context* ctx, const struct heif_tiled_image_parameters* parameters, @@ -164,7 +164,7 @@ struct heif_unci_image_parameters { // TODO: interleave type, padding }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES LIBHEIF_API struct heif_error heif_context_add_unci_image(struct heif_context* ctx, const struct heif_unci_image_parameters* parameters, @@ -182,7 +182,7 @@ struct heif_pyramid_layer_info { uint32_t tiles_in_layer_column; }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES // The input images are automatically sorted according to resolution. You can provide them in any order. LIBHEIF_API struct heif_error heif_context_add_pyramid_entity_group(struct heif_context* ctx, @@ -208,7 +208,7 @@ enum heif_channel_datatype heif_channel_datatype_complex_number = 4 }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES LIBHEIF_API struct heif_error heif_image_add_channel(struct heif_image* image, enum heif_channel channel, @@ -232,7 +232,7 @@ struct heif_complex64 { double real, imaginary; }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES LIBHEIF_API enum heif_channel_datatype heif_image_get_datatype(const struct heif_image* img, enum heif_channel channel); @@ -359,7 +359,7 @@ struct heif_tai_clock_info }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES int heif_is_tai_clock_info_drift_rate_undefined(int32_t drift_rate); @@ -391,7 +391,7 @@ struct heif_tai_timestamp_packet uint8_t timestamp_is_modified; // bool }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES // Creates a new TAI timestamp property if one doesn't already exist for itemId. // Creates a new clock info property if one doesn't already exist for itemId. diff --git a/libheif/api/libheif/heif_properties.cc b/libheif/api/libheif/heif_properties.cc index 2977384a72..5040f81b00 100644 --- a/libheif/api/libheif/heif_properties.cc +++ b/libheif/api/libheif/heif_properties.cc @@ -359,7 +359,7 @@ struct heif_error find_property(const struct heif_context* context, } -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES const uint64_t heif_tai_clock_info_unknown_time_uncertainty = 0xFFFFFFFFFFFFFFFF; const uint64_t heif_unknown_tai_timestamp = 0xFFFFFFFFFFFFFFFF; const int32_t heif_tai_clock_info_unknown_drift_rate = 0x7FFFFFFF; diff --git a/libheif/box.cc b/libheif/box.cc index dc7b440596..f2064235e9 100644 --- a/libheif/box.cc +++ b/libheif/box.cc @@ -660,11 +660,6 @@ Error Box::read(BitstreamRange& range, std::shared_ptr* result, const heif_ box = std::make_shared(); break; -#if ENABLE_EXPERIMENTAL_FEATURS - case fourcc("tilC"): - box = std::make_shared(); - break; -#endif // --- mski @@ -672,7 +667,7 @@ Error Box::read(BitstreamRange& range, std::shared_ptr* result, const heif_ box = std::make_shared(); break; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES // --- TAI timestamps case fourcc("itai"): @@ -690,7 +685,7 @@ Error Box::read(BitstreamRange& range, std::shared_ptr* result, const heif_ box = std::make_shared(); break; -#if WITH_EXPERIMENTAL_FEATURES +#if ENABLE_EXPERIMENTAL_FEATURES case fourcc("tilC"): box = std::make_shared(); break; @@ -4580,7 +4575,7 @@ Error Box_cmex::write(StreamWriter& writer) const } -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES std::string Box_taic::dump(Indent& indent) const { std::ostringstream sstr; sstr << Box::dump(indent); diff --git a/libheif/box.h b/libheif/box.h index 220062563f..84aef8dc03 100644 --- a/libheif/box.h +++ b/libheif/box.h @@ -1550,7 +1550,7 @@ class Box_udes : public FullBox }; -#if ENABLE_EXPERIMENTAL_FEATURS +#if ENABLE_EXPERIMENTAL_FEATURES class Box_taic : public FullBox { public: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1aa35e7448..890ba84409 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,7 +36,7 @@ else() add_libheif_test(file_layout) endif() -if (WITH_EXPERIMENTAL_FEATURS AND WITH_REDUCED_VISIBILITY) +if (ENABLE_EXPERIMENTAL_FEATURES AND WITH_REDUCED_VISIBILITY) add_libheif_test(pixel_data_types) endif()