intel / libyami

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

Compilation fails on GCC 8.0.1 #845

Closed uartie closed 6 years ago

uartie commented 6 years ago

libva (master) heads/master-0-gd6fd111e2062 ffmpeg (master) heads/master-0-gd176497cec95 libyami (apache) heads/apache-0-g8e941ab610db

GCC 8.0.1 is default on recently released Fedora 28.

$ ./autogen.sh --disable-silent-rules --prefix="/opt/media/install" --enable-tests --enable-debug --enable-h264enc --enable-jpegenc --enable-vp8enc --enable-vp9enc --enable-h265enc --enable-h264dec --enable-jpegdec --enable-vp8dec --enable-vp9dec --enable-h265dec --enable-mpeg2dec --enable-vc1dec --disable-fakedec --disable-oclfilters --enable-dmabuf --enable-md5 --disable-egl --disable-v4l2 --disable-wayland --enable-x11
$ make

h264Parser_unittest.cpp: In member function 'void YamiParser::H264::H264ParserTest::checkH264Pps(YamiParser::H264::Parser&, const YamiParser::H264::NalUnit*)':
h264Parser_unittest.cpp:150:45: error: 'void* memset(void*, int, size_t)' clearing an object of type 'using element_type = std::remove_extent<YamiParser::H264::PPS>::type' {aka 'struct YamiParser::H264::PPS'} with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
             memset(pps.get(), 0, sizeof(PPS));
                                             ^
In file included from h264Parser_unittest.cpp:22:
h264Parser.h:292:8: note: 'using element_type = std::remove_extent<YamiParser::H264::PPS>::type' {aka 'struct YamiParser::H264::PPS'} declared here
 struct PPS {
        ^~~
h264Parser_unittest.cpp: In member function 'void YamiParser::H264::H264ParserTest::checkH264SliceHeader(YamiParser::H264::Parser&, YamiParser::H264::NalUnit*)':
h264Parser_unittest.cpp:176:55: error: 'void* memset(void*, int, size_t)' clearing an object of type 'using element_type = std::remove_extent<YamiParser::H264::SliceHeader>::type' {aka 'class YamiParser::H264::SliceHeader'} with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
             memset(slice.get(), 0, sizeof(SliceHeader));
                                                       ^
In file included from h264Parser_unittest.cpp:22:
h264Parser.h:371:7: note: 'using element_type = std::remove_extent<YamiParser::H264::SliceHeader>::type' {aka 'class YamiParser::H264::SliceHeader'} declared here
 class SliceHeader {
       ^~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:908: unittest-h264Parser_unittest.o] Error 1
make[2]: Leaving directory '/opt/media/build/libyami/codecparsers'
make[1]: *** [Makefile:681: all-recursive] Error 1
make[1]: Leaving directory '/opt/media/build/libyami'
make: *** [Makefile:508: all] Error 2
uartie commented 6 years ago

Fixed by #835