virinext / hevcesbrowser

HEVCESBrowser is a tool for analyzing hevc(h265) bitstreams
GNU General Public License v2.0
338 stars 98 forks source link

Build on macos 10.15.2 (platform SDK has been changed from version 10.14 to version 10.15) #14

Open pryg-skok opened 4 years ago

pryg-skok commented 4 years ago

The steps completed successfully:

cmake ../ (from project dir)
make -j4 (with warnings, but for now lets skip them)
qmake hevc_es_browser_gui.pro (from ../utils/hevc_es_browser_gui/)

And then here is an error:

$ make gitinfo
make: *** No rule to make target `hevcesbrowser'.  Stop.
/usr/local/Cellar/qt/5.14.0/mkspecs/features/mac/sdk.mk:22: *** ^.  Stop.
The platform SDK has been changed from version 10.14 to version 10.15.
This requires a fresh build. Please wipe the build directory completely,
including any .qmake.stash and .qmake.cache files generated by qmake.

What can I do here?

Also here are warnings while make:

$ make -j4
Scanning dependencies of target hevcparser
[ 13%] Building CXX object hevcparser/CMakeFiles/hevcparser.dir/src/BitstreamReader.cpp.o
[ 13%] Building CXX object hevcparser/CMakeFiles/hevcparser.dir/src/Hevc.cpp.o
[ 20%] Building CXX object hevcparser/CMakeFiles/hevcparser.dir/src/HevcParser.cpp.o
[ 26%] Building CXX object hevcparser/CMakeFiles/hevcparser.dir/src/HevcParserImpl.cpp.o
[ 33%] Building CXX object hevcparser/CMakeFiles/hevcparser.dir/src/HevcUtils.cpp.o
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:437:41: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(pps_scaling_list_data_present_flag != pps_scaling_list_data_present_flag)
                                        ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:440:38: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(lists_modification_present_flag != lists_modification_present_flag)
                                     ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:443:39: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(log2_parallel_merge_level_minus2 != log2_parallel_merge_level_minus2)
                                      ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:446:50: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(slice_segment_header_extension_present_flag != slice_segment_header_extension_present_flag)
                                                 ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:449:25: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(pps_extension_flag != pps_extension_flag)
                        ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:822:40: warning: self-comparison always evaluates to false [-Wtautological-compare]
  if(ref_pic_list_modification_flag_l0 != ref_pic_list_modification_flag_l0)
                                       ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:843:42: warning: expression result unused [-Wunused-value]
    general_profile_compatibility_flag[32];
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/Hevc.cpp:843:5: warning: array index 32 is past the end of the array (which contains 32 elements) [-Warray-bounds]
    general_profile_compatibility_flag[32];
    ^                                  ~~
/Users/fresh/repos/hevcesbrowser/hevcparser/include/Hevc.h:59:5: note: array 'general_profile_compatibility_flag' declared here
    uint8_t                general_profile_compatibility_flag[32];
    ^
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:403:46: warning: '&&' within '||' [-Wlogical-op-parentheses]
        if(pslice -> collocated_from_l0_flag && pslice -> num_ref_idx_l0_active_minus1 ||
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:403:46: note: place parentheses around the '&&' expression to silence this warning
        if(pslice -> collocated_from_l0_flag && pslice -> num_ref_idx_l0_active_minus1 ||
                                             ^
           (                                                                          )
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:404:48: warning: '&&' within '||' [-Wlogical-op-parentheses]
            !pslice -> collocated_from_l0_flag && pslice -> num_ref_idx_l1_active_minus1)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:404:48: note: place parentheses around the '&&' expression to silence this warning
            !pslice -> collocated_from_l0_flag && pslice -> num_ref_idx_l1_active_minus1)
                                               ^
            (                                                                           )
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:410:37: warning: '&&' within '||' [-Wlogical-op-parentheses]
      if(ppps -> weighted_pred_flag && pslice -> slice_type == SLICE_P ||
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:410:37: note: place parentheses around the '&&' expression to silence this warning
      if(ppps -> weighted_pred_flag && pslice -> slice_type == SLICE_P ||
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:411:38: warning: '&&' within '||' [-Wlogical-op-parentheses]
        ppps -> weighted_bipred_flag && pslice -> slice_type == SLICE_B)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fresh/repos/hevcesbrowser/hevcparser/src/HevcParserImpl.cpp:411:38: note: place parentheses around the '&&' expression to silence this warning
        ppps -> weighted_bipred_flag && pslice -> slice_type == SLICE_B)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 warnings generated.
4 warnings generated.
[ 40%] Linking CXX static library ../../build/libhevcparser.a
[ 40%] Built target hevcparser
Scanning dependencies of target hevcparser_test
[ 46%] Building CXX object hevcparser/CMakeFiles/hevcparser_test.dir/tests/Parsing.cpp.o
[ 53%] Building CXX object hevcparser/CMakeFiles/hevcparser_test.dir/tests/Params.cpp.o
[ 60%] Building CXX object hevcparser/CMakeFiles/hevcparser_test.dir/tests/main.cpp.o
Scanning dependencies of target hevcesbrowser_console
[ 66%] Building CXX object utils/hevc_es_browser_console/CMakeFiles/hevcesbrowser_console.dir/src/main.cpp.o
[ 73%] Building CXX object utils/hevc_es_browser_console/CMakeFiles/hevcesbrowser_console.dir/src/HEVCInfoWriter.cpp.o
/Users/fresh/repos/hevcesbrowser/utils/hevc_es_browser_console/src/HEVCInfoWriter.cpp:26:12: warning: 4 enumeration values not handled in switch: 'NAL_IRAP_VCL23', 'NAL_EOS_NUT', 'NAL_EOB_NUT'... [-Wswitch]
    switch(m_nalus[i].m_pNALUnit -> m_nalHeader.type)
           ^
/Users/fresh/repos/hevcesbrowser/utils/hevc_es_browser_console/src/HEVCInfoWriter.cpp:26:12: note: add missing switch cases
    switch(m_nalus[i].m_pNALUnit -> m_nalHeader.type)
           ^
[ 80%] Building CXX object utils/hevc_es_browser_console/CMakeFiles/hevcesbrowser_console.dir/src/HEVCInfoAltWriter.cpp.o
1 warning generated.
[ 86%] Building CXX object utils/hevc_es_browser_console/CMakeFiles/hevcesbrowser_console.dir/__/common/ConvToString.cpp.o
[ 93%] Linking CXX executable ../../../build/hevcesbrowser_console
[ 93%] Built target hevcesbrowser_console
[100%] Linking CXX executable ../../build/hevcparser_test
[100%] Built target hevcparser_test
virinext commented 4 years ago

The purpose of $ make gitinfo command is to create version_info.h file. During this step the utils/hevc_es_browser_gui/verinfo/verinfo.sh script is used. As option you can extract version_info.h file from archive(version_info.zip) in attachments and put it into utils/hevc_es_browser_gui/ directory. After it you can skip the $ make gitinfo step and go to $ make step in utils/hevc_es_browser_gui/ directory.