Skip to content

tests fail (instead of being skipped) when HEVC decoder is unavailable #1900

Closed

Description

@rathann

With 1.23.3, I'm getting the following test failures when built without a HEVC decoder:

$ /usr/bin/ctest --test-dir redhat-linux-build --output-on-failure --force-new-ctest-process -j8
Test project /builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/redhat-linux-build
      Start  1: clap_decode
      Start  2: encode
      Start  3: encode_grid
      Start  4: entity_groups
      Start  5: extended_type
      Start  6: grid_tile_missing
      Start  7: iden_declared_size
      Start  8: item_writing
 1/40 Test  #4: entity_groups ...............................   Passed    0.02 sec
 2/40 Test  #5: extended_type ...............................***Skipped   0.02 sec
 3/40 Test  #6: grid_tile_missing ...........................***Failed    0.02 sec
Randomness seeded to: 205588934
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
grid_tile_missing is a Catch2 v3.7.1 host application.
Run with -? for options
-------------------------------------------------------------------------------
grid: real error is reported when all tiles fail to decode
-------------------------------------------------------------------------------
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/grid_tile_missing.cc:537
...............................................................................
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/grid_tile_missing.cc:563: FAILED:
  CHECK( err.code == heif_error_Invalid_input )
with expansion:
  11 == 2
with message:
  error message: Error while loading plugin: No decoding plugin installed for
  this compression format: HEVC (a suitable decoder plugin is libde265)
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/grid_tile_missing.cc:564: FAILED:
  CHECK( err.subcode == heif_suberror_End_of_data )
with expansion:
  6003 == 100
with message:
  error message: Error while loading plugin: No decoding plugin installed for
  this compression format: HEVC (a suitable decoder plugin is libde265)
===============================================================================
test cases:  5 |  4 passed | 1 failed
assertions: 41 | 39 passed | 2 failed
 4/40 Test  #7: iden_declared_size ..........................   Passed    0.02 sec
      Start  9: overlay_amplification
      Start 10: alpha_cycle_deadlock
      Start 11: region
      Start 12: sequence_no_track
 5/40 Test  #8: item_writing ................................***Skipped   0.02 sec
      Start 13: sequence_timing_overflow
 6/40 Test  #1: clap_decode .................................***Failed    0.03 sec
Randomness seeded to: 4028776798
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clap_decode is a Catch2 v3.7.1 host application.
Run with -? for options
-------------------------------------------------------------------------------
decode cropped image within default security limits
-------------------------------------------------------------------------------
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/clap_decode.cc:42
...............................................................................
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/clap_decode.cc:64: FAILED:
  REQUIRE( err.code == heif_error_Ok )
with expansion:
  11 == 0
with messages:
  clap_cropped.heic
  Error while loading plugin: No decoding plugin installed for this compression
  format: HEVC (a suitable decoder plugin is libde265)
-------------------------------------------------------------------------------
decode image with coded frame much larger than ispe
-------------------------------------------------------------------------------
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/clap_decode.cc:96
...............................................................................
/builddir/build/BUILD/libheif-1.23.3-build/libheif-1.23.3/tests/clap_decode.cc:108: FAILED:
  REQUIRE( err.code == heif_error_Ok )
with expansion:
  11 == 0
with message:
  Error while loading plugin: No decoding plugin installed for this compression
  format: HEVC (a suitable decoder plugin is libde265)
===============================================================================
test cases:  2 |  0 passed | 2 failed
assertions: 23 | 21 passed | 2 failed
      Start 14: tai
 7/40 Test  #2: encode ......................................***Skipped   0.04 sec
      Start 15: text
 8/40 Test  #9: overlay_amplification .......................   Passed    0.02 sec
 9/40 Test #12: sequence_no_track ...........................***Skipped   0.02 sec
      Start 16: cxx_wrapper
      Start 17: component_descriptions
10/40 Test #16: cxx_wrapper .................................   Passed    0.00 sec
      Start 18: ffmpeg_decode_bitdepth
11/40 Test #10: alpha_cycle_deadlock ........................   Passed    0.02 sec
12/40 Test #14: tai .........................................***Skipped   0.02 sec
      Start 19: encode_htj2k
      Start 20: encode_jpeg2000
13/40 Test #15: text ........................................   Passed    0.03 sec
      Start 21: mini_decode
14/40 Test #13: sequence_timing_overflow ....................   Passed    0.04 sec
      Start 22: omaf
15/40 Test #21: mini_decode .................................***Skipped   0.02 sec
      Start 23: uncompressed_decode
