Yet Another Media Infrastructure. it is core part of media codec with hardware acceleration, it is yummy to your video experience on Linux like platform.
Apache License 2.0
146
stars
106
forks
source link
The build fails with GCC 12 due to the newly added `array-compare` warning. #892
CXX libyami_decoder_la-vaapidecoder_h264.lo
In file included from vaapidecoder_h264.h:20,
from vaapidecoder_h264.cpp:21:
vaapidecoder_h264.cpp: In function 'void YamiMediaCodec::fillScalingList4x4(VAIQMatrixBufferH264*, std::shared_ptr<YamiParser::H264::PPS>)':
../codecparsers/h264Parser.h:101:20: error: comparison between two arrays [-Werror=array-compare]
101 | if ((dest) != (src)) { \
| ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
1247 | transform_coefficients_for_frame_macroblocks( \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1253:1: note: in expansion of macro 'FILL_SCALING_LIST'
1253 | FILL_SCALING_LIST(4x4, 16)
| ^~~~~~~~~~~~~~~~~
../codecparsers/h264Parser.h:101:20: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0] != &'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0]' to compare the addresses
101 | if ((dest) != (src)) { \
| ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
1247 | transform_coefficients_for_frame_macroblocks( \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1253:1: note: in expansion of macro 'FILL_SCALING_LIST'
1253 | FILL_SCALING_LIST(4x4, 16)
| ^~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp: In function 'void YamiMediaCodec::fillScalingList8x8(VAIQMatrixBufferH264*, std::shared_ptr<YamiParser::H264::PPS>)':
../codecparsers/h264Parser.h:101:20: error: comparison between two arrays [-Werror=array-compare]
101 | if ((dest) != (src)) { \
| ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
1247 | transform_coefficients_for_frame_macroblocks( \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1254:1: note: in expansion of macro 'FILL_SCALING_LIST'
1254 | FILL_SCALING_LIST(8x8, 64)
| ^~~~~~~~~~~~~~~~~
../codecparsers/h264Parser.h:101:20: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0] != &'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0]' to compare the addresses
101 | if ((dest) != (src)) { \
| ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
1247 | transform_coefficients_for_frame_macroblocks( \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1254:1: note: in expansion of macro 'FILL_SCALING_LIST'
1254 | FILL_SCALING_LIST(8x8, 64)
| ^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:753: libyami_decoder_la-vaapidecoder_h264.lo] Error 1
The issue
The new warning
array-compare
, which warns about comparisons between two operands of the array type, was added in GCC 12 (PR97573).GCC 12 is producing the
array-compare
warning forhttps://github.com/intel/libyami/blob/edd1ad15e383d32c8d67bdc9198c834b6acebca5/codecparsers/h264Parser.h#L99-L101
, resulting in build failure.
My log