Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3908 commits
Select commit Hold shift + click to select a range
87f58d9
read component-type queries from m_components
farindk May 2, 2026
418f7ef
drop m_component_types
farindk May 2, 2026
b9128e5
drop m_component_content_ids
farindk May 2, 2026
cfc243d
component getters read from m_components
farindk May 2, 2026
4d8df68
populate ComponentDescription on unci items at parse time
farindk May 2, 2026
b88be0c
heif_image_handle: read components from m_components
farindk May 2, 2026
e1f9a57
unc_codec: decoder uses ImageItem's component descriptions
farindk May 2, 2026
b9bc201
unc_image: chroma subsampling in populate_component_descriptions()
farindk May 2, 2026
34be4a0
cache bytes_per_pixel in ImageComponent
farindk May 2, 2026
103a617
pixelimage: transfer_plane_from_image_as also moves component descrip…
farindk May 2, 2026
2cc706f
add unit test for component descriptions in interleaved-RGB and Bayer…
farindk May 2, 2026
ddb4eb5
component descriptions in the ImageItem and then remap decoded image
farindk May 2, 2026
f33e48a
add alpha channel when populating ImageItem component description
farindk May 2, 2026
f1fd74a
add unit-tests for HEIC/AVIF component population
farindk May 2, 2026
7499e31
fix component remap on image with cpat
farindk May 2, 2026
1554e1b
unit test for components in unci+cpat image
farindk May 2, 2026
5989ce2
populate component descriptions for tili / grid / iden / iovl
farindk May 2, 2026
ff916a1
tili: reject tile offset/size that overflow the configured field width
farindk May 2, 2026
78638f4
increase heif_enc's tili offset field size to 40 bits
farindk May 2, 2026
8f5e2e7
heif-dec: add option to control number of tile decoding threads (#1787)
farindk May 11, 2026
ba79151
work around GCC false positive warning
farindk May 12, 2026
3d94894
align heif_component_datatype with iso23001-17 formats
farindk May 12, 2026
c964743
rename ImageExtraData to ImageDescription
farindk May 12, 2026
f05c61e
split pixelimage.* files into separate files
farindk May 12, 2026
e94c54a
work around a GCC 14 false positive
farindk May 12, 2026
580ca12
CI: compile with GCC 15
farindk May 12, 2026
3300152
Merge branch 'master' into image-handle-unci
farindk May 12, 2026
9b7aff3
cleanup
farindk May 12, 2026
b5b0e99
cleanup heif_image_set_gimi_component_content_id()
farindk May 12, 2026
da52c41
simplify ComponentDescription::gimi_content_id by dropping the option…
farindk May 12, 2026
a067693
remove optional<> for m_gimi_sample_content_id
farindk May 12, 2026
857564c
decouple HeixPixelImage from ImageDescription (remove protected access)
farindk May 12, 2026
e1c3912
deduplicate output of map_cmpd_to_component_ids()
farindk May 12, 2026
714e682
add defensive asserts
farindk May 12, 2026
c8fd97e
rename heif_chroma_monochrome to heif_chroma_planar
farindk May 12, 2026
fc72eae
fix Doxygen warnings
farindk May 13, 2026
65c881c
tests: use heif_unci_component_type_monochrome instead of custom cons…
farindk May 13, 2026
2371913
rename ImageDescription::get_*_box() to create_*_box()
farindk May 13, 2026
5fed0bf
fix returning invalid component id from HeifPixelImage::get_primary_c…
farindk May 13, 2026
4065f6c
consistently use heif_colorspace_custom instead of heif_colorspace_no…
farindk May 13, 2026
0b81eb9
combine two functions into register_plane_descriptions()
farindk May 13, 2026
fc33dc8
iterate components instead of heif_channels when rotating or cropping…
farindk May 13, 2026
23f9d3a
add function to copy over all metadata to new image
farindk May 13, 2026
c4d4e0d
remove add_channel() in favor of add_plane()
farindk May 14, 2026
de9d2b9
rename internal add_plane() to add_channel()
farindk May 14, 2026
375f10e
simplification
farindk May 14, 2026
d13e851
improved check of decoded image size
farindk May 14, 2026
48a57e8
rename get_channel() to get_channel_memory()
farindk May 14, 2026
e8c0020
rename get_component_data() to get_component_memory()
farindk May 14, 2026
29b9ae2
protect HeifPixelImage padding to custom component size configurations
farindk May 14, 2026
e06ce00
Fix out-of-bounds read in extract_image_area for out-of-range x0/y0
farindk May 14, 2026
da83042
Release the old plane buffer when reallocating in extend_padding/exte…
farindk May 14, 2026
4891473
Fix integer overflow in scale_nearest_neighbor index computation
farindk May 14, 2026
2a5e070
Skip destination-missing channels in copy_image_to instead of derefer…
farindk May 14, 2026
b65b044
Reject non-8-bit RGBA in extract_alpha_from_RGBA
farindk May 14, 2026
3bc3809
Return an error for unsupported bit depth in rotate_ccw
farindk May 14, 2026
aa6a2a8
Correct get_used_component_ids() documentation to match implementation
farindk May 14, 2026
d43b642
Reject subsampled chroma in HeifPixelImage::overlay()
farindk May 14, 2026
620a740
Return 0 instead of 65535 for a missing channel in get_bits_per_pixel
farindk May 14, 2026
74116f2
Clamp debug_dump output to the actual plane size
farindk May 14, 2026
b886fcd
add missing includes
farindk May 14, 2026
cb17fbc
enable ENABLE_EXPERIMENTAL_MINI_FORMAT in testing preset
farindk May 15, 2026
747edc0
use new names in color_conversion_fuzzer
farindk May 15, 2026
040095a
add legacy enum name to emscripten
farindk May 15, 2026
4238604
guard mini-format tests
farindk May 15, 2026
39cc0c1
add missing Go enum
farindk May 15, 2026
56d8d02
fixed gofmt
farindk May 15, 2026
7a09de6
go: fix enum type casting for new typedef'd C enums
farindk May 15, 2026
7dc8570
fix decoder initialization order
farindk May 15, 2026
b75e61b
resolve endless recursion in get_id_of_non_virtual_child_image()
farindk May 15, 2026
a00a540
fix gofmt
farindk May 15, 2026
66c5196
consistently use typedefs instead of enum types to fix Go compilation
farindk May 15, 2026
69f73e1
tighten lint regex to work with typedefs
farindk May 15, 2026
1e79622
decoder_libde265: guard against version length in plugin name
lovell May 1, 2026
d513742
use simple constant string and fix off-by-one in bounds check (#1780)
farindk May 15, 2026
c19d030
tighten lint regex to work with typedefs
farindk May 15, 2026
07a7ef6
decoder: guard against possible stride integer overflow
lovell May 1, 2026
f4901e7
also prevent overflow in memcpy source argument (#1779)
farindk May 15, 2026
a70ed5e
prevent int overflow in HeifPixelImage::fill_channel()
farindk May 15, 2026
03a1b04
add regression test for #1783
farindk May 15, 2026
8b92dc7
region: ensure offset is incremented after parsing mask
lovell May 1, 2026
4a5febc
pass security_limits through decoder plugin options (#1782)
farindk May 15, 2026
3d86523
fix typo
farindk May 15, 2026
f644141
Print NCLX color profile and CLL
torusrxxx May 7, 2026
4c395a4
add human-readable output of nclx/clli (#1789)
farindk May 15, 2026
9e624fa
Fix SDL YV12 buffer overflow when converting 444 into 420
torusrxxx Apr 24, 2026
61bdd53
aom encoder: auto-select IQ mode if possible (#1797, #1725)
farindk May 15, 2026
d881d6e
Update to the libaom v3.14.0 release
wantehchang May 14, 2026
8dee282
fuzzing: add api_fuzzer for non-decode API surfaces
jortles May 8, 2026
a257a2a
fuzzing: address Copilot review nits
jortles May 8, 2026
16252da
unci: allocate tiles with correct size (#1800)
farindk May 15, 2026
9e144d1
remove unnecessary cast
farindk May 15, 2026
69a0ca1
pass a tightened heif_security_limits to the decoder plugins with a m…
farindk May 15, 2026
748b2b7
prevent integer underflow in conformance window cropping (#1794)
farindk May 15, 2026
352c335
HEVC: check for valid bit-depth range (#1795)
farindk May 15, 2026
942e409
validate JPEG-2000 component sizes (#1796)
farindk May 15, 2026
adfc3c2
check all get_uvlc() calls for errors (#1785)
farindk May 15, 2026
86a99d6
add API function heif_track_get_number_of_repetitions() (#1777)
farindk May 15, 2026
3a4f40a
heif-info: show number of editlist repetitions (#1777)
farindk May 15, 2026
51b6116
show warning when nclx and bitstream VUI disagree (#1770)
farindk May 15, 2026
b51817b
colr mismatch: refer to both 14496-12 and 23000-22
farindk May 15, 2026
131fb2e
add new suberror enum to emscripten and Go
farindk May 15, 2026
9a8cf52
Remove Rec 2020 CL matrix coefficients from preset
torusrxxx May 7, 2026
1b10345
add TODO comment for 'BT.2020 CL' implementation
farindk May 15, 2026
2384843
check for valid heif_image_crop() parameters (#1788)
farindk May 15, 2026
4f35129
add regression test for #1800
farindk May 15, 2026
02084d7
register memory allocated on derived limits to the parent (#1801)
farindk May 16, 2026
8809cf3
add a script to overwrite the colr box in a HEIF image (#1770)
farindk May 17, 2026
f2eb4e2
Merge branch 'webp' of github.com:torusrxxx/libheif into torusrxxx-webp
farindk May 17, 2026
13bd548
add FindWEBP.cmake
farindk May 17, 2026
fd689e0
webp: use ftell() instead of Windows specific _ftelli64()
farindk May 17, 2026
8718f72
webp: add missing link statement
farindk May 17, 2026
ffdd95f
webp: add error check
farindk May 17, 2026
7a71c93
webp: avoid duplicate fix_icc_profile()
farindk May 17, 2026
8b111f1
webp: removed unused variables
farindk May 17, 2026
a4ad577
webp: improve user notes, cosmetic fixes
farindk May 17, 2026
009ff70
webp: use RAII for cleanup
farindk May 17, 2026
7de9768
webp: only use RGBA when alpha plane is present
farindk May 17, 2026
00aeb4b
webp: fix warnings
farindk May 17, 2026
1d1e0db
Merge branch 'webp'
farindk May 17, 2026
96c6d33
heif-enc: add HEIF input (e.g. for HEIC to AVIF convertion)
farindk May 17, 2026
f226988
webp: fix compiler warning
farindk May 17, 2026
e462edc
add MIT license to colr box fixing script
farindk May 17, 2026
002f09d
webp: add missing include
farindk May 17, 2026
d254c21
webp: comment out unused constants
farindk May 17, 2026
b81e148
avoid HEIF_WITH_OMAF in public header
farindk May 17, 2026
bc736c0
remove heif_image_handle_has_omaf_image_projection()
farindk May 17, 2026
52c91b3
remove heif_omaf_image_projection_unknown
farindk May 17, 2026
7776794
remove cmake HEIF_WITH_OMAF option
farindk May 17, 2026
f1058b4
all typed heif_image_get_component_X() function now return number of …
farindk May 17, 2026
7414b38
remove ENABLE_EXPERIMENTAL_MINI_FORMAT flag
farindk May 17, 2026
4a5f519
adapt mini box syntax to current WD spec
farindk May 17, 2026
0840e33
move omaf functions into its own header file and provide heif_image v…
farindk May 17, 2026
8af39e0
merge heif_security limits v5 into v4
farindk May 17, 2026
b36db10
use heif_unci_image_parameters* in heif_encoding_options instead of j…
farindk May 17, 2026
85deb07
factor out image component functions into heif_components.h
farindk May 17, 2026
d74e4ec
move iso23001-17 properties into heif_properties.h
farindk May 17, 2026
873c208
remove heif_uncompressed_types.h header
farindk May 17, 2026
3086d5a
validate mini box data size
farindk May 17, 2026
315427a
check mini box allocations against security limit
farindk May 17, 2026
61c7fd0
mini: various fixes
farindk May 17, 2026
4b2550d
mini: fix orientation handling
farindk May 17, 2026
12dc9cf
add unit-test for mini box orientation round-trip
farindk May 17, 2026
ed1018c
fix false UB detection in libstdc++
farindk May 17, 2026
1225780
CI: temporarily disable coverity scan
farindk May 17, 2026
0665e35
add defensive checks that a plugin encoder is not reused (#1732)
farindk May 17, 2026
edc1250
Validate stsc sample coverage against stsz/stts
Niebelungen-D Feb 27, 2026
9b46f2a
simplify complex logic (#1786)
farindk May 17, 2026
62d6053
unci: fix heap OOB in tiled chroma decode (GHSA-5x55-x5pf-9c6g)
farindk May 17, 2026
1fbf062
Fix webp not announced in usage
torusrxxx May 18, 2026
e580eb5
heif-dec: build list of supported suffixes dynamically (#1805)
farindk May 18, 2026
5075bf1
fix UB when copying TextItem text
farindk May 18, 2026
0d4e00f
heif_entity_groups: fix NULL deref on unknown grpl child types
jortles May 18, 2026
eb115d6
tests: add regression test for entity group NULL deref (#1806)
farindk May 18, 2026
e1b9764
grid: fix NULL deref in decode_grid_tile on missing tile reference
jortles May 18, 2026
23c45f7
tests: add regression test for grid tile NULL deref (#1807)
farindk May 18, 2026
c5cd4f1
add tile_fuzzer to exercise tiling API (#1807)
farindk May 18, 2026
518bd95
grid: fix OOB read in decode_grid_tile when grid exceeds tile count
jortles May 18, 2026
2231fb3
tests: add regression test for grid tile OOB read (#1808)
farindk May 18, 2026
294d9c0
reject unci images with no ispe box
farindk May 18, 2026
6f82659
reject unci images with bit-depth >128
farindk May 18, 2026
eb5048c
validate uncC pixel_size against new security limit and overflow
farindk May 18, 2026
e523ec0
fix tile coordinates validation in rotated images
farindk May 18, 2026
7239551
fix get_tile_size() for invalid files
farindk May 18, 2026
6721f30
fix integer overflow when computing chroma sizes
farindk May 18, 2026
5392d26
vvdec: fix NALU length check (#1809)
farindk May 18, 2026
43cbcf0
return 'still unsupported' error instead of throwing assertion (#1810)
farindk May 18, 2026
c3372ca
validate AVC conformance window size
farindk May 18, 2026
6aca89d
initialize allocated memory to avoid information leak (GHSA-2vh6-whr3…
farindk May 18, 2026
724ad42
since image memory is now zero filled on allocation, we can remove ze…
farindk May 18, 2026
97af71f
vvdec: split frame size adjustment to prevent overflow
farindk May 18, 2026
0b73cfd
tili: prevent int overflow (thanks to @m1-llie for reporting this)
farindk May 18, 2026
4f94407
add defensive check in init_sample_timing_table() (thanks to @m1-llie…
farindk May 18, 2026
0484709
avoid integer overflow in SampleAuxInfoReader::get_sample_info() (tha…
farindk May 18, 2026
0412fe6
unci: avoid integer overflow in row-interleave decoder
farindk May 18, 2026
ed36271
check for missing sample description box
farindk May 18, 2026
187626f
validate data size against file size and maximum memory limit
farindk May 18, 2026
59ec312
fix querying decoder image without pushing data first
farindk May 18, 2026
475e558
unci: validate size of component_align_size
farindk May 18, 2026
a1ac57d
add missing include
farindk May 18, 2026
61a620d
unci: limit block size of block_pixel_interleave decoder to 64 bits
farindk May 19, 2026
6373bbe
fix integer overflow when tightening security limit of maximum image …
farindk May 19, 2026
2f6b962
do explicit std::move
farindk May 19, 2026
20c7c43
add auto-correct option to fix known input image errors (#1770)
farindk May 19, 2026
b742ae3
aom: use tuneIqQualityToQuantizer[] table when using IQ tune mode (#1…
farindk May 19, 2026
38d8df9
aom: add TODO comment to differentiate image sequences from video seq…
farindk May 19, 2026
bccbbc9
increase version to v1.22.0
farindk May 19, 2026
327b036
PNG: show the same EXIF write error as for JPEG
farindk May 19, 2026
86beddf
add heif_sequence_content_kind enum to differentiate video content fr…
farindk May 19, 2026
37ecc2d
fix typo (#1805)
farindk May 19, 2026
f36bd8c
unci: prevent integer overflow when parsing uncC (GHSA-4h72-vqgp-9376)
farindk May 19, 2026
0c81a84
unci: update unit tests with new error response
farindk May 19, 2026
d593f49
remove obsolete HEIF_WITH_OMAF from CMake presets
farindk May 19, 2026
06ab54a
resolve #1811
farindk May 19, 2026
ef124f9
heif_properties.h: fix "bad_pixels" type
stefantalpalaru May 19, 2026
b5ccea1
OpenJPEG plugin: also link against common_utils.cc (#1813)
farindk May 20, 2026
39a2ac4
OpenJPH: add parent include directory to support both include path va…
farindk May 21, 2026
7266684
when webp is enabled, link defensively to pthread (#1816)
farindk May 22, 2026
2975f20
add CI test that each public header is a pure C file that is self-con…
farindk May 22, 2026
00edbc7
add script for public C header test (#1812)
farindk May 22, 2026
b12b733
Update to the libaom v3.14.1 release
wantehchang May 22, 2026
40f361a
fix heif_region_item_add_region_inline_mask() when passed image size …
farindk May 25, 2026
5782bca
unci: prevent integer overflow when reading compressed data (GHSA-r7q…
farindk May 25, 2026
596cf2c
add defensive check that DataExtent reads do not overflow
farindk May 25, 2026
0c44a74
unci: prevent int overflow when reading icef ranges
farindk May 25, 2026
e9bf0c9
unci: only compute implied_offset if used
farindk May 25, 2026
5780da8
only run omaf and mini tests if codec plugins are available (thanks P…
farindk May 25, 2026
425b708
svt: don't allow getting qp unless it's set
flaviozavan May 21, 2026
8027b0a
increase version to v1.22.1
farindk May 25, 2026
a953d5a
webp: avoid leak when error occurs during decoding
farindk May 25, 2026
2b6d5a6
webp: add missing include
farindk May 25, 2026
617f092
fix API function name (#1822)
farindk May 25, 2026
331dd57
CI: add check that all public API functions actually exist (#1822)
farindk May 25, 2026
763bc8b
increase version to v1.22.2
farindk May 25, 2026
513b1d6
implement 'rref' box (#1823)
farindk May 26, 2026
d9ff25f
only reject decoding images with errors (e.g., do not reject file com…
farindk May 26, 2026
4369d8d
support 'ndwt' box (#1826)
farindk May 27, 2026
14a689a
rename component_idx parameters to component_id in heif_components
farindk May 27, 2026
256d13a
add TODO comment to provide consistent clli API
farindk May 27, 2026
e3b6af8
Revert "add defensive checks that a plugin encoder is not reused (#17…
farindk May 27, 2026
871526f
AOM/Kvazaar/Rav1e/SVT/uvg266/vvenc: fix memory leak when encoder is r…
DarthSim Mar 16, 2026
e0a09a7
update component sizes during cloning and padding
farindk May 28, 2026
57f2c1a
tests: add regression test for heif_context_encode_grid()
farindk May 28, 2026
b86cf7f
add_and_encode_full_grid: use image dimensions instead of interleaved…
farindk May 28, 2026
ad9c222
heif_context_add_grid_image: fall back to default options when null
farindk May 28, 2026
73e90b0
add heif_image_handle_has_content_light_level / heif_image_handle_has…
farindk May 28, 2026
f5eecea
add public API for ambient_viewing_environment (amve box)
farindk May 28, 2026
c111c63
mini box: propagate HDR metadata in both directions
farindk May 28, 2026
bd09055
document HDR metadata structs against H.265 spec
farindk May 28, 2026
3b67ae9
iovl images with no references are invalid according to ISO23008-12
farindk May 28, 2026
a6caa38
fix check against security limit (GHSA-jvmp-j3cw-84mh)
farindk May 28, 2026
3834467
return error during sequence parsing
farindk May 28, 2026
952b6e6
move security check before chunk allocation
farindk May 28, 2026
49a8557
check 'stco' box entries against security limits
farindk May 28, 2026
79301bd
skip reading sgpt boxes with unknown grouping types
farindk May 28, 2026
38d73fa
add MemoryHandle::alloc() overload with int overflow checking
farindk May 28, 2026
5f67d12
detect integer overflow during Chunk construction
farindk May 28, 2026
03a01b1
tili: defensive check against number of tiles
farindk May 28, 2026
69563fb
de265: when v1.1.0 is detected, pass through image size security limits
farindk May 28, 2026
9c0d83c
CI: use normal libde265 in fuzzer
farindk May 28, 2026
9f7c289
implement parsing/writing of 'iscl' box
farindk May 28, 2026
9502996
add heif_decoding_options flag for nclx passthrough (#1828)
farindk May 28, 2026
9d1cccb
increase version to v1.23.0
farindk May 29, 2026
bd114ed
factor out LIBHEIF_API macro into heif_export.h
farindk May 29, 2026
4bd49f9
Move the TAI clock_type into the 2 highests bits
ocrete May 31, 2026
b0c40e0
fix broken PNG HDR support
May 31, 2026
0842cec
fix integer type (#1833)
farindk May 31, 2026
186e8db
add missing 'override' (#1832)
farindk May 31, 2026
3021ff4
only use __visibility__ attribute with GCC/Clang compilers
farindk Jun 4, 2026
438ecc3
if the plugin directory is set to the empty string, do not try to sca…
farindk Jun 17, 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
47 changes: 47 additions & 0 deletions .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: CIFuzz

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: "0 2 * * SUN"

jobs:
Fuzzing:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
architecture: [x86_64, i386]
sanitizer: [address, undefined, memory]
# Remove combinations not supported by action.
exclude:
- architecture: i386
sanitizer: undefined
- architecture: i386
sanitizer: memory
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
architecture: ${{ matrix.architecture }}
sanitizer: ${{ matrix.sanitizer }}
- 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
sanitizer: ${{ matrix.sanitizer }}
- name: Upload Crash
uses: actions/upload-artifact@v7
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts-${{ matrix.sanitizer }}-${{ matrix.architecture }}
path: ./out/artifacts
if-no-files-found: ignore
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)
23 changes: 16 additions & 7 deletions .github/workflows/coverity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,32 @@ name: coverity

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

jobs:
scan:
runs-on: ubuntu-latest
# TEMPORARILY DISABLED: scan.coverity.com is down and the download step
# fails before the build can run. Re-enable by removing this `if` line
# once the Coverity service is back.
if: false
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 +45,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
4 changes: 2 additions & 2 deletions .github/workflows/fuzzer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ jobs:
WITH_LIBDE265: 1
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
44 changes: 44 additions & 0 deletions .github/workflows/gcc-versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
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 }
- { NAME: "gcc-15", WITH_GRAPHICS: 1, WITH_X265: 1, WITH_AOM: 1, WITH_LIBDE265: 3, GCC: 15 }
env: ${{ matrix.env }}
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6

- name: Install dependencies
run: |
./scripts/install-ci-linux.sh
# gcc-15 is not in the noble main archives yet; pull it from the
# ubuntu-toolchain-r/test PPA. The line is harmless for older GCCs.
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt update
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
36 changes: 32 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 @@ -26,12 +26,40 @@ jobs:
run: |
./scripts/run-ci.sh

c-api-headers:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6

- name: Install compilers
run: |
sudo apt-get update
sudo apt-get install -y gcc clang

- name: Check that public headers are valid C
run: |
./scripts/check-c-headers.sh

api-symbols:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6

- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y cmake g++

- name: Check that all declared API functions are defined in the library
run: |
./scripts/check-api-symbols.sh

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
Loading