Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3528 commits
Select commit Hold shift + click to select a range
16231c1
prevent writing of double colr boxes
farindk Jan 13, 2026
c0e749a
check against number of samples in box exceeding samples in box (#1…
farindk Jan 14, 2026
7b3a375
increase version to v1.21.2
farindk Jan 15, 2026
9595f7d
emscripten build: resolve J2K compilation
farindk Jan 15, 2026
62f1b8c
make 'cmpd' an essential property (#1589)
farindk Jan 15, 2026
9dcb15c
Update README with usage and tool documentation
farindk Jan 17, 2026
6c3a880
add typedef to C API enums to allow usage without 'enum' keyword
farindk Jan 20, 2026
01fb030
add security check for maximum number of chunks in stsc box
farindk Jan 20, 2026
272fc55
Print kvazaar version if such function is available
agruzdev Jan 21, 2026
f833c01
Merge pull request #1677 from agruzdev/kvazaar-version
farindk Jan 22, 2026
3d0b151
set when unavailable (#1678)
farindk Jan 23, 2026
79b3a73
use verbose cmake build output to see full command lines
farindk Jan 26, 2026
aa183b6
Support unicode paths on windows (#1358)
mgenware Jan 23, 2026
8884f5c
Fix passing compiler options to preprocessor
kmilos Jan 26, 2026
6706170
Add more private libs for static linking
kmilos Jan 26, 2026
5442d68
accept input files with meta box but no 'pict' handler
farindk Jan 28, 2026
a716a66
set item boxes even when metabox handler is not 'pict'
farindk Jan 28, 2026
b249ffd
support writing other uncC component_format types (monochrome)
dukesook Dec 29, 2025
c52fb77
resolve warning with explicit type cast
dukesook Dec 29, 2025
891a9eb
copy all security limits
farindk Feb 3, 2026
a1a3688
revert false commit
farindk Feb 3, 2026
c79b734
fix integer overflow on 32-bit systems (clusterfuzz #477312375)
farindk Feb 3, 2026
7139d2b
Fix: Set dav1d thread count before opening decoder
Dinika Feb 2, 2026
14752ee
error check: tile coordinates must be valid
dukesook Feb 5, 2026
3d9973d
fix main error code (#1693)
farindk Feb 5, 2026
1212b50
Update heif_enc.cc
rjksmith Jan 31, 2026
8a4b56a
Update heif_enc.cc
rjksmith Feb 5, 2026
3471480
reorganize uncompressed codec encoding
farindk Feb 8, 2026
d063f9e
uncompressed: support 'rgba' profile
farindk Feb 8, 2026
176fde8
unci: dropping alpha channel must be handled before passing the image…
farindk Feb 8, 2026
8bf6d46
unci: write pixel-interleaved 9-16 bit RGB
farindk Feb 8, 2026
889ef63
unci: write component-interleaved planes
farindk Feb 8, 2026
1ac52a7
unci: write component-interleaved, subsampled YCbCr
farindk Feb 8, 2026
448fa39
unci: fix compiler warning
farindk Feb 8, 2026
a5b5bc7
unci: write packed RGB HDR pixels
farindk Feb 8, 2026
1fd49bf
unci: fix warnings
farindk Feb 8, 2026
2ce7b8f
unci: remove old, obsolete unci writing
farindk Feb 8, 2026
702f08a
unci: extract unc_encoder_factory from unc_encoder
farindk Feb 8, 2026
47bcba0
unci: fix unci tiled encoding
farindk Feb 8, 2026
594bc19
unci: move computation of tile sizes into unc_encoders
farindk Feb 8, 2026
fe9e8d3
unci: mode unc_encoder_factory methods private
farindk Feb 8, 2026
10cd979
unci: refactor AbstractDecoder and subclasses to unc_decoder similar …
farindk Feb 8, 2026
f6436f2
unci: refactor unc_decoder into a clean base class and move everythin…
farindk Feb 8, 2026
c1bf868
unci: add missing unc_decoder_legacybase class
farindk Feb 8, 2026
1674c2d
unci: remove image_width/height from decode_tile() parameters
farindk Feb 8, 2026
0023d8a
unci: fold tile_component_interleave decoder into component_interleav…
farindk Feb 8, 2026
ccf4e56
unci: use new get_tile_data_sizes() so that we can remove fetch_tile_…
farindk Feb 8, 2026
8dd2561
unci: fix tiled mixed-interleave and simplify decode_tile() signature
farindk Feb 8, 2026
357ead3
unci: remove uncompressed_image_type_is_supported() and let each unc_…
farindk Feb 8, 2026
938550f
unci: use enum name for sampling_type
farindk Feb 8, 2026
f45e591
unci: add full list of uncC profiles
farindk Feb 8, 2026
313fef7
unci: simplify map_uncompressed_component_to_channel()
farindk Feb 8, 2026
dd7ab0b
unci: remove isKnownUncompressedFrameConfigurationBoxProfile()
farindk Feb 8, 2026
9ae99ac
unci: implement decoder for pixel-interleaving with block grouping
farindk Feb 9, 2026
eb5a800
add missing files
farindk Feb 9, 2026
1965729
unci: implement decoder for component interleaving with blocks
farindk Feb 9, 2026
8958c48
unci: add faster component-interleave decoder when component sizes ar…
farindk Feb 9, 2026
31bb79e
fix writing rrggbb and loading block pixel interleave with block_size==0
farindk Feb 9, 2026
c843ec5
unci: fix byte and component order
farindk Feb 9, 2026
39fe7e8
unci: new encoder for packed component interleaving
farindk Feb 10, 2026
36338df
unci: rename encoders to consistent names
farindk Feb 10, 2026
538691c
Merge branch 'uncompressed-tb21'
farindk Feb 10, 2026
097a5c3
fix includes and licenses
farindk Feb 10, 2026
834bb4c
fix includes
farindk Feb 10, 2026
fe1d43a
fix type convertion warning
farindk Feb 10, 2026
598f9be
fix includes
farindk Feb 10, 2026
f2ff813
pixelimage: use a list of components instead of a map of heif_channel…
farindk Feb 10, 2026
ba8319e
add heif_image_add_component() API and multi-component test
farindk Feb 10, 2026
20efde9
unci: write multi-component images with bytealign_component_interleave
farindk Feb 10, 2026
353c0c5
unci: fix an integer promotion and byte swapping issue
farindk Feb 10, 2026
be4374a
unci: decoding of multi-component images
farindk Feb 12, 2026
b4326c4
unci: map component type to heif_channel
farindk Feb 12, 2026
b670642
unci: block unsupported component_little_endian in unc_decoder_block_…
farindk Feb 12, 2026
b2c0eec
unci: save heif_channel_unknown as padded component
farindk Feb 12, 2026
ebc3404
add heif_channel_unknown to emscripten and Go
farindk Feb 12, 2026
1c84c8e
show proper error message when trying to load a JPEG with unsupported…
farindk Feb 13, 2026
3976116
remove underscore from error text
farindk Feb 13, 2026
8c957cf
support CMYK JPEG input
farindk Feb 13, 2026
e5540c0
added a reader for tiled TIFFs, keeping the same tiling in the HEIF
farindk Feb 16, 2026
b1410c3
add missing include
farindk Feb 16, 2026
bd1ce7d
show GeoTIFF information
farindk Feb 16, 2026
987ed6f
read overview images from GeoTIFF files
farindk Feb 16, 2026
ef85bc8
fix reading ftyp box with disabled security limits
farindk Feb 16, 2026
8fce3b9
fix reading ftyp box with disabled security limits
farindk Feb 16, 2026
d432024
unci: check for supported component formats (#1699)
farindk Feb 16, 2026
b5aa005
add public API to set GIMI content ID to image handles (e.g. for grid…
farindk Feb 16, 2026
ede79bc
parse Turtle file for GIMI content IDs and embed into HEIF
farindk Feb 16, 2026
b2c8da4
openh264 decoder: return error on invalid input data (empty or too sm…
farindk Feb 17, 2026
cedda32
add option to explicitly embed the turtle file
farindk Feb 18, 2026
e904aaf
unci: fix supported bit-depths for complex data-types
farindk Feb 19, 2026
6df7087
Merge branch 'master' into gimi
farindk Feb 19, 2026
8b62c50
unci: support multi-component images in encoder_component_interleave
farindk Feb 20, 2026
8936e7c
unci: combine the bytealign_component_interleave encoder into the com…
farindk Feb 20, 2026
ea6cb3f
load 16bit TIFF files
farindk Feb 20, 2026
9c4d1e0
load 16bit TIFF files
farindk Feb 20, 2026
ec450bc
read overview images from GeoTIFF files
farindk Feb 16, 2026
ed7aaae
add public API to set GIMI content ID to image handles (e.g. for grid…
farindk Feb 16, 2026
5d12580
add missing include
farindk Feb 20, 2026
74b9b29
heif-enc: only include TIFF loader if libtiff found
farindk Feb 20, 2026
d1851bf
unci: block_pixel_interleave decoder rejects input with pixel_size==0…
farindk Feb 23, 2026
ebcad8e
unci: more valid input checking
farindk Feb 23, 2026
c5ae55a
check that decoded image size matches the claimed size (#1709)
farindk Feb 23, 2026
b194365
improve decoded image size check to make it work with non-visual unci…
farindk Feb 23, 2026
b97c8b5
vvdec: check that NAL size does not exceed data size (#1712)
farindk Feb 23, 2026
ddcd2e9
Merge branch 'master' into gimi
farindk Feb 23, 2026
b67a250
fix merge conflict
farindk Feb 24, 2026
c9870ae
Add script to build oss-fuzz fuzzers.
fancycode Feb 24, 2026
b376d15
oss-fuzz: Bring back codec dependency detection.
fancycode Feb 24, 2026
472cbfa
feat: add support for omnidirectional (OMAF) image projection
bradh Feb 22, 2026
5721b71
omaf: fix compilation and add _omaf_ prefix to types and function nam…
farindk Feb 24, 2026
45b5dab
heif-enc: new option to add compatible brands
farindk Feb 24, 2026
db3b3e8
add unif brand support (globally unique IDs)
farindk Feb 24, 2026
60da8e7
Merge branch 'master' into gimi
farindk Feb 24, 2026
4b5c2fd
fix warning
farindk Feb 24, 2026
9940305
Merge branch 'master' into gimi
farindk Feb 24, 2026
62f59a9
fix merge error
farindk Feb 24, 2026
b575ecf
fix encoding single-tile grids and decoding individual tiles with new…
farindk Feb 24, 2026
2aacb36
Merge branch 'master' into gimi
farindk Feb 24, 2026
2f9d1cb
fix decoding tile from grid of unci
farindk Feb 24, 2026
e2ed275
Merge branch 'master' into gimi
farindk Feb 24, 2026
230dd00
write isom brand instead of iso8
farindk Feb 24, 2026
302efff
uncv: set correct uncC version
farindk Feb 24, 2026
6655080
heif-enc: show error when no input files are found when encoding sequ…
farindk Feb 24, 2026
7c4f379
Merge branch 'master' into gimi
farindk Feb 24, 2026
cb6e524
unci: assign Bayer pattern to heif_image
farindk Feb 24, 2026
b383c2d
unci: fix reading cpat
farindk Feb 25, 2026
92a4a31
unci: implement writing filter-array images. Add heif-gen-bayer examp…
farindk Feb 26, 2026
2123aaf
unci: fix compilation
farindk Feb 26, 2026
fa8575c
add debayering color conversion
farindk Feb 26, 2026
db2205c
only compile heif-gen-bayer if explicitly enabled
farindk Feb 26, 2026
c373a2e
add new heif_colorspace_filter_array to emscripten and Go
farindk Feb 26, 2026
215078f
fix clang-tidy
farindk Feb 26, 2026
8a9d77a
unci API: add typedef for type names
farindk Feb 26, 2026
be56fd4
unci: add support for polarization pattern (splz)
farindk Feb 26, 2026
5048bcd
simplify copying image metadata in color conversion
farindk Feb 26, 2026
d1f4fae
Merge branch 'master' into gimi
farindk Feb 26, 2026
578650f
J2K::encode() - return error
dukesook Feb 26, 2026
c9adb70
check error returned by plugin get_compressed_data() calls
farindk Feb 26, 2026
ab29ff1
Update heif_enc.cc
rjksmith Feb 18, 2026
1b50f5f
Update heif_enc.cc
rjksmith Feb 20, 2026
2f4af03
Merge branch 'vmt'
farindk Feb 26, 2026
45a4563
heif-enc: extract VMT code into separate file (#1706)
farindk Feb 26, 2026
58bb9e2
Merge branch 'master' into gimi
farindk Feb 26, 2026
d50abb3
unci: implement sensor bad pixels map (sbpm)
farindk Feb 26, 2026
368b2bb
unci: implement sample non-uniformity metadata (snuc)
farindk Feb 27, 2026
edb3f30
unci: implement chroma-sample location (cloc)
farindk Feb 27, 2026
96fe68d
uncv: add support for reading filter-array sequences
farindk Feb 27, 2026
6f20de4
extend heif-gen-bayer to generate video sequences
farindk Feb 27, 2026
9b53c74
add missing include
farindk Feb 27, 2026
6eee0dd
heif-gen-bayer: add HDR support
farindk Feb 27, 2026
65408c0
heif-gen-bayer: allow the input of any arbitrary 2x2 or 4x4 RGB pattern
farindk Feb 27, 2026
756ed4b
do not add 'colr' boxes for non-visual images
farindk Feb 27, 2026
6c95ba0
add loading TIFF files with float samples
farindk Feb 27, 2026
72e2396
add unit tests for cloc, snuc, splz
farindk Feb 27, 2026
c1bc58a
unci: support images where not all cmpd components are covered by uncC
farindk Feb 27, 2026
3a8e785
remove obsolet heif_image_get_channel_*() functions from experimental…
farindk Feb 27, 2026
0d974ae
unci: adapt public API to handle non-contiguous component indices
farindk Feb 27, 2026
6c09041
move component-access function to public API (heif_uncompressed.h)
farindk Feb 27, 2026
5897e71
unci: enable compression also for non-tiled images
farindk Feb 27, 2026
0b99ba4
gimi: implement unci component IDs
farindk Feb 27, 2026
6da8c90
Merge branch 'master' into gimi
farindk Feb 27, 2026
cfa1db9
set GIMI component content IDs through image handle
farindk Feb 27, 2026
1d18b1e
set GIMI component content IDs through image handle
farindk Feb 27, 2026
44ab4b9
heif-enc: add option --component-content-ids
farindk Feb 27, 2026
c4d7a16
heif-info: show component content IDs
farindk Feb 27, 2026
81c5128
heif-info: show component content IDs
farindk Feb 27, 2026
3ef5020
build(deps): bump actions/upload-artifact from 6 to 7
dependabot[bot] Feb 27, 2026
c2b8672
fix missing include
farindk Feb 27, 2026
faeabde
Merge branch 'master' into gimi
farindk Feb 27, 2026
d3d6004
setting max_sequence_frames=0 in security limits disables it
farindk Feb 27, 2026
248c1de
allow adding MIME item to sequence only file
farindk Feb 27, 2026
0e4a3ab
Merge branch 'master' into gimi
farindk Feb 27, 2026
963abab
fix reading OMAF prfr
farindk Feb 27, 2026
7a0faad
improve Box_prfr::dump (#1707)
farindk Feb 28, 2026
3777eb4
adapt omaf_boxes test
farindk Feb 28, 2026
284b835
apply max_components security limit to splz box
farindk Mar 1, 2026
993b63d
tiff reader: add support for signed integers
farindk Mar 2, 2026
05508ee
Merge branch 'master' into gimi
farindk Mar 2, 2026
0d4c2a8
encode monochrome htj2k
dukesook Mar 2, 2026
f3aa0b0
restore turtle file embedding (lost during merge)
farindk Mar 3, 2026
df957f2
pass through unci compression mode to tili image generation
farindk Mar 3, 2026
e100a1e
pass through unci compression mode to tili image generation
farindk Mar 3, 2026
72065eb
Merge branch 'master' of github.com:strukturag/libheif
farindk Mar 3, 2026
09931bf
Merge branch 'master' into gimi
farindk Mar 3, 2026
909724e
check Box_snuc memory allocation against max total memory use
farindk Mar 4, 2026
302677a
heifio: add decoder for raw input files
farindk Mar 4, 2026
3754a51
add raw decoder files
farindk Mar 4, 2026
8ca8245
support cut-tiles on multi-component images
farindk Mar 4, 2026
0c87da6
Merge branch 'master' into gimi
farindk Mar 4, 2026
e220d5a
add missing include
farindk Mar 4, 2026
1236942
fix possible buffer overflow when reading mask image
farindk Mar 5, 2026
3a81c0e
fix some potential integer overflows in mask_image
farindk Mar 5, 2026
c517d9c
fix reading mask imags with 16 bpp
farindk Mar 5, 2026
586d418
fix reading TIFF EXIF
farindk Mar 5, 2026
ffa34e4
check libtiff return value for error
farindk Mar 5, 2026
3602316
Merge branch 'master' into gimi
farindk Mar 5, 2026
e1f77d0
fix decoding tili images with unci compression
farindk Mar 5, 2026
870e728
fix edge case in zlib decompression
farindk Mar 5, 2026
bf71aa1
check if unci's icef is compatible with tili
farindk Mar 5, 2026
1909e34
Merge branch 'master' into gimi
farindk Mar 5, 2026
c23eb5d
only do the tili/cref checks when we enabled the uncompressed codec
farindk Mar 5, 2026
ec5b614
Merge branch 'master' into gimi
farindk Mar 5, 2026
c090c6e
Add support for I420, I422, and I444 pixel formats in the webcodecs d…
scriby Feb 19, 2026
baac699
omit writing 'icef' for single-unit unci images
farindk Mar 5, 2026
3afaadb
handle 32bit integer overflow when parsing snuc box
farindk Mar 7, 2026
a94ed8d
Merge branch 'master' into gimi
farindk Mar 10, 2026
a4f9991
enable heif-enc's component-content-ids option only when experimental…
farindk Mar 10, 2026
643c0ce
unci: remove encode_static() and encode_full_image(), replace with en…
farindk Mar 12, 2026
e01c216
unci: generate unci metadata boxes in unc_encoder constructor
farindk Mar 12, 2026
ec7d3f8
unci: build cmpd in HeifPixelImage
farindk Mar 12, 2026
d18e8a5
unci: map images with component type Y to heif_colorspace_monochrome
farindk Mar 12, 2026
d36a2e2
unci: fix #cmpd check
farindk Mar 12, 2026
2f59ae3
unci: use 32bit component_indices internally
farindk Mar 12, 2026
7971318
unci: fix 16bit vs 32bit component index warning
farindk Mar 12, 2026
723b58d
fix infinite loop for sequences with variable frame-rate
farindk Mar 13, 2026
bb10a2c
check for stsc boxes with zero entries
farindk Mar 13, 2026
fc1b310
zero-fill missing tiles to avoid uninitialized memory
farindk Mar 13, 2026
2390396
fix computation of tile memory area for 4:2:0 chroma and odd tile sizes
farindk Mar 13, 2026
f9779a3
jpeg: fix memory leak on error (#1718)
farindk Mar 13, 2026
d6944d3
jpeg: destroy cinfo object on error (#1727)
farindk Mar 14, 2026
bdaa377
check that 'stsc' box does not have zero samples per chunk
farindk Mar 14, 2026
22b6266
fix overlay image with alpha channels with stride different from colo…
farindk Mar 15, 2026
033fde9
tiff: implement reading YCbCr (JPEG) images
farindk Mar 17, 2026
40d7bb7
tiff: implement reading YCbCr (JPEG) images
farindk Mar 17, 2026
c25ff89
decoder-tiff: make number of tiles computation overflow safe
farindk Mar 19, 2026
79f2ca5
avoid uint32_t overflow when computing plane src/dst pointers
farindk Mar 19, 2026
4872252
add API function to concatenate EXIF transforms
farindk Mar 20, 2026
bed5192
heif-enc: add options to transform input image
farindk Mar 20, 2026
4cb10da
add missing LIBHEIF_API
farindk Mar 20, 2026
f98aafe
fix writing grid images with transformation properties (#1730)
farindk Mar 20, 2026
caf980e
fix ordering of transformative properties in grid items (#1730)
farindk Mar 20, 2026
193a0ca
fix writing unci images with transformation properties (#1730)
farindk Mar 20, 2026
5ec43ff
fix writing tili images with transformation properties (#1730)
farindk Mar 20, 2026
5419396
appveyor: upgrade dependencies when cache is not up-to-date
farindk Mar 21, 2026
5d32b90
appveyor: temporarily disable building ffmpeg because it is too slow
farindk Mar 21, 2026
994bb4c
appveyor: temporarily disable upgrading ffmpeg because it is too slow
farindk Mar 21, 2026
b9e35c1
appveyor: upgrade all vcpkg dependencies again
farindk Mar 21, 2026
5bdb12e
appveyor: build vcpkgs only in Release mode
farindk Mar 21, 2026
dbebce9
appveyor: build without ffmpeg
farindk Mar 21, 2026
25ef430
appveyor: upgrade all vcpkg dependencies, install ffmpeg
farindk Mar 22, 2026
bf39712
appveyor: add x86 architecture (currently without ffmpeg and x265)
farindk Mar 22, 2026
6bbd8b0
appveyor: do not compile dav1d for win32
farindk Mar 22, 2026
167acfd
appveyor: enable ffmpeg again and compile x265 for all architectures
farindk Mar 22, 2026
dde651a
appveyor: fix script syntax
farindk Mar 22, 2026
d6a9b9e
add attribution for Rob in VMT files
farindk Mar 26, 2026
c152b0e
add description of --mime-item-name to heif-enc help page
farindk Mar 26, 2026
4bf902d
fix: Null pointer dereference in HeifFile::get_item_data() via crafte…
farindk Mar 27, 2026
b182ac8
check validity of number of tilC tiles against overflow and security …
farindk Mar 27, 2026
b1bd1c0
fix computation of size of inline region mask
farindk Mar 27, 2026
d4d83cb
add missing include
farindk Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
Checks: >
-clang-analyzer-security.insecureAPI.strcat,
-clang-analyzer-security.insecureAPI.strcpy,
modernize-shrink-to-fit,
modernize-use-default-member-init,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-override,
performance-*
HeaderFilterRegex: .*
WarningsAsErrors: '*'
...
13 changes: 13 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# These are supported funding model platforms

github: [farindk]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
9 changes: 3 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,19 @@ jobs:
matrix:
env:
- { NAME: "nothing" }
- { NAME: "cmake", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_DAV1D: 1, WITH_RAV1E: 1, WITH_LIBDE265: 1, CMAKE: 1 }
- { NAME: "tarball", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_DAV1D: 1, WITH_RAV1E: 1, WITH_LIBDE265: 1, TARBALL: 1 }
- { NAME: "tarball", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 1, TARBALL: 1 }
- { NAME: "graphics", WITH_GRAPHICS: 1 }
- { NAME: "x265", WITH_X265: 1 }
- { NAME: "x265 / graphics", WITH_GRAPHICS: 1, WITH_X265: 1 }
- { NAME: "libde265 (1) / graphics", WITH_GRAPHICS: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (2) / graphics", WITH_GRAPHICS: 1, WITH_LIBDE265: 2 }
- { NAME: "libde265 (1) / x265 / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (2) / x265 / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_LIBDE265: 2 }
- { NAME: "libde265 (1) / x265 / aom / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (1) / x265 / dav1d / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_DAV1D: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (1) / x265 / aom / rav1e / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_RAV1E: 1, WITH_LIBDE265: 1 }
env: ${{ matrix.env }}
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: CIFuzz
on: [pull_request]
jobs:
Fuzzing:
runs-on: ubuntu-22.04
steps:
- name: Build Fuzzers
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
oss-fuzz-project-name: 'libheif'
dry-run: false
- name: Run Fuzzers
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
oss-fuzz-project-name: 'libheif'
fuzz-seconds: 600
dry-run: false
- name: Upload Crash
uses: actions/upload-artifact@v7
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts
path: ./out/artifacts
34 changes: 31 additions & 3 deletions .github/workflows/clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,10 @@ jobs:
env:
- { NAME: "nothing" }
- { NAME: "libde265 (1) / x265 / aom / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (2) / x265 / aom / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 2 }
env: ${{ matrix.env }}
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand All @@ -37,3 +36,32 @@ jobs:
CXX: clang++
run: |
./scripts/run-ci.sh

tidy:
env:
WITH_GRAPHICS: 1
WITH_X265: 1
WITH_AOM: 1
WITH_DAV1D: 1
WITH_LIBDE265: 1
CLANG_TIDY: 1
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6

- name: Install dependencies
run: |
./scripts/install-ci-linux.sh
sudo apt install clang-tidy-12

- name: Prepare CI
run: |
./scripts/prepare-ci.sh

- name: Run tests
run: |
./scripts/run-ci.sh

- name: Run clang-tidy
run: |
run-clang-tidy-12 -checks=-clang-diagnostic-tautological-compare,-clang-diagnostic-tautological-constant-out-of-range-compare -j$(nproc)
19 changes: 12 additions & 7 deletions .github/workflows/coverity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,28 @@ name: coverity

on:
push:
branches: [ coverity ]
branches: [ master, coverity ]

jobs:
scan:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
env:
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
WITH_AOM: 1
WITH_DAV1D: 1
WITH_GRAPHICS: 1
WITH_LIBDE265: 1
WITH_RAV1E: 0
WITH_X265: 1
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Cache Coverity build tool
uses: actions/cache@v2
uses: actions/cache@v5
with:
path: |
coverity_tool.tar.gz
key: ${{ runner.os }}
key: coverity_tool-${{ runner.os }}

- name: Download Coverity build tool
run: |
Expand All @@ -39,10 +41,13 @@ jobs:

- name: Build with Coverity build tool
run: |
export PATH=`pwd`/coverity_tool/bin:$PATH
cov-build --dir cov-int make
export PATH=$(pwd)/coverity_tool/bin:$PATH
export PKG_CONFIG_PATH="$(pwd)/libde265/dist/lib/pkgconfig/:$(pwd)/third-party/rav1e/dist/lib/pkgconfig/:$(pwd)/third-party/dav1d/dist/lib/x86_64-linux-gnu/pkgconfig/"
cmake --preset=develop .
cov-build --dir cov-int make -j$(nproc)

- name: Submit build result to Coverity Scan
if: github.ref == 'refs/heads/coverity'
run: |
tar czvf libheif.tar.gz cov-int
curl --form token=$TOKEN \
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/diagram.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ on:
- main
jobs:
get_data:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@master
uses: actions/checkout@v6
- name: Update diagram
uses: githubocto/repo-visualizer@main
with:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/emscripten.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ on:
jobs:
emscripten:
env:
EMSCRIPTEN_VERSION: 1.37.26
runs-on: ubuntu-latest
EMSCRIPTEN_VERSION: 3.1.61
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install emscripten
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/fuzzer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ jobs:
env:
WITH_AOM: 1
WITH_GRAPHICS: 1
WITH_LIBDE265: 1
WITH_LIBDE265: 2
WITH_X265: 1
FUZZER: 1
runs-on: ubuntu-18.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/gcc-versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: gcc-versions

on:
push:
pull_request:

jobs:
build:
strategy:
matrix:
env:
- { NAME: "gcc-10", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 10 }
- { NAME: "gcc-11", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 11 }
- { NAME: "gcc-12", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 12 }
- { NAME: "gcc-13", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 13 }
- { NAME: "gcc-14", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 14 }
env: ${{ matrix.env }}
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6

- name: Install dependencies
run: |
./scripts/install-ci-linux.sh
sudo apt install gcc-${GCC} g++-${GCC}

- name: Prepare CI
env:
CC: gcc-${{matrix.env.GCC}}
CXX: g++-${{matrix.env.GCC}}
run: |
./scripts/prepare-ci.sh

- name: Run tests
env:
CC: gcc-${{matrix.env.GCC}}
CXX: g++-${{matrix.env.GCC}}
run: |
./scripts/run-ci.sh
7 changes: 3 additions & 4 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,16 @@ jobs:
matrix:
libde265-version:
- "1"
- "2"
env:
WITH_LIBDE265: ${{ matrix.libde265-version }}
WITH_X265: 1
WITH_GRAPHICS: 1
GO: 1
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- uses: actions/setup-go@v2
- uses: actions/setup-go@v6
with:
go-version: "1.10"

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ jobs:
cpplint:
env:
CPPLINT: 1
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand All @@ -29,9 +29,9 @@ jobs:
licenses:
env:
CHECK_LICENSES: 1
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/mingw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ jobs:
- { MINGW: 32 }
- { MINGW: 64 }
env: ${{ matrix.env }}
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/osx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ jobs:
build:
strategy:
matrix:
runner: [ macos-15, macos-15-intel ]
env:
- { NAME: "nothing" }
- { NAME: "cmake", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 1, CMAKE: 1 }
- { NAME: "cmake", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (1) / x265 / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_LIBDE265: 1 }
- { NAME: "libde265 (2) / x265 / graphics", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_LIBDE265: 2 }
env: ${{ matrix.env }}
runs-on: macos-10.15
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ jobs:
test:
env:
TESTS: 1
runs-on: ubuntu-latest
WITH_AOM: 1
WITH_LIBDE265: 1
WITH_X265: 1
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
Loading