16/40 Test #18: ffmpeg_decode_bitdepth ......................   Passed    0.03 sec
      Start 24: uncompressed_decode_mono
17/40 Test #17: component_descriptions ......................***Skipped   0.05 sec
      Start 25: uncompressed_decode_rgb
18/40 Test #22: omaf ........................................***Skipped   0.03 sec
      Start 26: uncompressed_decode_rgb16
19/40 Test #19: encode_htj2k ................................   Passed    0.06 sec
      Start 27: uncompressed_decode_rgb565
20/40 Test #24: uncompressed_decode_mono ....................   Passed    0.03 sec
      Start 28: uncompressed_decode_rgb7
21/40 Test #26: uncompressed_decode_rgb16 ...................   Passed    0.02 sec
      Start 29: uncompressed_decode_ycbcr
22/40 Test #25: uncompressed_decode_rgb .....................   Passed    0.02 sec
      Start 30: uncompressed_decode_ycbcr420
23/40 Test #27: uncompressed_decode_rgb565 ..................   Passed    0.02 sec
      Start 31: uncompressed_decode_ycbcr422
24/40 Test #29: uncompressed_decode_ycbcr ...................   Passed    0.02 sec
      Start 32: uncompressed_sequence_odd_chroma
25/40 Test #30: uncompressed_decode_ycbcr420 ................   Passed    0.02 sec
      Start 33: uncompressed_mixed_chroma_depth_overflow
26/40 Test #28: uncompressed_decode_rgb7 ....................   Passed    0.02 sec
      Start 34: uncompressed_mixed_chroma_depth_colorconv
27/40 Test #31: uncompressed_decode_ycbcr422 ................   Passed    0.02 sec
      Start 35: uncompressed_block_pixel_overpacked
28/40 Test #20: encode_jpeg2000 .............................   Passed    0.11 sec
      Start 36: uncompressed_idat_tiled
29/40 Test #34: uncompressed_mixed_chroma_depth_colorconv ...   Passed    0.02 sec
      Start 37: uncompressed_encode
30/40 Test #33: uncompressed_mixed_chroma_depth_overflow ....   Passed    0.03 sec
      Start 38: uncompressed_decode_generic_compression
31/40 Test #32: uncompressed_sequence_odd_chroma ............   Passed    0.03 sec
      Start 39: uncompressed_tile_range_overflow
32/40 Test #35: uncompressed_block_pixel_overpacked .........   Passed    0.02 sec
      Start 40: tiffdecode
33/40 Test #23: uncompressed_decode .........................   Passed    0.09 sec
34/40 Test #40: tiffdecode ..................................   Passed    0.01 sec
35/40 Test #36: uncompressed_idat_tiled .....................   Passed    0.02 sec
36/40 Test #39: uncompressed_tile_range_overflow ............   Passed    0.02 sec
37/40 Test  #3: encode_grid .................................***Skipped   0.19 sec
38/40 Test #38: uncompressed_decode_generic_compression .....   Passed    0.03 sec
39/40 Test #11: region ......................................   Passed    0.21 sec
40/40 Test #37: uncompressed_encode .........................   Passed    0.47 sec
95% tests passed, 2 tests failed out of 40
Total Test time (real) =   0.64 sec
The following tests did not run:
	  2 - encode (Skipped)
	  3 - encode_grid (Skipped)
	  5 - extended_type (Skipped)
	  8 - item_writing (Skipped)
	 12 - sequence_no_track (Skipped)
	 14 - tai (Skipped)
	 17 - component_descriptions (Skipped)
	 21 - mini_decode (Skipped)
	 22 - omaf (Skipped)
The following tests FAILED:
	  1 - clap_decode (Failed)
	  6 - grid_tile_missing (Failed)
Errors while running CTest

Could I ask you to:

  1. use HEVC only when testing HEVC-specific features and prefer AVIF otherwise
  2. skip tests that require a codec that isn't available

Use case: in Fedora, we have to disable codecs which we cannot distribute, so HEVC, x264 and VVC are unavailable at this time.

Thanks in advance.

Activity

  1. farindk commented on Sep 2, 2026

    @farindk
    Member

    Thanks for the report. The above patch changes the tests to use AVIF instead of HEIC when possible and it skips the HEIC specific test when no codec is configured.

  2. rathann commented on Sep 2, 2026

    @rathann
    ContributorAuthor

    That was fast! Thanks a lot. I think I have one more case where HEVC is required unconditionally, but I'll submit that one separately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions