pylibheif 1.21.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pylibheif-1.21.2/.github/workflows/build.yml +105 -0
- pylibheif-1.21.2/.gitignore +41 -0
- pylibheif-1.21.2/.gitmodules +3 -0
- pylibheif-1.21.2/.python-version +1 -0
- pylibheif-1.21.2/CMakeLists.txt +51 -0
- pylibheif-1.21.2/PKG-INFO +239 -0
- pylibheif-1.21.2/README.md +212 -0
- pylibheif-1.21.2/images/test.heic +0 -0
- pylibheif-1.21.2/pyproject.toml +54 -0
- pylibheif-1.21.2/src/common.hpp +26 -0
- pylibheif-1.21.2/src/context.cpp +49 -0
- pylibheif-1.21.2/src/context.hpp +33 -0
- pylibheif-1.21.2/src/encoder.cpp +29 -0
- pylibheif-1.21.2/src/encoder.hpp +27 -0
- pylibheif-1.21.2/src/image.cpp +138 -0
- pylibheif-1.21.2/src/image.hpp +54 -0
- pylibheif-1.21.2/src/main.cpp +136 -0
- pylibheif-1.21.2/tests/test_pylibheif.py +531 -0
- pylibheif-1.21.2/third_party/libheif/.clang-tidy +13 -0
- pylibheif-1.21.2/third_party/libheif/.github/FUNDING.yml +13 -0
- pylibheif-1.21.2/third_party/libheif/.github/dependabot.yml +6 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/build.yml +39 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/cifuzz.yml +24 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/clang.yml +67 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/coverity.yml +58 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/diagram.yml +16 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/emscripten.yml +27 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/fuzzer.yml +31 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/gcc-versions.yml +39 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/go.yml +38 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/lint.yml +46 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/mingw.yml +31 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/osx.yml +33 -0
- pylibheif-1.21.2/third_party/libheif/.github/workflows/test.yml +30 -0
- pylibheif-1.21.2/third_party/libheif/.gitignore +11 -0
- pylibheif-1.21.2/third_party/libheif/CMakeLists.txt +677 -0
- pylibheif-1.21.2/third_party/libheif/CMakePresets.json +195 -0
- pylibheif-1.21.2/third_party/libheif/COPYING +871 -0
- pylibheif-1.21.2/third_party/libheif/CPPLINT.cfg +2 -0
- pylibheif-1.21.2/third_party/libheif/README.md +432 -0
- pylibheif-1.21.2/third_party/libheif/appveyor.yml +40 -0
- pylibheif-1.21.2/third_party/libheif/build-emscripten.sh +202 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindAOM.cmake +53 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindBrotli.cmake +26 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindDAV1D.cmake +24 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindFFMPEG.cmake +198 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindLIBDE265.cmake +38 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindOPENJPH.cmake +33 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindOpenH264.cmake +26 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindRAV1E.cmake +24 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindSvtEnc.cmake +24 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindUVG266.cmake +24 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindX264.cmake +38 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/FindX265.cmake +38 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/Findkvazaar.cmake +36 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/Findlibsharpyuv.cmake +25 -0
- pylibheif-1.21.2/third_party/libheif/cmake/modules/LibFindMacros.cmake +269 -0
- pylibheif-1.21.2/third_party/libheif/examples/CMakeLists.txt +133 -0
- pylibheif-1.21.2/third_party/libheif/examples/COPYING +20 -0
- pylibheif-1.21.2/third_party/libheif/examples/SAI_datafile.cc +238 -0
- pylibheif-1.21.2/third_party/libheif/examples/SAI_datafile.h +54 -0
- pylibheif-1.21.2/third_party/libheif/examples/benchmark.cc +99 -0
- pylibheif-1.21.2/third_party/libheif/examples/benchmark.h +32 -0
- pylibheif-1.21.2/third_party/libheif/examples/common.cc +151 -0
- pylibheif-1.21.2/third_party/libheif/examples/common.h +47 -0
- pylibheif-1.21.2/third_party/libheif/examples/demo.html +364 -0
- pylibheif-1.21.2/third_party/libheif/examples/example.avif +0 -0
- pylibheif-1.21.2/third_party/libheif/examples/example.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif-dec.1 +38 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif-enc.1 +82 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif-info.1 +39 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif-test.go +172 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif-thumbnailer.1 +33 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_dec.cc +1090 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_enc.cc +2453 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_info.cc +958 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_test.cc +175 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_thumbnailer.cc +224 -0
- pylibheif-1.21.2/third_party/libheif/examples/heif_view.cc +465 -0
- pylibheif-1.21.2/third_party/libheif/examples/sdl.cc +302 -0
- pylibheif-1.21.2/third_party/libheif/examples/sdl.hh +82 -0
- pylibheif-1.21.2/third_party/libheif/examples/test_c_api.c +36 -0
- pylibheif-1.21.2/third_party/libheif/examples/utf8.manifest +8 -0
- pylibheif-1.21.2/third_party/libheif/examples/utf8.rc +3 -0
- pylibheif-1.21.2/third_party/libheif/extra/getopt.c +155 -0
- pylibheif-1.21.2/third_party/libheif/extra/getopt.h +65 -0
- pylibheif-1.21.2/third_party/libheif/extra/getopt_long.c +224 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/CMakeLists.txt +14 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/box_fuzzer.cc +54 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/color_conversion_fuzzer.cc +281 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clap-overflow-divide-zero.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-color-conversion-fuzzer-6275694804467712 +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-4616081830051840.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5120279175102464.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5643900194127872.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5651556035198976.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5662360964956160.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5671864958976000.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5686319331672064.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5718632116518912.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5720856641142784.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5724458239655936.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5732616832024576.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5752063708495872.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-5757633845264384.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/clusterfuzz-testcase-minimized-file-fuzzer-6045213633282048.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/colors-no-alpha-thumbnail.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/colors-no-alpha.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/colors-with-alpha-thumbnail.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/colors-with-alpha.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/crash-20ca2625096a205937b809a7841e7f019f0b2dc6.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_138.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_15.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_20.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_367_1.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_367_2.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_44.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_45.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_46_1.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_46_2.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_47.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_48.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_49.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/github_50.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/hbo_heif_context.h_126_1.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/j2k-siz-segment-undersized.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/region-mask-missing-refs.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_brotli.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_defl.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_tile_deflate.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_zlib.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_zlib_rows.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/rgb_generic_compressed_zlib_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uaf_heif_context.h_117_1.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_ABGR.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_ABGR_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_B16R16G16.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_B16R16G16_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_M.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_M_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_R5G6B5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_R7+1G7+1B7+1_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_R7G7+1B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_R7G7B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_RGB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_RGB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_RGB_tiled_row_tile_align.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_RGxB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_RGxB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_VUY_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_VUY_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_Y16U16V16_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_Y16U16V16_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_YUV_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_YUV_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_YUV_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_YVU_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_comp_YVU_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_VUY_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_VUY_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_Y16U16V16_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_Y16U16V16_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_YUV_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_YUV_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_YVU_420.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_mix_YVU_422.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_ABGR.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_ABGR_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_B16R16G16.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_B16R16G16_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_M.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_M_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R5G6B5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R7+1G7+1B7+1_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R7G7+1B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R7G7B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R8G8B8A8_bsz0_psz10_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R8G8B8A8_bsz0_psz5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R8G8B8_bsz0_psz10_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_R8G8B8_bsz0_psz5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_RGB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_RGB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_RGB_tiled_row_tile_align.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_RGxB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_RGxB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_pix_YUV_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_ABGR.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_ABGR_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_B16R16G16.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_B16R16G16_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_M.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_M_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_R5G6B5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_R7+1G7+1B7+1_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_R7G7+1B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_R7G7B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_RGB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_RGB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_RGB_tiled_row_tile_align.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_RGxB.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_RGxB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_row_YUV_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_ABGR_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_B16R16G16_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_M_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_R5G6B5_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_R7+1G7+1B7+1_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_R7G7+1B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_R7G7B7_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_RGB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_RGB_tiled_row_tile_align.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_RGxB_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/corpus/uncompressed_tile_YUV_tiled.heic +0 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/data/dictionary.txt +48 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/encoder_fuzzer.cc +199 -0
- pylibheif-1.21.2/third_party/libheif/fuzzing/file_fuzzer.cc +173 -0
- pylibheif-1.21.2/third_party/libheif/gdk-pixbuf/CMakeLists.txt +21 -0
- pylibheif-1.21.2/third_party/libheif/gdk-pixbuf/pixbufloader-heif.c +240 -0
- pylibheif-1.21.2/third_party/libheif/gnome/CMakeLists.txt +3 -0
- pylibheif-1.21.2/third_party/libheif/gnome/heif.thumbnailer +4 -0
- pylibheif-1.21.2/third_party/libheif/go/heif/heif.go +1520 -0
- pylibheif-1.21.2/third_party/libheif/go/heif/heif_test.go +184 -0
- pylibheif-1.21.2/third_party/libheif/heifio/CMakeLists.txt +97 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder.h +42 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_jpeg.cc +518 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_jpeg.h +35 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_png.cc +453 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_png.h +35 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_tiff.cc +492 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_tiff.h +36 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_y4m.cc +149 -0
- pylibheif-1.21.2/third_party/libheif/heifio/decoder_y4m.h +43 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder.cc +98 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder.h +65 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_jpeg.cc +321 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_jpeg.h +67 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_png.cc +247 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_png.h +76 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_tiff.cc +77 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_tiff.h +66 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_y4m.cc +89 -0
- pylibheif-1.21.2/third_party/libheif/heifio/encoder_y4m.h +59 -0
- pylibheif-1.21.2/third_party/libheif/heifio/exif.cc +263 -0
- pylibheif-1.21.2/third_party/libheif/heifio/exif.h +33 -0
- pylibheif-1.21.2/third_party/libheif/heifio/stubs.cc +64 -0
- pylibheif-1.21.2/third_party/libheif/libheif/CMakeLists.txt +342 -0
- pylibheif-1.21.2/third_party/libheif/libheif/Doxyfile.in +2562 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif.cc +31 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif.h +41 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_aux_images.cc +336 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_aux_images.h +182 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_brands.cc +473 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_brands.h +376 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_color.cc +573 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_color.h +363 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_context.cc +290 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_context.h +329 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_cxx.h +1390 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_decoding.cc +251 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_decoding.h +172 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_emscripten.h +604 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_encoding.cc +802 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_encoding.h +395 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_entity_groups.cc +99 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_entity_groups.h +60 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_error.h +304 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_experimental.cc +472 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_experimental.h +330 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_image.cc +419 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_image.h +355 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_image_handle.cc +177 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_image_handle.h +129 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_items.cc +377 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_items.h +260 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_library.cc +107 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_library.h +219 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_metadata.cc +252 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_metadata.h +136 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_plugin.cc +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_plugin.h +378 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_properties.cc +460 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_properties.h +235 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_regions.cc +729 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_regions.h +868 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_security.cc +67 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_security.h +107 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_sequences.cc +837 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_sequences.h +644 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_tai_timestamps.cc +273 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_tai_timestamps.h +202 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_text.cc +158 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_text.h +161 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_tiling.cc +279 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_tiling.h +137 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_uncompressed.cc +118 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_uncompressed.h +109 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api/libheif/heif_version.h.in +38 -0
- pylibheif-1.21.2/third_party/libheif/libheif/api_structs.h +114 -0
- pylibheif-1.21.2/third_party/libheif/libheif/bitstream.cc +987 -0
- pylibheif-1.21.2/third_party/libheif/libheif/bitstream.h +523 -0
- pylibheif-1.21.2/third_party/libheif/libheif/box.cc +5157 -0
- pylibheif-1.21.2/third_party/libheif/libheif/box.h +1927 -0
- pylibheif-1.21.2/third_party/libheif/libheif/brands.cc +170 -0
- pylibheif-1.21.2/third_party/libheif/libheif/brands.h +32 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_boxes.cc +461 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_boxes.h +120 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_dec.cc +62 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_dec.h +53 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_enc.cc +297 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avc_enc.h +78 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_boxes.cc +563 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_boxes.h +171 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_dec.cc +74 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_dec.h +53 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_enc.cc +216 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/avif_enc.h +75 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/decoder.cc +469 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/decoder.h +128 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/encoder.cc +168 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/encoder.h +93 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_boxes.cc +712 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_boxes.h +169 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_dec.cc +65 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_dec.h +54 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_enc.cc +303 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/hevc_enc.h +78 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_boxes.cc +518 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_boxes.h +529 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_dec.cc +84 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_dec.h +56 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_enc.cc +105 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg2000_enc.h +90 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_boxes.cc +78 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_boxes.h +66 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_dec.cc +160 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_dec.h +68 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_enc.cc +131 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/jpeg_enc.h +87 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_abstract.cc +335 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_abstract.h +222 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_component_interleave.cc +96 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_component_interleave.h +45 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_mixed_interleave.cc +132 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_mixed_interleave.h +46 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_pixel_interleave.cc +132 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_pixel_interleave.h +65 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_row_interleave.cc +116 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_row_interleave.h +49 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_tile_component_interleave.cc +131 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/decoder_tile_component_interleave.h +44 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_boxes.cc +775 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_boxes.h +383 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_codec.cc +1048 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_codec.h +105 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_dec.cc +212 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_dec.h +84 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_enc.cc +74 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_enc.h +86 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/uncompressed/unc_types.h +292 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_boxes.cc +539 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_boxes.h +121 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_dec.cc +71 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_dec.h +54 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_enc.cc +288 -0
- pylibheif-1.21.2/third_party/libheif/libheif/codecs/vvc_enc.h +79 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/alpha.cc +287 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/alpha.h +67 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/chroma_sampling.cc +950 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/chroma_sampling.h +111 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/colorconversion.cc +648 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/colorconversion.h +153 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/hdr_sdr.cc +243 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/hdr_sdr.h +66 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/monochrome.cc +283 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/monochrome.h +66 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2rgb.cc +750 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2rgb.h +143 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2yuv.cc +912 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2yuv.h +106 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2yuv_sharp.cc +281 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/rgb2yuv_sharp.h +48 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/yuv2rgb.cc +724 -0
- pylibheif-1.21.2/third_party/libheif/libheif/color-conversion/yuv2rgb.h +106 -0
- pylibheif-1.21.2/third_party/libheif/libheif/common_utils.cc +184 -0
- pylibheif-1.21.2/third_party/libheif/libheif/common_utils.h +126 -0
- pylibheif-1.21.2/third_party/libheif/libheif/compression.h +97 -0
- pylibheif-1.21.2/third_party/libheif/libheif/compression_brotli.cc +129 -0
- pylibheif-1.21.2/third_party/libheif/libheif/compression_zlib.cc +176 -0
- pylibheif-1.21.2/third_party/libheif/libheif/context.cc +2053 -0
- pylibheif-1.21.2/third_party/libheif/libheif/context.h +320 -0
- pylibheif-1.21.2/third_party/libheif/libheif/error.cc +354 -0
- pylibheif-1.21.2/third_party/libheif/libheif/error.h +177 -0
- pylibheif-1.21.2/third_party/libheif/libheif/file.cc +1292 -0
- pylibheif-1.21.2/third_party/libheif/libheif/file.h +303 -0
- pylibheif-1.21.2/third_party/libheif/libheif/file_layout.cc +268 -0
- pylibheif-1.21.2/third_party/libheif/libheif/file_layout.h +97 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/avc.cc +76 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/avc.h +63 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/avif.cc +87 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/avif.h +68 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/grid.cc +892 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/grid.h +178 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/hevc.cc +214 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/hevc.h +70 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/iden.cc +155 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/iden.h +72 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/image_item.cc +1135 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/image_item.h +491 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/jpeg.cc +86 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/jpeg.h +60 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/jpeg2000.cc +102 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/jpeg2000.h +63 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/mask_image.cc +214 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/mask_image.h +111 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/overlay.cc +482 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/overlay.h +140 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/tiled.cc +932 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/tiled.h +224 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/unc_image.cc +637 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/unc_image.h +112 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/vvc.cc +102 -0
- pylibheif-1.21.2/third_party/libheif/libheif/image-items/vvc.h +62 -0
- pylibheif-1.21.2/third_party/libheif/libheif/init.cc +449 -0
- pylibheif-1.21.2/third_party/libheif/libheif/init.h +54 -0
- pylibheif-1.21.2/third_party/libheif/libheif/logging.cc +75 -0
- pylibheif-1.21.2/third_party/libheif/libheif/logging.h +66 -0
- pylibheif-1.21.2/third_party/libheif/libheif/mdat_data.h +65 -0
- pylibheif-1.21.2/third_party/libheif/libheif/mini.cc +1033 -0
- pylibheif-1.21.2/third_party/libheif/libheif/mini.h +157 -0
- pylibheif-1.21.2/third_party/libheif/libheif/nclx.cc +510 -0
- pylibheif-1.21.2/third_party/libheif/libheif/nclx.h +226 -0
- pylibheif-1.21.2/third_party/libheif/libheif/pixelimage.cc +1879 -0
- pylibheif-1.21.2/third_party/libheif/libheif/pixelimage.h +400 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugin_registry.cc +375 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugin_registry.h +85 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/CMakeLists.txt +145 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_aom.cc +444 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_aom.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_dav1d.cc +451 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_dav1d.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_ffmpeg.cc +668 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_ffmpeg.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_jpeg.cc +448 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_jpeg.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_libde265.cc +514 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_libde265.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_openh264.cc +472 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_openh264.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_openjpeg.cc +490 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_openjpeg.h +36 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_uncompressed.cc +73 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_uncompressed.h +28 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_vvdec.cc +434 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_vvdec.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_webcodecs.cc +812 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/decoder_webcodecs.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_aom.cc +1421 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_aom.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_jpeg.cc +534 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_jpeg.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_kvazaar.cc +978 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_kvazaar.h +47 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_mask.cc +304 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_mask.h +36 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_openjpeg.cc +684 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_openjpeg.h +36 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_openjph.cc +939 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_openjph.h +37 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_rav1e.cc +883 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_rav1e.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_svt.cc +1258 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_svt.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_uncompressed.cc +370 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_uncompressed.h +55 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_uvg266.cc +939 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_uvg266.h +47 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_vvenc.cc +886 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_vvenc.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_x264.cc +1238 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_x264.h +34 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_x265.cc +1300 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/encoder_x265.h +45 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/nalu_utils.cc +97 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins/nalu_utils.h +74 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins_unix.cc +119 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins_unix.h +51 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins_windows.cc +109 -0
- pylibheif-1.21.2/third_party/libheif/libheif/plugins_windows.h +54 -0
- pylibheif-1.21.2/third_party/libheif/libheif/region.cc +625 -0
- pylibheif-1.21.2/third_party/libheif/libheif/region.h +213 -0
- pylibheif-1.21.2/third_party/libheif/libheif/security_limits.cc +254 -0
- pylibheif-1.21.2/third_party/libheif/libheif/security_limits.h +84 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/chunk.cc +114 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/chunk.h +84 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/seq_boxes.cc +2491 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/seq_boxes.h +1035 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track.cc +1155 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track.h +289 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track_metadata.cc +189 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track_metadata.h +49 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track_visual.cc +719 -0
- pylibheif-1.21.2/third_party/libheif/libheif/sequences/track_visual.h +104 -0
- pylibheif-1.21.2/third_party/libheif/libheif/text.cc +39 -0
- pylibheif-1.21.2/third_party/libheif/libheif/text.h +57 -0
- pylibheif-1.21.2/third_party/libheif/libheif.pc.in +15 -0
- pylibheif-1.21.2/third_party/libheif/logos/sponsors/shopify.svg +26 -0
- pylibheif-1.21.2/third_party/libheif/post.js +183 -0
- pylibheif-1.21.2/third_party/libheif/scripts/build-android-libs.sh +78 -0
- pylibheif-1.21.2/third_party/libheif/scripts/check-emscripten-enums.sh +76 -0
- pylibheif-1.21.2/third_party/libheif/scripts/check-go-enums.sh +76 -0
- pylibheif-1.21.2/third_party/libheif/scripts/check-gofmt.sh +49 -0
- pylibheif-1.21.2/third_party/libheif/scripts/check-licenses.sh +47 -0
- pylibheif-1.21.2/third_party/libheif/scripts/configure-fuzzer.sh +34 -0
- pylibheif-1.21.2/third_party/libheif/scripts/cpplint.py +6097 -0
- pylibheif-1.21.2/third_party/libheif/scripts/encode-all-sequences.sh +81 -0
- pylibheif-1.21.2/third_party/libheif/scripts/install-ci-linux.sh +219 -0
- pylibheif-1.21.2/third_party/libheif/scripts/install-ci-osx.sh +80 -0
- pylibheif-1.21.2/third_party/libheif/scripts/install-clang.sh +56 -0
- pylibheif-1.21.2/third_party/libheif/scripts/install-emscripten.sh +44 -0
- pylibheif-1.21.2/third_party/libheif/scripts/pre-commit.hook +105 -0
- pylibheif-1.21.2/third_party/libheif/scripts/prepare-ci.sh +50 -0
- pylibheif-1.21.2/third_party/libheif/scripts/run-ci.sh +295 -0
- pylibheif-1.21.2/third_party/libheif/scripts/test-javascript.js +44 -0
- pylibheif-1.21.2/third_party/libheif/tests/CMakeLists.txt +110 -0
- pylibheif-1.21.2/third_party/libheif/tests/avc_box.cc +84 -0
- pylibheif-1.21.2/third_party/libheif/tests/bitstream_tests.cc +86 -0
- pylibheif-1.21.2/third_party/libheif/tests/box_equals.cc +65 -0
- pylibheif-1.21.2/third_party/libheif/tests/catch_amalgamated.cpp +11811 -0
- pylibheif-1.21.2/third_party/libheif/tests/catch_amalgamated.hpp +14106 -0
- pylibheif-1.21.2/third_party/libheif/tests/conversion.cc +758 -0
- pylibheif-1.21.2/third_party/libheif/tests/cxx_wrapper.cc +46 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/mono.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/mono_planar.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/rgb.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/rgb_planar.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/rgba.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/heifio/rgba_planar.tif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/lightning_mini.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_brotli.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_defl.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_tile_deflate.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_zlib.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_zlib_rows.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/rgb_generic_compressed_zlib_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/simple_osm_tile_alpha.avif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/simple_osm_tile_meta.avif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_ABGR.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_ABGR_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_B16R16G16.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_B16R16G16_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_M.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_M_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_R5G6B5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_R7+1G7+1B7+1_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_R7G7+1B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_R7G7B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_RGB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_RGB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_RGB_tiled_row_tile_align.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_RGxB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_RGxB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_VUY_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_VUY_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_Y16U16V16_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_Y16U16V16_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_YUV_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_YUV_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_YUV_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_YVU_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_comp_YVU_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_VUY_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_VUY_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_Y16U16V16_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_Y16U16V16_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_YUV_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_YUV_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_YVU_420.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_mix_YVU_422.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_ABGR.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_ABGR_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_B16R16G16.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_B16R16G16_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_M.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_M_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R5G6B5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R7+1G7+1B7+1_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R7G7+1B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R7G7B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R8G8B8A8_bsz0_psz10_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R8G8B8A8_bsz0_psz5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R8G8B8_bsz0_psz10_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_R8G8B8_bsz0_psz5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_RGB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_RGB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_RGB_tiled_row_tile_align.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_RGxB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_RGxB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_pix_YUV_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_ABGR.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_ABGR_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_B16R16G16.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_B16R16G16_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_M.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_M_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_R5G6B5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_R7+1G7+1B7+1_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_R7G7+1B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_R7G7B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_RGB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_RGB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_RGB_tiled_row_tile_align.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_RGxB.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_RGxB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_row_YUV_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_ABGR_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_B16R16G16_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_M_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_R5G6B5_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_R7+1G7+1B7+1_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_R7G7+1B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_R7G7B7_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_RGB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_RGB_tiled_row_tile_align.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_RGxB_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/data/uncompressed_tile_YUV_tiled.heif +0 -0
- pylibheif-1.21.2/third_party/libheif/tests/encode.cc +158 -0
- pylibheif-1.21.2/third_party/libheif/tests/encode_htj2k.cc +85 -0
- pylibheif-1.21.2/third_party/libheif/tests/encode_jpeg2000.cc +86 -0
- pylibheif-1.21.2/third_party/libheif/tests/extended_type.cc +93 -0
- pylibheif-1.21.2/third_party/libheif/tests/file_layout.cc +49 -0
- pylibheif-1.21.2/third_party/libheif/tests/idat.cc +51 -0
- pylibheif-1.21.2/third_party/libheif/tests/jpeg2000.cc +729 -0
- pylibheif-1.21.2/third_party/libheif/tests/main.cc +28 -0
- pylibheif-1.21.2/third_party/libheif/tests/mini_box.cc +274 -0
- pylibheif-1.21.2/third_party/libheif/tests/mini_decode.cc +109 -0
- pylibheif-1.21.2/third_party/libheif/tests/pixel_data_types.cc +178 -0
- pylibheif-1.21.2/third_party/libheif/tests/region.cc +588 -0
- pylibheif-1.21.2/third_party/libheif/tests/tai.cc +140 -0
- pylibheif-1.21.2/third_party/libheif/tests/test-config.cc.in +30 -0
- pylibheif-1.21.2/third_party/libheif/tests/test-config.h +36 -0
- pylibheif-1.21.2/third_party/libheif/tests/test-race.go +110 -0
- pylibheif-1.21.2/third_party/libheif/tests/test_utils.cc +221 -0
- pylibheif-1.21.2/third_party/libheif/tests/test_utils.h +53 -0
- pylibheif-1.21.2/third_party/libheif/tests/text.cc +166 -0
- pylibheif-1.21.2/third_party/libheif/tests/tiffdecode.cc +146 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_box.cc +646 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode.cc +169 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode.h +123 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_generic_compression.cc +216 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_mono.cc +199 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_rgb.cc +407 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_rgb16.cc +453 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_rgb565.cc +407 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_rgb7.cc +407 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_ycbcr.cc +401 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_ycbcr420.cc +690 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_decode_ycbcr422.cc +687 -0
- pylibheif-1.21.2/third_party/libheif/tests/uncompressed_encode.cc +778 -0
- pylibheif-1.21.2/third_party/libheif/third-party/aom.cmd +25 -0
- pylibheif-1.21.2/third_party/libheif/third-party/dav1d.cmd +29 -0
- pylibheif-1.21.2/third_party/libheif/third-party/libsharpyuv.cmd +20 -0
- pylibheif-1.21.2/third_party/libheif/third-party/rav1e.cmd +21 -0
- pylibheif-1.21.2/third_party/libheif/third-party/svt.cmd +19 -0
- pylibheif-1.21.2/uv.lock +93 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
name: Build and Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [ main ]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build_wheels:
|
|
13
|
+
name: Build wheels on ${{ matrix.os }}
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
os: [ubuntu-latest, windows-latest, macos-14]
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
submodules: recursive
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.12'
|
|
29
|
+
|
|
30
|
+
# Linux dependencies
|
|
31
|
+
- name: Install Linux dependencies
|
|
32
|
+
if: runner.os == 'Linux'
|
|
33
|
+
run: |
|
|
34
|
+
sudo apt-get update
|
|
35
|
+
sudo apt-get install -y libopenjp2-7-dev nasm
|
|
36
|
+
|
|
37
|
+
# macOS dependencies
|
|
38
|
+
- name: Install macOS dependencies
|
|
39
|
+
if: runner.os == 'macOS'
|
|
40
|
+
run: |
|
|
41
|
+
brew install openjpeg nasm
|
|
42
|
+
|
|
43
|
+
# Windows dependencies
|
|
44
|
+
- name: Install Windows dependencies
|
|
45
|
+
if: runner.os == 'Windows'
|
|
46
|
+
run: |
|
|
47
|
+
choco install nasm
|
|
48
|
+
|
|
49
|
+
- name: Build wheels
|
|
50
|
+
uses: pypa/cibuildwheel@v2.21.0
|
|
51
|
+
env:
|
|
52
|
+
# Build for Python 3.11-3.14
|
|
53
|
+
CIBW_BUILD: cp311-* cp312-* cp313-* cp314-*
|
|
54
|
+
# Skip 32-bit builds and musllinux
|
|
55
|
+
CIBW_SKIP: "*-win32 *-manylinux_i686 *musllinux*"
|
|
56
|
+
# Install build dependencies
|
|
57
|
+
CIBW_BEFORE_BUILD_LINUX: |
|
|
58
|
+
yum install -y openjpeg2-devel nasm || apt-get install -y libopenjp2-7-dev nasm
|
|
59
|
+
CIBW_BEFORE_BUILD_MACOS: |
|
|
60
|
+
brew install openjpeg nasm
|
|
61
|
+
# Test the wheel
|
|
62
|
+
CIBW_TEST_REQUIRES: pytest numpy
|
|
63
|
+
CIBW_TEST_COMMAND: pytest {project}/tests -v
|
|
64
|
+
|
|
65
|
+
- uses: actions/upload-artifact@v4
|
|
66
|
+
with:
|
|
67
|
+
name: wheels-${{ matrix.os }}
|
|
68
|
+
path: ./wheelhouse/*.whl
|
|
69
|
+
|
|
70
|
+
build_sdist:
|
|
71
|
+
name: Build source distribution
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
with:
|
|
76
|
+
submodules: recursive
|
|
77
|
+
|
|
78
|
+
- name: Build sdist
|
|
79
|
+
run: pipx run build --sdist
|
|
80
|
+
|
|
81
|
+
- uses: actions/upload-artifact@v4
|
|
82
|
+
with:
|
|
83
|
+
name: sdist
|
|
84
|
+
path: dist/*.tar.gz
|
|
85
|
+
|
|
86
|
+
publish:
|
|
87
|
+
name: Publish to PyPI
|
|
88
|
+
needs: [build_wheels, build_sdist]
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
91
|
+
environment:
|
|
92
|
+
name: pypi
|
|
93
|
+
url: https://pypi.org/p/pylibheif
|
|
94
|
+
permissions:
|
|
95
|
+
id-token: write
|
|
96
|
+
|
|
97
|
+
steps:
|
|
98
|
+
- name: Download all artifacts
|
|
99
|
+
uses: actions/download-artifact@v4
|
|
100
|
+
with:
|
|
101
|
+
path: dist
|
|
102
|
+
merge-multiple: true
|
|
103
|
+
|
|
104
|
+
- name: Publish to PyPI
|
|
105
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv
|
|
11
|
+
|
|
12
|
+
# CMake build files
|
|
13
|
+
build_*/
|
|
14
|
+
CMakeFiles/
|
|
15
|
+
CMakeCache.txt
|
|
16
|
+
cmake_install.cmake
|
|
17
|
+
Makefile
|
|
18
|
+
|
|
19
|
+
# IDE files
|
|
20
|
+
.idea/
|
|
21
|
+
.vscode/
|
|
22
|
+
*.swp
|
|
23
|
+
*.swo
|
|
24
|
+
*~
|
|
25
|
+
|
|
26
|
+
# Compiled extensions
|
|
27
|
+
*.so
|
|
28
|
+
*.dylib
|
|
29
|
+
*.pyd
|
|
30
|
+
|
|
31
|
+
# OS files
|
|
32
|
+
.DS_Store
|
|
33
|
+
Thumbs.db
|
|
34
|
+
|
|
35
|
+
# Test output files
|
|
36
|
+
images/output_*
|
|
37
|
+
|
|
38
|
+
# Lock files (optional, comment out if you want to track)
|
|
39
|
+
# uv.lock
|
|
40
|
+
|
|
41
|
+
.cache
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.15)
|
|
2
|
+
project(pylibheif LANGUAGES C CXX)
|
|
3
|
+
|
|
4
|
+
# Find pybind11
|
|
5
|
+
find_package(pybind11 REQUIRED)
|
|
6
|
+
|
|
7
|
+
# libheif options
|
|
8
|
+
set(WITH_EXAMPLES OFF CACHE BOOL "Build examples" FORCE)
|
|
9
|
+
set(WITH_RAV1E OFF CACHE BOOL "Build rav1e" FORCE)
|
|
10
|
+
set(WITH_DAV1D ON CACHE BOOL "Build dav1d" FORCE)
|
|
11
|
+
set(WITH_AOM ON CACHE BOOL "Build aom" FORCE)
|
|
12
|
+
set(WITH_X265 ON CACHE BOOL "Build x265" FORCE)
|
|
13
|
+
set(WITH_LIBDE265 ON CACHE BOOL "Build libde265" FORCE)
|
|
14
|
+
set(WITH_OpenJPEG_ENCODER ON CACHE BOOL "Build OpenJPEG encoder" FORCE)
|
|
15
|
+
set(WITH_OpenJPEG_DECODER ON CACHE BOOL "Build OpenJPEG decoder" FORCE)
|
|
16
|
+
|
|
17
|
+
# Disable plugin mode - build codecs as built-in
|
|
18
|
+
set(WITH_DAV1D_PLUGIN OFF CACHE BOOL "Build dav1d as plugin" FORCE)
|
|
19
|
+
set(WITH_AOM_DECODER_PLUGIN OFF CACHE BOOL "Build AOM decoder as plugin" FORCE)
|
|
20
|
+
set(WITH_AOM_ENCODER_PLUGIN OFF CACHE BOOL "Build AOM encoder as plugin" FORCE)
|
|
21
|
+
set(WITH_OpenJPEG_ENCODER_PLUGIN OFF CACHE BOOL "Build OpenJPEG encoder as plugin" FORCE)
|
|
22
|
+
set(WITH_OpenJPEG_DECODER_PLUGIN OFF CACHE BOOL "Build OpenJPEG decoder as plugin" FORCE)
|
|
23
|
+
set(ENABLE_PLUGIN_LOADING OFF CACHE BOOL "Disable plugin loading" FORCE)
|
|
24
|
+
|
|
25
|
+
# Add libheif submodule
|
|
26
|
+
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries" FORCE)
|
|
27
|
+
add_subdirectory(third_party/libheif)
|
|
28
|
+
|
|
29
|
+
# Define the extension module
|
|
30
|
+
pybind11_add_module(pylibheif
|
|
31
|
+
src/main.cpp
|
|
32
|
+
src/context.cpp
|
|
33
|
+
src/image.cpp
|
|
34
|
+
src/encoder.cpp
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Link with libheif
|
|
38
|
+
target_link_libraries(pylibheif PRIVATE heif)
|
|
39
|
+
|
|
40
|
+
# Include directories
|
|
41
|
+
target_include_directories(pylibheif PRIVATE
|
|
42
|
+
src
|
|
43
|
+
third_party/libheif/libheif/api
|
|
44
|
+
${CMAKE_CURRENT_BINARY_DIR}/third_party/libheif
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# C++ standard
|
|
48
|
+
target_compile_features(pylibheif PRIVATE cxx_std_17)
|
|
49
|
+
|
|
50
|
+
# Install the module
|
|
51
|
+
install(TARGETS pylibheif DESTINATION .)
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: pylibheif
|
|
3
|
+
Version: 1.21.2
|
|
4
|
+
Summary: Python bindings for libheif - HEIC/AVIF/JPEG2000 image codec
|
|
5
|
+
Keywords: heif,heic,avif,jpeg2000,image,codec,libheif
|
|
6
|
+
Author-Email: Curry Tang <twn39@163.com>
|
|
7
|
+
License: LGPL-3.0-or-later
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Programming Language :: C++
|
|
18
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
19
|
+
Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
|
|
20
|
+
Project-URL: Homepage, https://github.com/twn39/pylibheif
|
|
21
|
+
Project-URL: Repository, https://github.com/twn39/pylibheif
|
|
22
|
+
Project-URL: Documentation, https://github.com/twn39/pylibheif#readme
|
|
23
|
+
Project-URL: Issues, https://github.com/twn39/pylibheif/issues
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Requires-Dist: numpy>=1.26.0
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
# pylibheif
|
|
29
|
+
|
|
30
|
+
Python bindings for [libheif](https://github.com/strukturag/libheif) using pybind11.
|
|
31
|
+
|
|
32
|
+
## Features
|
|
33
|
+
|
|
34
|
+
- **HEIC/HEIF Support**: Read and write HEIC images (HEVC/H.265 encoded)
|
|
35
|
+
- **AVIF Support**: Read and write AVIF images (AV1 encoded)
|
|
36
|
+
- **JPEG2000 Support**: Read and write JPEG2000 images in HEIF container
|
|
37
|
+
- **NumPy Integration**: Zero-copy access to image data via Python Buffer Protocol
|
|
38
|
+
- **Metadata Support**: Read EXIF and XMP metadata from images
|
|
39
|
+
- **RAII Resource Management**: Automatic resource cleanup with context managers
|
|
40
|
+
|
|
41
|
+
## Supported Formats
|
|
42
|
+
|
|
43
|
+
| Format | Decoding | Encoding | Codec |
|
|
44
|
+
|--------|----------|----------|-------|
|
|
45
|
+
| HEIC (HEVC/H.265) | ✅ | ✅ | libde265 / x265 |
|
|
46
|
+
| AVIF (AV1) | ✅ | ✅ | DAV1D + AOM |
|
|
47
|
+
| JPEG2000 | ✅ | ✅ | OpenJPEG |
|
|
48
|
+
|
|
49
|
+
## Requirements
|
|
50
|
+
|
|
51
|
+
- Python >= 3.12
|
|
52
|
+
- NumPy >= 1.26.0
|
|
53
|
+
- CMake >= 3.15
|
|
54
|
+
- C++17 compatible compiler
|
|
55
|
+
|
|
56
|
+
### System Dependencies
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# macOS
|
|
60
|
+
brew install openjpeg
|
|
61
|
+
|
|
62
|
+
# Ubuntu/Debian
|
|
63
|
+
sudo apt install libopenjp2-7-dev
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Installation
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Clone with submodules
|
|
70
|
+
git clone --recursive https://github.com/your-username/pylibheif.git
|
|
71
|
+
cd pylibheif
|
|
72
|
+
|
|
73
|
+
# Install with uv (recommended)
|
|
74
|
+
uv pip install -e .
|
|
75
|
+
|
|
76
|
+
# Or with pip
|
|
77
|
+
pip install -e .
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Usage
|
|
81
|
+
|
|
82
|
+
### Reading HEIC/AVIF Images
|
|
83
|
+
|
|
84
|
+
**Using context manager (recommended):**
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
import pylibheif
|
|
88
|
+
import numpy as np
|
|
89
|
+
|
|
90
|
+
# Open HEIC file with context manager
|
|
91
|
+
with pylibheif.HeifContext() as ctx:
|
|
92
|
+
ctx.read_from_file('image.heic')
|
|
93
|
+
|
|
94
|
+
# Get primary image handle
|
|
95
|
+
handle = ctx.get_primary_image_handle()
|
|
96
|
+
print(f'Image size: {handle.width}x{handle.height}')
|
|
97
|
+
print(f'Has alpha: {handle.has_alpha}')
|
|
98
|
+
|
|
99
|
+
# Decode to RGB
|
|
100
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
101
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
102
|
+
|
|
103
|
+
# Get as NumPy array (zero-copy)
|
|
104
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
105
|
+
arr = np.asarray(plane) # shape: (height, width, 3)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Explicit creation (for more control):**
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
import pylibheif
|
|
112
|
+
import numpy as np
|
|
113
|
+
|
|
114
|
+
# Create context explicitly
|
|
115
|
+
ctx = pylibheif.HeifContext()
|
|
116
|
+
ctx.read_from_file('image.heic')
|
|
117
|
+
|
|
118
|
+
handle = ctx.get_primary_image_handle()
|
|
119
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
120
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
121
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
122
|
+
arr = np.asarray(plane)
|
|
123
|
+
|
|
124
|
+
# Resources are automatically freed when objects go out of scope
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Writing HEIC/AVIF Images
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
import pylibheif
|
|
131
|
+
import numpy as np
|
|
132
|
+
|
|
133
|
+
# Create image from NumPy array
|
|
134
|
+
width, height = 1920, 1080
|
|
135
|
+
img = pylibheif.HeifImage(width, height,
|
|
136
|
+
pylibheif.HeifColorspace.RGB,
|
|
137
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
138
|
+
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
|
|
139
|
+
|
|
140
|
+
# Fill with data
|
|
141
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, True)
|
|
142
|
+
arr = np.asarray(plane)
|
|
143
|
+
arr[:] = your_image_data # your RGB data
|
|
144
|
+
|
|
145
|
+
# Encode and save
|
|
146
|
+
ctx = pylibheif.HeifContext()
|
|
147
|
+
|
|
148
|
+
# For HEIC (HEVC)
|
|
149
|
+
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.HEVC)
|
|
150
|
+
# For AVIF (AV1)
|
|
151
|
+
# encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.AV1)
|
|
152
|
+
# For JPEG2000
|
|
153
|
+
# encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.JPEG2000)
|
|
154
|
+
|
|
155
|
+
encoder.set_lossy_quality(85)
|
|
156
|
+
encoder.encode_image(ctx, img)
|
|
157
|
+
ctx.write_to_file('output.heic')
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Converting HEIC to JPEG
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
import pylibheif
|
|
164
|
+
import numpy as np
|
|
165
|
+
from PIL import Image
|
|
166
|
+
|
|
167
|
+
# Decode HEIC
|
|
168
|
+
ctx = pylibheif.HeifContext()
|
|
169
|
+
ctx.read_from_file('input.heic')
|
|
170
|
+
handle = ctx.get_primary_image_handle()
|
|
171
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
172
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
173
|
+
|
|
174
|
+
# Get NumPy array
|
|
175
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
176
|
+
arr = np.asarray(plane)
|
|
177
|
+
|
|
178
|
+
# Save as JPEG using PIL
|
|
179
|
+
pil_img = Image.fromarray(arr)
|
|
180
|
+
pil_img.save('output.jpg', 'JPEG', quality=85)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Reading Metadata
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
import pylibheif
|
|
187
|
+
|
|
188
|
+
ctx = pylibheif.HeifContext()
|
|
189
|
+
ctx.read_from_file('image.heic')
|
|
190
|
+
handle = ctx.get_primary_image_handle()
|
|
191
|
+
|
|
192
|
+
# Get metadata block IDs
|
|
193
|
+
exif_ids = handle.get_metadata_block_ids('Exif')
|
|
194
|
+
for id in exif_ids:
|
|
195
|
+
metadata_type = handle.get_metadata_block_type(id)
|
|
196
|
+
metadata_bytes = handle.get_metadata_block(id)
|
|
197
|
+
print(f'Metadata type: {metadata_type}, size: {len(metadata_bytes)}')
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## API Reference
|
|
201
|
+
|
|
202
|
+
### Classes
|
|
203
|
+
|
|
204
|
+
- `HeifContext`: Main context for reading/writing HEIF files
|
|
205
|
+
- `HeifImageHandle`: Handle to a decoded image with metadata
|
|
206
|
+
- `HeifImage`: Raw image data with buffer protocol support
|
|
207
|
+
- `HeifEncoder`: Encoder for creating HEIF files
|
|
208
|
+
- `HeifPlane`: Image plane with NumPy buffer protocol
|
|
209
|
+
|
|
210
|
+
### Enums
|
|
211
|
+
|
|
212
|
+
- `HeifColorspace`: RGB, YCbCr, Monochrome
|
|
213
|
+
- `HeifChroma`: C420, C422, C444, InterleavedRGB, InterleavedRGBA
|
|
214
|
+
- `HeifChannel`: Y, Cb, Cr, R, G, B, Alpha, Interleaved
|
|
215
|
+
- `HeifCompressionFormat`: HEVC, AV1, JPEG, JPEG2000
|
|
216
|
+
|
|
217
|
+
### Exceptions
|
|
218
|
+
|
|
219
|
+
- `HeifError`: Base exception for all libheif errors
|
|
220
|
+
|
|
221
|
+
## Building from Source
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# Clone with submodules
|
|
225
|
+
git clone --recursive https://github.com/your-username/pylibheif.git
|
|
226
|
+
cd pylibheif
|
|
227
|
+
|
|
228
|
+
# Build
|
|
229
|
+
uv pip install -e .
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## License
|
|
233
|
+
|
|
234
|
+
This project is licensed under the LGPL-3.0 License - see the [LICENSE](LICENSE) file for details.
|
|
235
|
+
|
|
236
|
+
## Acknowledgments
|
|
237
|
+
|
|
238
|
+
- [libheif](https://github.com/strukturag/libheif) - HEIF/AVIF codec library
|
|
239
|
+
- [pybind11](https://github.com/pybind/pybind11) - C++/Python bindings
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# pylibheif
|
|
2
|
+
|
|
3
|
+
Python bindings for [libheif](https://github.com/strukturag/libheif) using pybind11.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **HEIC/HEIF Support**: Read and write HEIC images (HEVC/H.265 encoded)
|
|
8
|
+
- **AVIF Support**: Read and write AVIF images (AV1 encoded)
|
|
9
|
+
- **JPEG2000 Support**: Read and write JPEG2000 images in HEIF container
|
|
10
|
+
- **NumPy Integration**: Zero-copy access to image data via Python Buffer Protocol
|
|
11
|
+
- **Metadata Support**: Read EXIF and XMP metadata from images
|
|
12
|
+
- **RAII Resource Management**: Automatic resource cleanup with context managers
|
|
13
|
+
|
|
14
|
+
## Supported Formats
|
|
15
|
+
|
|
16
|
+
| Format | Decoding | Encoding | Codec |
|
|
17
|
+
|--------|----------|----------|-------|
|
|
18
|
+
| HEIC (HEVC/H.265) | ✅ | ✅ | libde265 / x265 |
|
|
19
|
+
| AVIF (AV1) | ✅ | ✅ | DAV1D + AOM |
|
|
20
|
+
| JPEG2000 | ✅ | ✅ | OpenJPEG |
|
|
21
|
+
|
|
22
|
+
## Requirements
|
|
23
|
+
|
|
24
|
+
- Python >= 3.12
|
|
25
|
+
- NumPy >= 1.26.0
|
|
26
|
+
- CMake >= 3.15
|
|
27
|
+
- C++17 compatible compiler
|
|
28
|
+
|
|
29
|
+
### System Dependencies
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# macOS
|
|
33
|
+
brew install openjpeg
|
|
34
|
+
|
|
35
|
+
# Ubuntu/Debian
|
|
36
|
+
sudo apt install libopenjp2-7-dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Clone with submodules
|
|
43
|
+
git clone --recursive https://github.com/your-username/pylibheif.git
|
|
44
|
+
cd pylibheif
|
|
45
|
+
|
|
46
|
+
# Install with uv (recommended)
|
|
47
|
+
uv pip install -e .
|
|
48
|
+
|
|
49
|
+
# Or with pip
|
|
50
|
+
pip install -e .
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Usage
|
|
54
|
+
|
|
55
|
+
### Reading HEIC/AVIF Images
|
|
56
|
+
|
|
57
|
+
**Using context manager (recommended):**
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
import pylibheif
|
|
61
|
+
import numpy as np
|
|
62
|
+
|
|
63
|
+
# Open HEIC file with context manager
|
|
64
|
+
with pylibheif.HeifContext() as ctx:
|
|
65
|
+
ctx.read_from_file('image.heic')
|
|
66
|
+
|
|
67
|
+
# Get primary image handle
|
|
68
|
+
handle = ctx.get_primary_image_handle()
|
|
69
|
+
print(f'Image size: {handle.width}x{handle.height}')
|
|
70
|
+
print(f'Has alpha: {handle.has_alpha}')
|
|
71
|
+
|
|
72
|
+
# Decode to RGB
|
|
73
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
74
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
75
|
+
|
|
76
|
+
# Get as NumPy array (zero-copy)
|
|
77
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
78
|
+
arr = np.asarray(plane) # shape: (height, width, 3)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Explicit creation (for more control):**
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
import pylibheif
|
|
85
|
+
import numpy as np
|
|
86
|
+
|
|
87
|
+
# Create context explicitly
|
|
88
|
+
ctx = pylibheif.HeifContext()
|
|
89
|
+
ctx.read_from_file('image.heic')
|
|
90
|
+
|
|
91
|
+
handle = ctx.get_primary_image_handle()
|
|
92
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
93
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
94
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
95
|
+
arr = np.asarray(plane)
|
|
96
|
+
|
|
97
|
+
# Resources are automatically freed when objects go out of scope
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Writing HEIC/AVIF Images
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import pylibheif
|
|
104
|
+
import numpy as np
|
|
105
|
+
|
|
106
|
+
# Create image from NumPy array
|
|
107
|
+
width, height = 1920, 1080
|
|
108
|
+
img = pylibheif.HeifImage(width, height,
|
|
109
|
+
pylibheif.HeifColorspace.RGB,
|
|
110
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
111
|
+
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
|
|
112
|
+
|
|
113
|
+
# Fill with data
|
|
114
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, True)
|
|
115
|
+
arr = np.asarray(plane)
|
|
116
|
+
arr[:] = your_image_data # your RGB data
|
|
117
|
+
|
|
118
|
+
# Encode and save
|
|
119
|
+
ctx = pylibheif.HeifContext()
|
|
120
|
+
|
|
121
|
+
# For HEIC (HEVC)
|
|
122
|
+
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.HEVC)
|
|
123
|
+
# For AVIF (AV1)
|
|
124
|
+
# encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.AV1)
|
|
125
|
+
# For JPEG2000
|
|
126
|
+
# encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.JPEG2000)
|
|
127
|
+
|
|
128
|
+
encoder.set_lossy_quality(85)
|
|
129
|
+
encoder.encode_image(ctx, img)
|
|
130
|
+
ctx.write_to_file('output.heic')
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Converting HEIC to JPEG
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
import pylibheif
|
|
137
|
+
import numpy as np
|
|
138
|
+
from PIL import Image
|
|
139
|
+
|
|
140
|
+
# Decode HEIC
|
|
141
|
+
ctx = pylibheif.HeifContext()
|
|
142
|
+
ctx.read_from_file('input.heic')
|
|
143
|
+
handle = ctx.get_primary_image_handle()
|
|
144
|
+
img = handle.decode(pylibheif.HeifColorspace.RGB,
|
|
145
|
+
pylibheif.HeifChroma.InterleavedRGB)
|
|
146
|
+
|
|
147
|
+
# Get NumPy array
|
|
148
|
+
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
|
|
149
|
+
arr = np.asarray(plane)
|
|
150
|
+
|
|
151
|
+
# Save as JPEG using PIL
|
|
152
|
+
pil_img = Image.fromarray(arr)
|
|
153
|
+
pil_img.save('output.jpg', 'JPEG', quality=85)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Reading Metadata
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
import pylibheif
|
|
160
|
+
|
|
161
|
+
ctx = pylibheif.HeifContext()
|
|
162
|
+
ctx.read_from_file('image.heic')
|
|
163
|
+
handle = ctx.get_primary_image_handle()
|
|
164
|
+
|
|
165
|
+
# Get metadata block IDs
|
|
166
|
+
exif_ids = handle.get_metadata_block_ids('Exif')
|
|
167
|
+
for id in exif_ids:
|
|
168
|
+
metadata_type = handle.get_metadata_block_type(id)
|
|
169
|
+
metadata_bytes = handle.get_metadata_block(id)
|
|
170
|
+
print(f'Metadata type: {metadata_type}, size: {len(metadata_bytes)}')
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## API Reference
|
|
174
|
+
|
|
175
|
+
### Classes
|
|
176
|
+
|
|
177
|
+
- `HeifContext`: Main context for reading/writing HEIF files
|
|
178
|
+
- `HeifImageHandle`: Handle to a decoded image with metadata
|
|
179
|
+
- `HeifImage`: Raw image data with buffer protocol support
|
|
180
|
+
- `HeifEncoder`: Encoder for creating HEIF files
|
|
181
|
+
- `HeifPlane`: Image plane with NumPy buffer protocol
|
|
182
|
+
|
|
183
|
+
### Enums
|
|
184
|
+
|
|
185
|
+
- `HeifColorspace`: RGB, YCbCr, Monochrome
|
|
186
|
+
- `HeifChroma`: C420, C422, C444, InterleavedRGB, InterleavedRGBA
|
|
187
|
+
- `HeifChannel`: Y, Cb, Cr, R, G, B, Alpha, Interleaved
|
|
188
|
+
- `HeifCompressionFormat`: HEVC, AV1, JPEG, JPEG2000
|
|
189
|
+
|
|
190
|
+
### Exceptions
|
|
191
|
+
|
|
192
|
+
- `HeifError`: Base exception for all libheif errors
|
|
193
|
+
|
|
194
|
+
## Building from Source
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Clone with submodules
|
|
198
|
+
git clone --recursive https://github.com/your-username/pylibheif.git
|
|
199
|
+
cd pylibheif
|
|
200
|
+
|
|
201
|
+
# Build
|
|
202
|
+
uv pip install -e .
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## License
|
|
206
|
+
|
|
207
|
+
This project is licensed under the LGPL-3.0 License - see the [LICENSE](LICENSE) file for details.
|
|
208
|
+
|
|
209
|
+
## Acknowledgments
|
|
210
|
+
|
|
211
|
+
- [libheif](https://github.com/strukturag/libheif) - HEIF/AVIF codec library
|
|
212
|
+
- [pybind11](https://github.com/pybind/pybind11) - C++/Python bindings
|
|
Binary file
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["scikit-build-core>=0.10.0", "pybind11>=2.13.0"]
|
|
3
|
+
build-backend = "scikit_build_core.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pylibheif"
|
|
7
|
+
version = "1.21.2"
|
|
8
|
+
description = "Python bindings for libheif - HEIC/AVIF/JPEG2000 image codec"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "LGPL-3.0-or-later"}
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Curry Tang", email = "twn39@163.com"}
|
|
14
|
+
]
|
|
15
|
+
keywords = ["heif", "heic", "avif", "jpeg2000", "image", "codec", "libheif"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Programming Language :: Python :: 3.14",
|
|
26
|
+
"Programming Language :: C++",
|
|
27
|
+
"Topic :: Multimedia :: Graphics",
|
|
28
|
+
"Topic :: Multimedia :: Graphics :: Graphics Conversion",
|
|
29
|
+
]
|
|
30
|
+
dependencies = [
|
|
31
|
+
"numpy>=1.26.0",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
[project.urls]
|
|
35
|
+
Homepage = "https://github.com/twn39/pylibheif"
|
|
36
|
+
Repository = "https://github.com/twn39/pylibheif"
|
|
37
|
+
Documentation = "https://github.com/twn39/pylibheif#readme"
|
|
38
|
+
Issues = "https://github.com/twn39/pylibheif/issues"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
[tool.scikit-build]
|
|
42
|
+
cmake.version = ">=3.15"
|
|
43
|
+
ninja.version = ">=1.10"
|
|
44
|
+
wheel.expand-macos-universal-tags = true
|
|
45
|
+
|
|
46
|
+
[tool.scikit-build.cmake.define]
|
|
47
|
+
WITH_EXAMPLES = "OFF"
|
|
48
|
+
WITH_RAV1E = "OFF"
|
|
49
|
+
WITH_DAV1D = "ON"
|
|
50
|
+
WITH_AOM = "ON"
|
|
51
|
+
WITH_X265 = "ON"
|
|
52
|
+
WITH_LIBDE265 = "ON"
|
|
53
|
+
WITH_OpenJPEG_ENCODER = "ON"
|
|
54
|
+
WITH_OpenJPEG_DECODER = "ON"
|