Giter Club home page Giter Club logo

vvdec's People

Contributors

adamjw24 avatar cadubentzen avatar chenm001 avatar christianfeldmann avatar ewouth avatar jamaika1 avatar jcdr428 avatar k-os avatar lehmann-c avatar matthieu-sauer avatar nuomi2021 avatar schweinepriester avatar xrayleigh2000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vvdec's Issues

Decoding into a color desynced video

Each color is desynced and displayed at a different time causing a scrolling picture with frame edges falling over into the next frame

OS: Windows 10 - WSL 2
CPU: Ryzen 7 3700x
GPU Nvidia RTX 3060
Ram: 32gb

Original:
mpv-shot0005
Decoded:
mpv-shot0001

v1.0.0.0 decode POUT_A_Sharplabs_2.bit failed

I report this issue in discussions page, and I just confirm it is a bug this morning.

In the latest v1.0.0.0 code, we will get decoded output YUV hash check failed on sequence POUT_A_Sharplabs_2.bit.
The root cause is the sequence POUT_A_Sharplabs_2.bit active ph_pic_output_flag for bypass some of output frames.
However, in the source code, the below code was disabled for unknown reasons since v1.0.0.0 release.
pcPic->neededForOutput = (pcSlice->getPicHeader()->getPicOutputFlag() ? true : false);

Failed to compile Linux armv7 vvdec binary for errors of new release vvdec 2.3.0

Hi!

I have an issue about cross-compiling Linux armv7 vvdec binary on my Linux x86_64 machine.
The commit of edd47ab doesn't work and it fails to compile armv7 vvdec binary for Linux, but last commit of 85ed28d was successfully compiled of Linux arm64 binary.

I'm running on Ubuntu 22.04.3 LTS Server and also GCC 11.4.0 with g++.

Here is the log that may be helpful to you and used CMake Toolchain of ARMv7.

toolchain_armv7.cmake:

# name of the target operating system
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR armv7l)

set( GNU_MACHINE "arm-linux-gnueabihf" )

# which compilers to use for C and C++
SET(CMAKE_C_COMPILER   /usr/bin/${GNU_MACHINE}-gcc)
SET(CMAKE_CXX_COMPILER /usr/bin/${GNU_MACHINE}-g++)

# Where is the target environment
SET(CMAKE_FIND_ROOT_PATH  /usr/bin/${GNU_MACHINE})

# Search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# For libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

CMake output logs:

martineesmaa@martineesmaa:~/vvdec/build$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="../cmake/toolchains/toolchain_armv7.cmake" -DCMAKE_EXE_LINKER_FLAGS="-static" .. && cmake --build . -j 8
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/arm-linux-gnueabihf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/arm-linux-gnueabihf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_MODULE_PATH: updating module path to: /home/martineesmaa/vvdec/cmake/modules
-- Performing Test SUPPORTED_Werror_unused_command_line_argument
-- Performing Test SUPPORTED_Werror_unused_command_line_argument - Failed
-- Performing Test SUPPORTED_msse4_1
-- Performing Test SUPPORTED_msse4_1 - Failed
-- Performing Test SUPPORTED_msse2
-- Performing Test SUPPORTED_msse2 - Failed
-- Performing Test SUPPORTED_mavx
-- Performing Test SUPPORTED_mavx - Failed
-- Performing Test HAVE_INTRIN_mm_storeu_si16
-- Performing Test HAVE_INTRIN_mm_storeu_si16 - Success
-- Performing Test HAVE_INTRIN_mm_storeu_si32
-- Performing Test HAVE_INTRIN_mm_storeu_si32 - Success
-- Performing Test HAVE_INTRIN_mm_storeu_si64
-- Performing Test HAVE_INTRIN_mm_storeu_si64 - Success
-- Performing Test HAVE_INTRIN_mm_loadu_si32
-- Performing Test HAVE_INTRIN_mm_loadu_si32 - Success
-- Performing Test HAVE_INTRIN_mm_loadu_si64
-- Performing Test HAVE_INTRIN_mm_loadu_si64 - Success
-- Performing Test HAVE_INTRIN_mm256_zeroupper
-- Performing Test HAVE_INTRIN_mm256_zeroupper - Failed
-- Performing Test HAVE_INTRIN_mm256_loadu2_m128i
-- Performing Test HAVE_INTRIN_mm256_loadu2_m128i - Success
-- x86 SIMD intrinsics enabled (using SIMDE for non-x86 targets)
-- ARM SIMD intrinsics enabled
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test SUPPORTED_mxsave
-- Performing Test SUPPORTED_mxsave - Failed
-- Performing Test SUPPORTED_mavx2
-- Performing Test SUPPORTED_mavx2 - Failed
-- Some bitstream files are missing.
--   If you want to run tests, reconfigure with -DVVDEC_ENABLE_BITSTREAM_DOWNLOAD=ON
--   (or using top level Makefile: make test enable-bitstream-download=1)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/martineesmaa/vvdec/build
[  2%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/Buffer_sse41.cpp.o
[  2%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/AdaptiveLoopFilter_sse41.cpp.o
[  3%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/InterPred_sse41.cpp.o
[  4%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/IntraPred_sse41.cpp.o
[  6%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/LoopFilter_sse41.cpp.o
[  7%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/Picture_sse41.cpp.o
[  8%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_x86_simd.dir/__/CommonLib/x86/sse41/InterpolationFilter_sse41.cpp.o
[  9%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec_arm_simd.dir/__/CommonLib/arm/neon/Buffer_neon.cpp.o
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h: In function ‘vvdec::applyLut_SIMD<(vvdec::arm_simd::ARM_VEXT)1>(short*, int, int, int, short const*)void’:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:13526:1: error: inlining failed in call to ‘always_inline’ ‘vst4q_s16’: target specific option mismatch
13526 | vst4q_s16 (int16_t * __a, int16x8x4_t __b)
      | ^~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:217:18: note: called from here
  217 |         vst4q_s16( &ptr[ x ], xtmp1 );
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:13526:1: error: inlining failed in call to ‘always_inline’ ‘vst4q_s16’: target specific option mismatch
13526 | vst4q_s16 (int16_t * __a, int16x8x4_t __b)
      | ^~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:218:18: note: called from here
  218 |         vst4q_s16( &ptr[ x + 1 * ptrStride ], xtmp2 );
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:13526:1: error: inlining failed in call to ‘always_inline’ ‘vst4q_s16’: target specific option mismatch
13526 | vst4q_s16 (int16_t * __a, int16x8x4_t __b)
      | ^~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:219:18: note: called from here
  219 |         vst4q_s16( &ptr[ x + 2 * ptrStride ], xtmp3 );
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:13526:1: error: inlining failed in call to ‘always_inline’ ‘vst4q_s16’: target specific option mismatch
13526 | vst4q_s16 (int16_t * __a, int16x8x4_t __b)
      | ^~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:220:18: note: called from here
  220 |         vst4q_s16( &ptr[ x + 3 * ptrStride ], xtmp4 );
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:6441:1: error: inlining failed in call to ‘always_inline’ ‘vsetq_lane_s16’: target specific option mismatch
 6441 | vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
      | ^~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:238:40: note: called from here
  238 |         xtmp1.val[ 0 ] = vsetq_lane_s16( lut[ ptr[ x + 0 ] ], xtmp1.val[ 0 ], 0 );
      |                          ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:6441:1: error: inlining failed in call to ‘always_inline’ ‘vsetq_lane_s16’: target specific option mismatch
 6441 | vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
      | ^~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:239:40: note: called from here
  239 |         xtmp1.val[ 1 ] = vsetq_lane_s16( lut[ ptr[ x + 1 ] ], xtmp1.val[ 1 ], 0 );
      |                          ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:6441:1: error: inlining failed in call to ‘always_inline’ ‘vsetq_lane_s16’: target specific option mismatch
 6441 | vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
      | ^~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:240:40: note: called from here
  240 |         xtmp1.val[ 0 ] = vsetq_lane_s16( lut[ ptr[ x + 2 ] ], xtmp1.val[ 0 ], 1 );
      |                          ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:6441:1: error: inlining failed in call to ‘always_inline’ ‘vsetq_lane_s16’: target specific option mismatch
 6441 | vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
      | ^~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:241:40: note: called from here
  241 |         xtmp1.val[ 1 ] = vsetq_lane_s16( lut[ ptr[ x + 3 ] ], xtmp1.val[ 1 ], 1 );
      |                          ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../CommonDefARM.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/../BufferARM.h:53,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/arm/neon/Buffer_neon.cpp:43:
/usr/lib/gcc-cross/arm-linux-gnueabihf/11/include/arm_neon.h:6441:1: error: inlining failed in call to ‘always_inline’ ‘vsetq_lane_s16’: target specific option mismatch
 6441 | vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
      | ^~~~~~~~~~~~~~

CMake output logs (disabled of x86 and ARM SIMD):

martineesmaa@martineesmaa:~/vvdec/build$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="../cmake/toolchains/toolchain_armv7.cmake" -DCMAKE_EXE_LINKER_FLAGS="-static" -DVVDEC_ENABLE_X86_SIMD=OFF -DVVDEC_ENABLE_ARM_SIMD=OFF .. && cmake --build . -j 8
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/arm-linux-gnueabihf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/arm-linux-gnueabihf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_MODULE_PATH: updating module path to: /home/martineesmaa/vvdec/cmake/modules
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Some bitstream files are missing.
--   If you want to run tests, reconfigure with -DVVDEC_ENABLE_BITSTREAM_DOWNLOAD=ON
--   (or using top level Makefile: make test enable-bitstream-download=1)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/martineesmaa/vvdec/build
[  3%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/AdaptiveLoopFilter.cpp.o
[  3%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/BitStream.cpp.o
[  5%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/CodingStructure.cpp.o
[  7%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Contexts.cpp.o
[ 11%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ContextModelling.cpp.o
[ 11%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/InterPrediction.cpp.o
[ 13%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Buffer.cpp.o
[ 15%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ChromaFormat.cpp.o
[ 16%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/InterpolationFilter.cpp.o
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/Slice.h:52,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/WeightPrediction.h:50,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/InterPrediction.h:51,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/InterPrediction.cpp:47:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/Slice.h:52,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/Picture.h:55,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/Buffer.cpp:54:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.cpp:47:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/Slice.h:52,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/ContextModelling.h:51,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/ContextModelling.cpp:47:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/Slice.h:52,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/CodingStructure.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/AdaptiveLoopFilter.cpp:49:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
In file included from /home/martineesmaa/vvdec/source/Lib/CommonLib/Slice.h:52,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/CodingStructure.h:54,
                 from /home/martineesmaa/vvdec/source/Lib/CommonLib/CodingStructure.cpp:47:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h: In member function ‘void vvdec::InputBitstream::load_next_bits(int)’:
/home/martineesmaa/vvdec/source/Lib/CommonLib/BitStream.h:206:21: error: ‘simde_bswap64’ was not declared in this scope
  206 |       m_held_bits = simde_bswap64( *reinterpret_cast<uint64_t*>( &m_fifo[m_fifo_idx] ) );
      |                     ^~~~~~~~~~~~~
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:90: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/BitStream.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:174: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/InterPrediction.cpp.o] Error 1
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:146: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ContextModelling.cpp.o] Error 1
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:104: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Buffer.cpp.o] Error 1
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:76: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/AdaptiveLoopFilter.cpp.o] Error 1
gmake[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:132: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/CodingStructure.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:170: source/Lib/vvdec/CMakeFiles/vvdec.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

So that's my two error logs, but here is a full log if you want it:
fullerrorlogoflinuxarmv7vvdec.zip

Feel free to reply or ask question to me. Thank you! :)

Sincerely

  • Martin Eesmaa

Weird decoding artefacts in all SIMD decoding modes

Only scalar variant of the decoder is correct. All SIMD optimized modes are exhibiting uninitialized patterns.

peter.kovar@Pascal /1TB/usr/src/github.com/1div0/vvdec/Linux/x86-64/Core i7
€ vvdecapp --simd 0 --bitstream /home/peter.kovar/Video/VVC/Kimono1_1920x1080_24.QP30.266 --output /1TB/Video/YUV/Kimono1_1920x1080_24.QP30.266.yuv
€ vvdecapp --simd 1 --bitstream /home/peter.kovar/Video/VVC/Kimono1_1920x1080_24.QP30.266 --output /1TB/Video/YUV/Kimono1_1920x1080_24.QP30.266.sse41.yuv
€ vvdecapp --simd 2 --bitstream /home/peter.kovar/Video/VVC/Kimono1_1920x1080_24.QP30.266 --output /1TB/Video/YUV/Kimono1_1920x1080_24.QP30.266.sse42.yuv
€ vvdecapp --simd 3 --bitstream /home/peter.kovar/Video/VVC/Kimono1_1920x1080_24.QP30.266 --output /1TB/Video/YUV/Kimono1_1920x1080_24.QP30.266.avx.yuv
€ vvdecapp --simd 4 --bitstream /home/peter.kovar/Video/VVC/Kimono1_1920x1080_24.QP30.266 --output /1TB/Video/YUV/Kimono1_1920x1080_24.QP30.266.avx2.yuv

Screenshot is available at:
https://nextcloud.reflexion.tv/index.php/s/oPmE7PWmpp6GbYp

Decode fail

Hello,
I have a VVC file,which can be decoded successfully by VTM, but it fails when use the vvdec application to decode it.The error message is as follows:
vvdecapp [error]: decoding failed: (possibly recoverable) exception (decoder requires restart) detail: Exception occured:
ERROR: In function "void __cdecl vvdec::Slice::constructSingleRefPicList(const class std::list<struct vvdec::Picture *,class std::allocator<struct vvdec::Picture *> > &,enum vvdec::RefPicList)" in D:\inter_algorithm\vvdec\source\Lib\CommonLib\Slice.cpp:504: reference picture as wrong POC
ERROR CONDITION: pcRefPic->getPOC() != refPOC
Please give me your email,I can send the vvc file to you. Thanks!

gcc 12.1.0: Werror in IntraPred_avx2.cpp

Snippet of the error

FAILED: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/x86/avx2/IntraPred_avx2.cpp.obj
ccache D:\media-autobuild_suite\msys64\mingw64\bin\ccache.exe  g++ -DVVDEC_SOURCE -D_WIN32_WINNT=0x0600 -DUSE_AVX2 -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../../../include -ID:/media-autobuild_suite/build/vvdec-git/build-64bit -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/SYSTEM -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/. -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/.. -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../DecoderLib -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../CommonLib -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../CommonLib/x86 -ID:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../libmd5 -isystem D:/media-autobuild_suite/build/vvdec-git/source/Lib/vvdec/../../../thirdparty -mthreads -mtune=generic -O2 -pipe -DTARGET_SIMD_X86 -O3 -DNDEBUG -msse4.1 -Wall -Werror -Wno-unused-function -Wno-sign-compare -fdiagnostics-show-option -Wno-ignored-attributes -std=gnu++14 -mavx2 -MD -MT source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/x86/avx2/IntraPred_avx2.cpp.obj -MF source\Lib\vvdec\CMakeFiles\vvdec.dir\__\CommonLib\x86\avx2\IntraPred_avx2.cpp.obj.d -o source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/x86/avx2/IntraPred_avx2.cpp.obj -c D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/avx2/IntraPred_avx2.cpp
In file included from D:/media-autobuild_suite/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.1.0/include/immintrin.h:47,
                 from D:/media-autobuild_suite/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.1.0/include/x86intrin.h:32,
                 from D:/media-autobuild_suite/msys64/mingw64/include/intrin.h:69,
                 from D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/CommonDef.h:71,
                 from D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/IntraPredX86.h:47,
                 from D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/avx2/IntraPred_avx2.cpp:43:
In function '__m256i _mm256_mulhi_epi16(__m256i, __m256i)',
    inlined from 'void vvdec::IntraPredSampleFilter_SIMD(Pel*, ptrdiff_t, PelBuf&, uint32_t, const ClpRng&) [with X86_VEXT vext = vvdec::AVX2; int W = 16]' at D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/IntraPredX86.h:490:41:
D:/media-autobuild_suite/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.1.0/include/avx2intrin.h:548:44: error: 'wl16start' may be used uninitialized [-Werror=maybe-uninitialized]
  548 |   return (__m256i)__builtin_ia32_pmulhw256 ((__v16hi)__A, (__v16hi)__B);
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/IntraPredX86.h: In function 'void vvdec::IntraPredSampleFilter_SIMD(Pel*, ptrdiff_t, PelBuf&, uint32_t, const ClpRng&) [with X86_VEXT vext = vvdec::AVX2; int W = 16]':
D:/media-autobuild_suite/build/vvdec-git/source/Lib/CommonLib/x86/IntraPredX86.h:449:18: note: 'wl16start' was declared here
  449 |     __m256i wl16,wl16start;
      |                  ^~~~~~~~~
cc1plus.exe: all warnings being treated as errors

Windows 11, msys2's mingw-w64 gcc 12.1.0

Y4M locked at 50fps output

Would is be possible to add a feature that allows the FPS adjustment of the Y4M output mode (such as 30, 25, 24 FPS etc.). Currently, Y4M output is locked to 50fps.

Thank you for your consideration.

multithreading stuck

When I use vvdec to decode my bitstream on the linux server, if I don't add the “-t” parameter , it will get stuck. But if I set -t 64 ,it run successfully.

CMake error at Path

Severity Code Description Project File Line Suppression State
Error CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.20/Modules/CMakeTestCCompiler.cmake:66 (message):
The C compiler

"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: C:/Users/mmard/source/repos/vvdec/out/build/x64-Debug/CMakeFiles/CMakeTmp

Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe cmTC_d3696 && [1/2] Building C object CMakeFiles\cmTC_d3696.dir\testCCompiler.c.obj
[2/2] Linking C executable cmTC_d3696.exe
FAILED: cmTC_d3696.exe 
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_d3696.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests  -- C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_d3696.dir\testCCompiler.c.obj  /out:cmTC_d3696.exe /implib:cmTC_d3696.lib /pdb:cmTC_d3696.pdb /version:0.0 /machine:x64  /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
RC Pass 1: command "rc /fo CMakeFiles\cmTC_d3696.dir/manifest.res CMakeFiles\cmTC_d3696.dir/manifest.rc" failed (exit code 0) with the following output:
Das System kann die angegebene Datei nicht finden
ninja: build stopped: subcommand failed.

CMake will not be able to correctly generate this project. C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.20/Modules/CMakeTestCCompiler.cmake 66
Hello How to solve this ?

https://github.com/fraunhoferhhi/vvdec

In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:205:21: note: in instantiation of function template specialization 'vvdec::VVDecImpl::catchExceptions<int (vvdec::VVDecImpl::*)(const vvdecParams &, void *(*)(void *, vvdecComponentType, unsigned int, unsigned int, void **), void (*)(void *, void *)), vvdecParams, std::nullptr_t, std::nullptr_t>' requested here
  int ret = decCtx->catchExceptions( &vvdec::VVDecImpl::init, *params, nullptr, nullptr );
                    ^
In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:247:21: note: in instantiation of function template specialization 'vvdec::VVDecImpl::catchExceptions<int (vvdec::VVDecImpl::*)(const vvdecParams &, void *(*)(void *, vvdecComponentType, unsigned int, unsigned int, void **), void (*)(void *, void *)), vvdecParams, void *(*)(void *, vvdecComponentType, unsigned int, unsigned int, void **), void (*)(void *, void *)>' requested here
  int ret = decCtx->catchExceptions( &vvdec::VVDecImpl::init, *params, callbackBufAlloc, callbackBufUnref );
                    ^
In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:271:22: note: in instantiation of function template specialization 'vvdec::VVDecImpl::catchExceptions<int (vvdec::VVDecImpl::*)()>' requested here
  const int ret = d->catchExceptions( &vvdec::VVDecImpl::uninit );
                     ^
In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:306:13: note: in instantiation of function template specialization 'vvdec::VVDecImpl::catchExceptions<int (vvdec::VVDecImpl::*)(vvdecAccessUnit &, vvdecFrame **), vvdecAccessUnit, vvdecFrame **>' requested here
  return d->catchExceptions( &vvdec::VVDecImpl::decode, *accessUnit, frame );
            ^
In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:320:13: note: in instantiation of function template specialization 'vvdec::VVDecImpl::catchExceptions<int (vvdec::VVDecImpl::*)(vvdecFrame **), vvdecFrame **>' requested here
  return d->catchExceptions( &vvdec::VVDecImpl::flush, frame );
            ^
In file included from /usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/vvdec.cpp:43:
/usr/ports/multimedia/vvdec/work/vvdec-2.2.0/source/Lib/vvdec/./vvdecimpl.h:228:14: error: cast from pointer to smaller type 'TRet' (aka 'int') loses information
      return (TRet) NULL;
             ^~~~~~~~~~~

NULL isn't generally defined as zero, instead it is defined as nullptr.

You need to use "0" in these places.

Version: 2.2.0
clang-16
FreeBSD 14.0

Decoding fails an a valid file?

AV: 00:09:32 / unknown (100%) A-V:  0.000 Dropped: 8321
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - (possibly recoverable) exception Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
Error while decoding frame!
[ffmpeg/video] libvvdec: error in vvdec::decode - ret:-11 - restart required, please reinit. Exception occured: 
[ffmpeg/video] ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /tmp/vvdec-2.1.3/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
[ffmpeg/video] ERROR CONDITION: !binVal
[ffmpeg/video] libvvdec: Too many errors when draining, this is a bug. Stop draining and force EOF.
Error while decoding frame!

I'm using mpv + ffmpeg 6.0.1 patched with vvdec support.

The raw H.266 file can be downloaded here: https://mega.nz/file/PgNiwLzA#pIRNACUVTpD1xcbWlo0Il4p_vv2E5nE4l5c-1Y5_hno

The source file was encoded using VVENC 1.10.0 this way:

ffmpeg -i *mp4 -vf scale=1024x576:flags=lanczos,fps=30 -f yuv4mpegpipe - | nice -20 vvencapp --y4m -i - --preset slow -q 31 -o y4m.266

vvenc [info]: stats summary: frame= 192931 avg_fps= 0.5 avg_bitrate= 638.11 kbps
vvenc [info]: stats summary: frame I: 6029, kbps: 9202.92, AvgQP: 25.25
vvenc [info]: stats summary: frame P:    0, kbps:     nan, AvgQP: nan
vvenc [info]: stats summary: frame B: 186902, kbps:  361.83, AvgQP: 36.34


vvenc [info]:   Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR
vvenc [info]:      192931    a     638.1111   37.7132   43.8204   43.9743   37.6809
vvencapp [info]: Total Time: 401380.129 sec. Fps(avg): 0.481 encoded Frames 192931

Decode fail

Hello,
I have a VVC file test16.bin,but VVdec can only decode the first frame, and the other frames fail to be decoded. VTM can completely decode the entire file of 30 frames, it seems that this is a VVdec corresponding decoding bug, the attachment contains the encoded file, what is the error caused by this? Thank you!

test16.zip
the log is as follows:
VVdeC, the Fraunhofer VVC/H.266 decoder, version 2.2.0 [THREADS=1; PARSE_DELAY=1; SIMD=AVX2]
POC 8 LId: 0 TId: 1 ERROR
vvdecapp [warning]: (possibly recoverable) exception (decoder input data error) detail: Exception while tuning in:
ERROR: In function "void __cdecl vvdec::DecSlice::parseSlice(class vvdec::Slice *,class vvdec::InputBitstream *,int)" in vvdec\source\Lib\DecoderLib\DecSlice.cpp:173: Expecting a terminating bit
ERROR CONDITION: !binVal

Many segfaults with extreme qp's

When doing tests with single frames (just one frame per bitstream), I realized that when using extreme qps for encoding, like 51, the encoder encodes well, but the decoder crashes with segfault. Same source with qp 45, for example, does not crash the decoder.

[Question] Are further VVC decoding optimizations possible? Coming?

Currently software VVC decoding using this library is 2-3 times more expensive CPU-wise than AV1 decoding.

Have you enabled/explored all the optimization options, or there are things left to optimize?

I've been under the impression that VVC mustn't be as expensive to decode as AV1 because the latter is patent-free, so some algorithms are not as good as for VVC which contains a ton of patents.

Installs files into the source directory

I've built it in /usr/ports/multimedia/vvdec/work and the installed files list looks like this:

/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/bin/%%CMAKE_BUILD_TYPE%%-static/vvdecapp
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/include/vvdec/version.h
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/include/vvdec/vvdec.h
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/include/vvdec/vvdecDecl.h
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/lib/cmake/VVDec/VVDecConfig.cmake
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/lib/cmake/VVDec/VVDecConfigVersion.cmake
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/lib/cmake/VVDec/static/VVDecTargets-%%CMAKE_BUILD_TYPE%%.cmake
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/lib/cmake/VVDec/static/VVDecTargets.cmake
/usr/ports/multimedia/vvdec/work/vvdec-df4be18/install/lib/%%CMAKE_BUILD_TYPE%%-static/libvvdec.a

The cmake install instructions should simply have targets like "include", "lib".

Need to be able to control the level of SIMD through cmake options

When the package is built it should be built for the lowest common SIMD level supported everywhere, even though the build server might support a higher level. Individual users might want to build individually for their own hardware.

The project should have configuration options to choose the level of SIMD.

Ideally, there should be boolean options:

  • SIMD_NONE
  • SIMD_NATIVE
  • SIMD_SSE2
  • SIMD_SSE41
  • SIMD_SSE42
    etc, etc.

Otherwise the package built on a server with high SIMD level would crash on an older CPU with lower SIMD support.

Error building of vvdec wasm using emsdk

Operating system: Ubuntu 20.04.4 LTS

Branch: 80e038f

Note: Trying to build wasm in vvdec repository, but one error generated. EMSDK is already installed and patched environment, no corruption.

Steps:

  1. Git clone from vvdec
  2. cd vvdec
  3. emcmake cmake -B build/wasm
  4. cmake --build build/wasm

See the error log:

unknown@unknown-12345:~/Downloads/vvdec$ emcmake cmake -B build/wasm
configure: cmake -B build/wasm -DCMAKE_TOOLCHAIN_FILE=/home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR=/home/unknown/Downloads/emsdk/node/14.18.2_64bit/bin/node;--experimental-wasm-threads
-- CMAKE_MODULE_PATH: updating module path to: /home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules;/home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules;/home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules;/home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules;/home/unknown/Downloads/emsdk/upstream/emscripten/cmake/Modules;/home/unknown/Downloads/vvdec/cmake/modules
-- Performing Test SUPPORTED_Werror_unused_command_line_argument
-- Performing Test SUPPORTED_Werror_unused_command_line_argument - Success
-- Performing Test SUPPORTED_msse4_1
-- Performing Test SUPPORTED_msse4_1 - Success
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Performing Test SUPPORTED_msse4_2
-- Performing Test SUPPORTED_msse4_2 - Success
-- Performing Test SUPPORTED_mavx
-- Performing Test SUPPORTED_mavx - Success
-- Performing Test SUPPORTED_mavx2
-- Performing Test SUPPORTED_mavx2 - Success
-- Some bitstream files are missing.
--   If you want to run tests, reconfigure with -DVVDEC_ENABLE_BITSTREAM_DOWNLOAD=ON
--   (or using top level Makefile: make test enable-bitstream-download=1)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/unknown/Downloads/vvdec/build/wasm
unknown@unknown-12345:~/Downloads/vvdec$ cmake --build build/wasm
Scanning dependencies of target vvdec
[  1%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/AdaptiveLoopFilter.cpp.o
[  2%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/BitStream.cpp.o
[  3%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Buffer.cpp.o
[  4%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ChromaFormat.cpp.o
[  5%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/CodingStructure.cpp.o
[  6%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ContextModelling.cpp.o
[  8%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Contexts.cpp.o
[  9%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/InterPrediction.cpp.o
[ 10%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/InterpolationFilter.cpp.o
[ 11%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/IntraPrediction.cpp.o
[ 12%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/LoopFilter.cpp.o
[ 13%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/MatrixIntraPrediction.cpp.o
[ 14%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/Mv.cpp.o
[ 16%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/ParameterSetManager.cpp.o
[ 17%] Building CXX object source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/PicListManager.cpp.o
/home/unknown/Downloads/vvdec/source/Lib/CommonLib/PicListManager.cpp:382:12: error: variable 'dpbFullness' set but not used [-Werror,-Wunused-but-set-variable]
  unsigned dpbFullness            = 0;
           ^
1 error generated.
em++: error: '/home/unknown/Downloads/emsdk/upstream/bin/clang++ -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=10 -fignore-exceptions -fvisibility=default -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=/home/unknown/Downloads/emsdk/upstream/emscripten/cache/sysroot -D__SSE__=1 -D__SSE2__=1 -D__SSE3__=1 -D__SSSE3__=1 -D__SSE4_1__=1 -Xclang -iwithsysroot/include/compat -DTARGET_SIMD_WASM -DVVDEC_SOURCE -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/../../../include -I/home/unknown/Downloads/vvdec/build/wasm -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/SYSTEM -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/. -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/.. -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/../DecoderLib -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/../CommonLib -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/../CommonLib/x86 -I/home/unknown/Downloads/vvdec/source/Lib/vvdec/../libmd5 -isystem /home/unknown/Downloads/vvdec/source/Lib/vvdec/../../../thirdparty -DTARGET_SIMD_X86 -O3 -DNDEBUG -flto=thin -fPIC -pthread -msimd128 -Wall -Werror -Wno-unused-function -Wno-enum-compare-switch -Wno-unknown-attributes -std=gnu++14 -c -matomics -mbulk-memory /home/unknown/Downloads/vvdec/source/Lib/CommonLib/PicListManager.cpp -o CMakeFiles/vvdec.dir/__/CommonLib/PicListManager.cpp.o' failed (returned 1)
make[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:260: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/PicListManager.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:171: source/Lib/vvdec/CMakeFiles/vvdec.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
  • Martin Eesmaa

Which is the pixel format of the yuv output?

Which is the pixel format of the yuv output?
I'm trying to convert with ffmpeg to a format I can read, but I don't know which format to choose (yuv422p did not work, yuv420p obviously not too).

Segmentation Fault for Main 10 with VPS

Hi all, we're seeing a segfault (Mac OS master as of today) when trying to decode the attached stream. It's a Main 10, 640 x 480 with VPS. The same stream from the same encoder works fine without VPS. Would you mind looking into this?

./vvdecapp -b /Users/xxxx/Downloads/vps/vvc.vvc
Fraunhofer VVC/H.266 Decoder VVdeC, version 1.5.0 [THREADS=10; PARSE_DELAY=10; SIMD=NEON/SIMDE(SSE42)]
zsh: segmentation fault ./vvdecapp -b /Users/notto/Downloads/vps/vvc.vvc

vvc.vvc.zip

Thanks in advance

Fail to build for powerpc

powerpc Debian unstable gcc 10.2.1

FAILED: source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/UnitTools.cpp.o 
c++ -DVVDEC_SOURCE -Dvvdec_EXPORTS -I../source/Lib/vvdec/../../../include -I. -I../source/Lib/vvdec/SYSTEM -I../source/Lib/vvdec/. -I../source/Lib/vvdec/.. -I../source/Lib/vvdec/../DecoderLib -I../source/Lib/vvdec/../CommonLib -I../source/Lib/vvdec/../CommonLib/x86 -I../source/Lib/vvdec/../libmd5 -g -O2 -ffile-prefix-map=/home/marillat/vvdec-dmo-1.1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -fPIC -Wall -Werror -Wno-unused-function -Wno-sign-compare -fdiagnostics-show-option -Wno-ignored-attributes -std=gnu++14 -MD -MT source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/UnitTools.cpp.o -MF source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/UnitTools.cpp.o.d -o source/Lib/vvdec/CMakeFiles/vvdec.dir/__/CommonLib/UnitTools.cpp.o -c ../source/Lib/CommonLib/UnitTools.cpp
../source/Lib/CommonLib/UnitTools.cpp: In function ‘void vvdec::PU::getInterMergeCandidates(const PredictionUnit&, vvdec::MergeCtx&, vvdec::MotionHist&, const int&)’:
../source/Lib/CommonLib/UnitTools.cpp:1246:50: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
 1246 |     mrgCtx.interDirNeighbours [uiArrayAddr     ] = 1;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from ../source/Lib/CommonLib/UnitTools.h:55,
                 from ../source/Lib/CommonLib/UnitTools.cpp:51:
../source/Lib/CommonLib/ContextModelling.h:468:17: note: at offset 6 to object ‘vvdec::MergeCtx::interDirNeighbours’ with size 6 declared here
  468 |   unsigned char interDirNeighbours[ MRG_MAX_NUM_CANDS      ];
      |                 ^~~~~~~~~~~~~~~~~~
../source/Lib/CommonLib/UnitTools.cpp:1247:50: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
 1247 |     mrgCtx.BcwIdx             [uiArrayAddr     ] = BCW_DEFAULT;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
In file included from ../source/Lib/CommonLib/UnitTools.h:55,
                 from ../source/Lib/CommonLib/UnitTools.cpp:51:
../source/Lib/CommonLib/ContextModelling.h:467:17: note: at offset 6 to object ‘vvdec::MergeCtx::BcwIdx’ with size 6 declared here
  467 |   uint8_t       BcwIdx            [ MRG_MAX_NUM_CANDS      ];
      |                 ^~~~~~
../source/Lib/CommonLib/UnitTools.cpp:1253:58: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
 1253 |       mrgCtx.interDirNeighbours [ uiArrayAddr          ] = 3;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from ../source/Lib/CommonLib/UnitTools.h:55,
                 from ../source/Lib/CommonLib/UnitTools.cpp:51:
../source/Lib/CommonLib/ContextModelling.h:468:17: note: at offset 6 to object ‘vvdec::MergeCtx::interDirNeighbours’ with size 6 declared here
  468 |   unsigned char interDirNeighbours[ MRG_MAX_NUM_CANDS      ];
      |                 ^~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors```

macOS seg fault

So I was just starting to mess around with VVC enc and dec and got this crash right away. Encoded a raw I420 video with vvencapp --preset faster -i video6.iyuv -s 360x360 -o video6.266 --framerate 10 --bitrate 125000 and then tried to decode it with vvdecapp --bitstream video6.266 --output video6-dec.yuv - got a crash in void offsetBlock_SIMD<(X86_VEXT)4>(int, ClpRngTemplate<short> const&, int, int*, int, short const*, short*, long, long, int, int, bool, bool, bool, bool, bool, bool, bool, bool, std::__1::vector<signed char, std::__1::allocator<signed char> >*, std::__1::vector<signed char, std::__1::allocator<signed char> >*, bool, int*, int*, int, int).
video6.266 and crash report attached.

vvdec-crash.zip

'make test enable-bitstream-download=1' fails to download bitstreams

        Start 144: MISSING:MTS_A_LGE_4.bit
144/238 Test #144: MISSING:MTS_A_LGE_4.bit ...................***Failed    0.00 sec
vvdecapp [error]: failed to open bitstream file /usr/ports/multimedia/vvdec/work/vvdec-1.6.1/ext/bitstreams/MTS_A_LGE_4/MTS_A_LGE_4.bit

        Start 145: MISSING:MTS_B_LGE_4.bit
145/238 Test #145: MISSING:MTS_B_LGE_4.bit ...................***Failed    0.00 sec
vvdecapp [error]: failed to open bitstream file /usr/ports/multimedia/vvdec/work/vvdec-1.6.1/ext/bitstreams/MTS_B_LGE_4/MTS_B_LGE_4.bit

Version: 1.6.1
OS: FreeBSD 13.1

Whether to use unsigned char for bitstreams which internal-bitdepth are 8?

Hello,

At present, there are many 8-bit videos in practical applications, but vvdec uses short to store pixel values for bitstreams which internal-bitdepth are 8. According to the experience on HEVC decoder, using unsigned char to store pixel values can save 20-30% memory and 10-20% decoding time. Does vvdec have an optimized plan for using unsigned char to store pixel values for bitstreams which internal-bitdepth are 8.

Decoding vvc file failed by using vvdec ,but it successed by using VTM

Hello,
I have a VVC file ,which can be decoded successfully by VTM, but when I use the vvdec application to decode it ,it fails. It gave me the following error:
vvdecapp [error]: decoding failed: (decoder requires restart) detail: caught unknown exception
ERROR: In function "void __cdecl vvdec::InterPrediction::xPredInterUni(const struct vvdec::CodingUnit &,const enum vvdec::RefPicList &,struct vvdec::UnitBuf &,const bool &,const bool &,const bool,const bool)" in D:\vvdec\source\Lib\CommonLib\InterPrediction.cpp:641: xPredInterUni missing ref pic
ERROR CONDITION: !refPic
Please give me your email,I can send the vvc file to you. Thanks!

VVDEC Pipe output not supported

It appears vvdec does not support pipe output using -o - or any other command option. Unfortunately, YUV files are enormous. It would be very efficient if vvdes could output via pipe into vlc or mplayer for testing purposes.

Would you please plan that in next version?

Any help would be greatly appreciated. Thank You.

Android Build

This is more of a question then an issue. How would one use make to build the Android app? After I generate the exectables using 'make install-release' all that is built is vvdec.exe for Windows.

Any help would be appreciated.

Build failure with profiling enabled

In file included from /2TB/usr/src/github.com/1div0/vvdec/source/Lib/vvdec/../CommonLib/CommonDef.h:583,
from /2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLibParser.h:45,
from /2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLib.h:49,
from /2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLibRecon.cpp:47:
/2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLibRecon.cpp: In lambda function:
/2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLibRecon.cpp:686:27: error: ‘picture’ was not declared in this scope; did you mean ‘Picture’?
686 | __itt_frame_end_v3( picture->m_itt_decLibInst, nullptr );
| ^~~~~~~
/2TB/usr/src/github.com/intel/ittapi/include/ittnotify.h:247:39: note: in definition of macro ‘ITTNOTIFY_VOID_D1’
247 | #define ITTNOTIFY_VOID_D1(n,d,x) (d == NULL) ? (void)0 : (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x)
| ^
/2TB/usr/src/github.com/1div0/vvdec/source/Lib/DecoderLib/DecLibRecon.cpp:686:7: note: in expansion of macro ‘__itt_frame_end_v3’
686 | itt_frame_end_v3( picture->m_itt_decLibInst, nullptr );
| ^~~~~~~~~~~~~~~~~~
make[2]: *** [source/Lib/vvdec/CMakeFiles/vvdec.dir/build.make:636: source/Lib/vvdec/CMakeFiles/vvdec.dir/
/DecoderLib/DecLibRecon.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:198: source/Lib/vvdec/CMakeFiles/vvdec.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Attached CMake cache file for reference.
CMakeCache.txt

Add y4m option for output

Adding y4m output would mean an output that's playable without external metadata knowledge, which would be an important milestone for ease of use.

STDOUT on Windows not functioning

Stdout on Windows is not functioning. Although stdout ir outputting data, the data is is in some format that the video is not useable. However, STDOUT data on Centos appears to working as expected.

Some of sequence decode failed/mismatch to VTM-11.0

PPS_A_Bytedance_1.bit
PPS_B_Bytedance_1.bit
PPS_C_Bytedance_1.bit
RAP_C_HHI_1.bit
RAP_D_HHI_1.bit
SPS_A_Bytedance_1.bit
SPS_B_Bytedance_1.bit
SPS_C_Bytedance_1.bit

Yes, all of MD5 output show (OK), however, the output YUV file is mismatch, I guess there have some issues.
For example, when I decode PPS_A_Bytedance_1.bit, I found there have some warning message:

POC   21 LId:  0 TId: 4 ( b-SLICE, QP 41 ) [DT  0.090] [L0 20 16 ] [L1 22 24 ]
         [MD5:9483073a823e35b66f384d04eb432d4b,86fe136f12847dd7d70ce9727311f072,81710675df597c4fa3d23a1e41a32e0f,(OK)]

WARNING: In function "DecLib::decode" in R:\vvdec\source\Lib\DecoderLib\DecLib.cpp:207: missing output picture
vvdecapp [error]: missing output picture!
POC   23 LId:  0 TId: 4 ( b-SLICE, QP 41 ) [DT  0.111] [L0 22 20 ] [L1 24 32 ]
         [MD5:a05751049f037378b238e7ec1df071a4,f75821b412ab678f2004d02c3f639bd7,e31ed27fdeea0de94d8409508849f2e3,(OK)]

Decoding vvc files despite corruption

Hello,

I have a corrupted VVC binary file and I want to decode it using the vvdec application, but it gave me the following error:
vvdecapp [error]: decoding failed: (decoder requires restart) detail: caught unknown exception
ERROR: In function "void vvdec::DecSlice::parseSlice(vvdec::Slice*, vvdec::InputBitstream*, int)" in /home/labiod/vvdec/source/Lib/DecoderLib/DecSlice.cpp:172: Expecting a terminating bit
ERROR CONDITION: !binVal
I tried to decode it using VTM also, but it gave me:
ERROR: In function "decompressSlice" in /home/XXXX/VVCSoftware_VTM/source/Lib/DecoderLib/DecSlice.cpp:250: Expecting a terminating bit

Please let me know if there is a way to decode VVC files despite the corruption.

Compiling warning

Hi!

While compiling VVdeC with Visual Studio 2017 I've stumbled accross this warning for lines 430, 433, 435 and 438 of the "adaptiveloopfilterx86.h" file:
\vvdec-master\vvdec-master\source\lib\commonlib\x86\adaptiveloopfilterx86.h(438): warning C4789: buffer ' ' of size 8 bytes will be overrun; 32 bytes will be written starting at offset 0.
Is this a normal behavior, can I safely ignore those warnings?

Thanks in advance,
Nicolas.

CMake Error: could not find check_missing_intrinsics

Dear video expert,

Using VVenC and VVdeC as sub-projects, I tried upgrading VVdeC from v0.2.0.0 to v1.0.0.

In v0.2.1.0 the line include( check_missing_intrinsics ) was introduced in the CMake project. Is it expected that the super project extends the CMake module path? To me this appears to be something internal to VVdeC.

-- my_tmiv_build_dir/_deps/vvenc-src: vvenc embedded, subdirectories to be added: source/Lib/vvenc;source/App/vvencFFapp
-- my_tmiv_build_dir/_deps/vvdec-src: vvdec embedded, subdirectories to be added: source/Lib/vvdec;source/App/vvdecapp
CMake Error at my_tmiv_build_dir/_deps/vvdec-src/source/Lib/vvdec/CMakeLists.txt:7 (include):
  include could not find load file:

    check_missing_intrinsics

This is the CMake script that we use to include VVenC and VVdeC as sub-projects: https://gitlab.com/mpeg-i-visual/tmiv/-/blob/master/cmake/VVenC.cmake (with ISO/IEC license). I could trigger this behaviour by changing the version number.

Please let me know if I am doing something wrong. I tried to include your projects in the most polite and least intrusive way possible 😉

Best regards,

Bart

About AVX512 support..

Hi,
support is not clear to me.. questions..
seems there is a define USE_AVX512 but defining it fails in compilating.. where to define?
also not much code only roundIntVector_SIMD uses it..
it's vvdec expected to get broad AVX512 optimizations in the future? and also what expected speedups vs AVX2 can we expect say on Zen4 processors?
also limited AVX512 support is due to using simde and simde still not having complete AVX512 support?
thanks..

Looping in FFplay

Using libvvdec (master) in FFmpeg / ffplay from this fork: https://github.com/tbiat/FFmpeg/releases/tag/vvc (master)

When trying to loop a simple video (VVC in MP4) I get this error on hitting the loop point:

[libvvdec @ 0x15083f400] error in vvdec::decode - ret:-11 - decoder already flushed, please reinit.
    Last message repeated 271 times
[libvvdec @ 0x15083f400] Too many errors when draining, this is a bug. Stop draining and force EOF.

Looping with HEVC and AVC payload works correctly.

Corrupted outfile

I converted a y4m into vvc using vvenc, and then I tried to decode it back to yuv to make sure it had encoded correctly.
The outputted yuv is corrupted, and I have been unable to fix it. Also, I have tried encoding the vvc from a normal rawvideo yuv and had the same result.
Does anyone have any recommendations or solutions? Are there any test files I can use for reference?
Thank you,
Any help would be appreciated.

Link to zip with all of the video files: https://drive.google.com/file/d/1_RpywgLN7A9U6lEP34_WLHzUdRAYWCXb/view?usp=sharing

vvdecapp build shared can not be executed by old CPU

I have 2 PC: new AMD R5 3600 and old Intel i5 2500s, both use Windows.

I build vvdec on AMD R5 3600 PC using MSYS2 mingw64 environment.

My steps:
git clone https://github.com/fraunhoferhhi/vvdec
mkdir build && cd build

// build static
cmake .. -DBUILD_SHARED_LIBS=0 -DCMAKE_BUILD_TYPE=Release -G "MSYS Makefiles"
vvdecapp.exe file is generated and need follow dll files to be ran: libgcc_s_seh-1.dll, libstdc++-6.dll, libwinpthread-1.dll.
It can be executed by both AMD R5 3600 and Intel i5 2500s cpu.

// build shared
cmake .. -DBUILD_SHARED_LIBS=1 -DCMAKE_BUILD_TYPE=Release -G "MSYS Makefiles"
vvdecapp.exe and libvvdec.dll are generated, also need 3 dll files above to be ran.
This time, AMD R5 3600 runs fine.
Intel i5 2500s doesn't.

Untitled

If I build shared with -DVVDEC_ENABLE_X86_SIMD=OFF
cmake .. -DBUILD_SHARED_LIBS=1 -DCMAKE_BUILD_TYPE=Release -G "MSYS Makefiles" -DVVDEC_ENABLE_X86_SIMD=OFF
Intel i5 2500s can run it, but decrease performance.

I install MSYS2 on i5 2500s PC and try building shared without -DVVDEC_ENABLE_X86_SIMD=OFF
i5 2500s still can't run it.

i5 2500s can run vvdecapp with static build, so SIMD does work fine on this cpu, but not build shared.

MacOS arm64 shared build

After compiling a shared build for arm64 under MacOS using default settings, the apps linking against libvvdec fail at start with SigKill (9).

Testing VVC

Test encode

VVEncoderApp.exe -i "113.yuv" -o "output_10bit.vvc" -v 5 -t 4 -s 1280x720 -r 29 -c yuv420 -g 16 -ip 256 --internal-bitdepth 10 --bitrate 3Mbps -f 200 --passes 1 --preset medium --level auto --tier main
vvencapp: Fraunhofer VVC Encoder ver. 1.4.0-ff2a948 [Windows][GCC 11.3.1][64 bit][SIMD=NA]

Test decode

VVDecoderApp.exe -b output_10bit.266 -o yyy.yuv
Fraunhofer VVC/H.266 Decoder VVdeC, version 1.5.0-e83c116 [THREADS=4; PARSE_DELAY=4; SIMD=NONE]

OK, bugs with uvg266. Sorry

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.