Giter Club home page Giter Club logo

vvenc's People

Contributors

1div0 avatar adamjw24 avatar asif-ansari avatar bart-kroon avatar ekremcet avatar ewouth avatar hizia320 avatar hope1985 avatar jamaika1 avatar jbrdbg avatar k-os avatar lehmann-c avatar luofalei avatar lvaschmidt avatar pkubaj avatar schweinepriester avatar vrabaud avatar wadetregaskis 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vvenc's Issues

CMake dependency is higher than 3.12 as listed in the README

I tried compiling on CentOS running and preparing with CMake 3.12, which didn't work, but then when I ran the exact same command with CMake 3.20, it compiled fine.

If I have time later I'll try to pin down which version of CMake is actually required.

Built Windows binary using mingw-gcc for faster encoding time

vvencapp.exe compiled using gcc+mingw have 7-9x faster encoding time than binaries compiled using msvc

graph

System Information

OS Platform and Distribution: Windows 10 Home Insider Preview build 21327.rs_prerelease.210226-1427, Windows 10 Education N 20H2 build 19042.631 (virtual machine)
Vvenc version : 0.3
Processor : i3-6100
RAM : 8gb
GCC : 10.2
Mingw64 : latest
Visual Studio : 16.9.0

Question:

What about the video source ?

4 different video(test1, test2, test3, test4)
-1080p source
-23.976 fps
-5 second duration
cant share because copyright

What about the output?

There is no difference between output from 2 binaries, checked with hash too.
hash

What about the binaries?

binaries size

How do you produce the binaries?

for msvc binary

  1. Install visual studio 2019 with Desktop Development with C++
  2. Download vvenc 0.30 release then extract
  3. Open extracted folder with visual studio
  4. Build all

for gcc-mingw binary (tested in fresh install windows 10)

  1. Install visual studio 2019 with Desktop Development with C++, MSYS2 here https://www.msys2.org/, CMAKE GUI here https://cmake.org/download/ (add CMAKE to path)
  2. open mingw64.exe in MSYS2 installation directory then run these command
pacman -S base-devel gcc vim cmake
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-cmake
pacman -S git
git clone https://github.com/fraunhoferhhi/vvenc.git
  1. add D:\MSYS2\mingw64\bin to path (this an example, use your installation directory)

  2. open CMAKE GUI follow these steps
    cmake step 1
    cmake step 2
    cmake step 3
    cmake step 4

  3. open mingw64.exe again then run these command

cd vvenc
cd build
make
cd ..
make
wait until compiling done
binary in ~/vvenc/bin/release-static

Whats the command used?

vvencapp_msvc --preset faster -c yuv420 -i test1.yuv -s 1920x1080 -o test1_msvc_2019.266
vvencapp_msvc --preset faster -c yuv420 -i test2.yuv -s 1920x1080 -o test2_msvc_2019.266
vvencapp_msvc --preset faster -c yuv420 -i test3.yuv -s 1920x1080 -o test3_msvc_2019.266
vvencapp_msvc --preset faster -c yuv420 -i test4.yuv -s 1920x1080 -o test4_msvc_2019.266

vvencapp_mingw_gcc --preset faster -c yuv420 -i test1.yuv -s 1920x1080 -o test1_mingw64_gcc_10_2.266
vvencapp_mingw_gcc --preset faster -c yuv420 -i test2.yuv -s 1920x1080 -o test2_mingw64_gcc_10_2.266
vvencapp_mingw_gcc --preset faster -c yuv420 -i test3.yuv -s 1920x1080 -o test3_mingw64_gcc_10_2.266
vvencapp_mingw_gcc --preset faster -c yuv420 -i test4.yuv -s 1920x1080 -o test4_mingw64_gcc_10_2.266

How do you test it?

  1. Restart windows
  2. Run 4 command in succession for gcc-mingw binary
  3. Restart windows
  4. Run 4 command in succession for msvc binary

Remarks

Hopefully in the future there is official way to create windows binary using gcc-mingw and added to documentation because the different in encoding times.
Please feel free to relay your comments, suggestions, questions.
Sorry for my bad english.

CMD output
mingw_gcc.txt
msvc_2019.txt

Lossless image compression

I've no idea how to make vvcenc losslessly compress images since I want to preserve the entire color space (RGB888). Any clues?

I'd love to use something like YUV444_10 which at least minimizes color space loss but even this format is not available:

Error parsing option "format,c" with argument "yuv444_10".

Bad performance of default encoder

I made a simple benchmark on 30 frames 1080p footage and VVC massively underperforms.
What's the issue?

(Don't look at text, it's modified old script for benchmarking)
Screenshot_20200910_003728

Commands:
vvencapp -i input.yuv --size 1920x1080 --format yuv420_10 --output N.vvc --preset N --qp N --threads 12
vdecapp -b N.vvc -o N.yuv

code error: Segmentation fault (core dumped)

vvencapp encontered segmentation fault(core dumped) when encoding POC 144 using following parameter:
-c yuv420 -r 30 -rt idr -g 16 -ip 160 --preset faster -b 0 --qp 22 --threads 1 -o out.266 -v 6

Segmentation Fault

image
I built a static release and tried to encode a raw yuv stream. It keeps giving Segmentation fault.
Thanks

Smallest resolution of yuv file that can be encoded?

Hi,

Is there a limit on the minimum resolution of the yuv file that can be encoded? I tried encoding a dummy yuv video file with 176x144 resolution and it works fine, but for another with 64x30 it throws corrupted size vs. prev_size error:

vvencapp --preset medium -i vid.yuv -s 64x30 -o str.266

TOOL CFG: IBD:1 HAD:1 RDQ:1 RDQTS:1 ASR:1 MinSearchWindow:96 RestrictMESampling:0 FEN:1 ECU:0 FDM:1 ESD:0 Tiles:1x1 CIP:0 SAO:1 ALF:1 (NonLinLuma:0 NonLinChr:0) CCALF:1 WaveFrontSynchro:0 WaveFrontSubstreams:1 TMVPMode:1 DQ:1 (Thr: 4) SignBitHidingFlag:0 Perceptual QPA:2
NEXT TOOL CFG: DualITree:1 BIO:1 DMVR:1 MTSImplicit:1 SBT:0 JointCbCr:1 CabacInitPresent:1 AMVRspeed:5 SMVD:3 Reshape:1 (Signal:SDR Opt:0) CIIP:0 MIP:1 EncDbOpt:1 MCTF:2 [L:0, T:0] Affine:2 Affine_Prof:1 Affine_Type:1 MMVD:3 DisFracMMVD:1 FastSearch:4 SbTMVP:1 Geo:3 LFNST:1 MTS:0 MTSIntraCand:3
FAST TOOL CFG: LCTUFast:1 FastMrg:2 PBIntraFast:1 AMaxBT:1 FastQtBtEnc:1 ContentBasedFastQtbt:1 FastMIP:4 FastLocalDualTree:1 FastSubPel:1 QtbttExtraFast:1 RateControl:0
PARALLEL PROCESSING CFG: FPP:0 NumFppThreads:-1 FppBitEqual:0 WPP:4 WppBitEqual:1 WF:0

VVEnc info: Fraunhofer VVC Encoder ver. 0.1.0.1
started @ Fri Nov 27 18:13:54 2020

corrupted size vs. prev_size
Aborted (core dumped)

The demo yuv videos are created using ffmpeg, from some dummy pngs created using numpy/opencv.

YUV piping doesn't work

Example of command:

ffmpeg -hide_banner -i test.mkv -c:v rawvideo -pix_fmt  yuv420p10le - | ./vvencapp -p 1 --preset faster -o try.h266 --format yuv420_10 --size 1920x1080 --framerate 30 --qp 30 --qpa 0 --input "" -f 30

Output:

started @ Wed Apr  7 20:37:29 2021

vvencapp [error]: failed to open input file

related to this commit b465e4a

Compilation w/ GCC 10.2.1 failed

[ 52%] Building CXX object source/Lib/vvenc/CMakeFiles/vvenc.dir/EncoderIf.cpp.o
/1TB/usr/src/github.com/1div0/vvenc/source/Lib/EncoderLib/EncCu.cpp: In member function ‘void vvenc::EncCu::xCheckRDCostAffineMerge(vvenc::CodingStructure*&, vvenc::CodingStructure*&, vvenc::Partitioner&, const vvenc::EncTestMode&)’:
/1TB/usr/src/github.com/1div0/vvenc/source/Lib/EncoderLib/EncCu.cpp:3543:44: error: ‘candCostList’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
3543 | double ThesholdCost = MRG_FAST_RATIO * candCostList[0];
/1TB/usr/src/github.com/1div0/vvenc/source/Lib/EncoderLib/EncCu.cpp:3543:44: error: ‘candCostList’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
cc1plus: all warnings being treated as errors
make[2]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/build.make:706: source/Lib/vvenc/CMakeFiles/vvenc.dir/__/EncoderLib/EncCu.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:176: source/Lib/vvenc/CMakeFiles/vvenc.dir/all] Error 2
make: *** [Makefile:160: all] Error 2

gcc version 10.2.1 20201016 (Red Hat 10.2.1-6) (GCC)

Monochrome 4:0:0 support

Discussed in #95

Originally posted by bardia-az September 1, 2021
I noticed that vvencapp does not support monochrome (4:0:0) videos as input. Is vvencFFapp similar? Because when I set the parameter of InputChromaFormat to 400, I get a "segmentation fault" error when it reaches the second frame.

YUV Piping using stdin does not work under Windows

Using the following command line, I am able to have vvenc read from stdin under Centos

ffmpeg -i 1.mp4 -c:v rawvideo -pix_fmt yuv420p -an -f rawvideo pipe:1 | vvencapp.exe -i - -o test.266 -s 1920x1080 -r 25 --preset=faster -q 25

The exact same command under windows, vvenc reads and compresses a few frames from stdin then abruptly stops

Enable ESD (--ESD 1) will cause crash.

command:
--ESD 1 --preset medium -t 8 -qpa 0 --MaxParallelFrames 4 --WppBitEqual 1 -s 832x480 -fr 30 -f 33 -ip 32 --qp 30 -b str.bin -o rec.yuv -i E:\Seqs\RaceHorses_832x480_30.yuv

Supported dimensions

Hi,
I'm writing a script to convert to any image / video to VVC. Is there any constraint for the media dimensions - like be multiple of 16 pixels or fixed supported resolutions?

VVenC does not compile in C++17

Dear video expert,

We have included VVenC and VVdeC as sub-projects of the TMIV 8 project.

An Apple user has reported problems building on AppleClang 12 because C++14 features are not enabled. I could fix that in a non-intrusive way by adding target_compile_features(vvenc PUBLIC cxx_std_14) and same for vvdec. (To be confirmed by that user.)

However, because TMIV itself is a C++17 project, I first tried cxx_std_17. This unfortunately does not work:

In file included from /home/videssa/bart/tmiv.486-c-14-flag-for-v8-0.clang.build/_deps/vvenc-src/source/Lib/CommonLib/PicYuvMD5.cpp:50:
/home/videssa/bart/tmiv.486-c-14-flag-for-v8-0.clang.build/_deps/vvenc-src/source/Lib/vvenc/../CommonLib/MD5.h:232:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    register uint32_t a, b, c, d;
    ^~~~~~~~~

This was tested using v0.2.0.0, but the same line is present on the main branch.

No hurry, but could you please make VVenC and VVdeC C++17 (or even C++20) compatible?

Best regards,

Bart

build for Windows

Hello

I tried to build for windows after installing cmake , Visual Studio 19, and gnuwin32 with make
That give me this error
Sorry, I'm a newbie but I really want to test VVC on windows

make install-release
process_begin: CreateProcess(NULL, cmake -P cmake/modules/vvencNumCores.cmake, ...) failed.
cmake -S . -B build/static -A x64 -DCMAKE_CONFIGURATION_TYPES=Debug;Release;RelWithDebInfo
process_begin: CreateProcess(NULL, cmake -S . -B build/static -A x64 -DCMAKE_CONFIGURATION_TYPES=Debug;Release;RelWithDebInfo, ...) failed.
make (e=2): Le fichier spécifié est introuvable.
make: *** [build/static] Erreur 2

regards

A question about v1.1.0

Hi, yesterday I test the newest verison(v1.1.0) for random access and lowdelay P, vvenc v1.1 indeed speedup than v1.0 for random access configuration, but it still cost much time for lowdelay P.
According to my experiments, vvenc v1.1(faster) vs. x264(veryfast), BD-rate decrease 59%, but time cost increases 8100%。

internal-bitdepth 8 not working

8bit does not work with preset slow, slower but does work with preset faster, fast and medium.

vvencapp -i input.yuv -s 1920x1080 -c yuv420 -r 30 -o slower.266 --preset slower -ip 256 --qp 32 --internal-bitdepth 8

CODING TOOL CFG: IBD:0 CIP:0 SAO:1 ALF:1 (NonLinLuma:1 NonLinChr:1) CCALF:1 WPP:0 WPP-Substreams:1 TMVP:1 DQ:1 (Thr: 4) SDH:0 CST:1 BDOF:1 DMVR:1 MTSImplicit:0 SBT:1 JCbCr:1 CabacInitPresent:1 AMVR:1 SMVD:1 LMCS:1 (Signal:SDR Opt:0) CIIP:1 MIP:1 AFFINE:1 (PROF:1, Type:1)MMVD:1 DisFracMMVD:1 SbTMVP:1 GPM:1 LFNST:1 MTS:1 (IntraCand:3)ISP:1 TS:2 TSLog2MaxSize:3 useChromaTS:0 BDPCM:1
ENC. ALG. CFG: QPA:2 HAD:1 RDQ:1 RDQTS:1 ASR:1 MinSearchWindow:96 RestrictMESampling:0 EDO:2 MCTF:2 [L:0, T:0]
FAST TOOL CFG: ECU:0 FEN:1 FDM:1 ESD:0 FastSearch:1 LCTUFast:1 FastMrg:1 PBIntraFast:1 AMaxBT:1 FastQtBtEnc:1 ContentBasedFastQtbt:0 FastMIP:0 FastLocalDualTree:1 FastSubPel:0 QtbttExtraFast:0
RATE CONTROL CFG: RateControl:0
PARALLEL PROCESSING CFG: FPP:0 NumFppThreads:-1 FppBitEqual:0 WPP:4 WppBitEqual:1 WF:0
VVEnc info: Fraunhofer VVC Encoder ver. 0.2.0.0

terminate called after throwing an instance of 'vvenc::Exception'
what():
ERROR: In function "xT" in /home/user/git/vvenc-0.2.0.0/source/Lib/CommonLib/TrQuant.cpp:506: Negative shift
Aborted (core dumped)

Chroma issues?

Hello there,

Sometimes when I am encoding an image with vvenc and I decode it back the CbCr/UV values are offsetted/titled n a way that is not in line with the actual image. The luma portion seems to decode just fine. Let me know if you need an example of a file that does this.
Interestingly, this only happens with images I have to resize before converting them to yuv format. This makes me think that the conversion process is the one causing the issues, but I just want to double check here before I investigate that area further.

Thanks.

Input pipe is not supported

Hi,

I tried with no joy following command
ffmpeg.exe -i "input.avs" -hide_banner -nostdin -f yuv4mpegpipe -pix_fmt yuv420p - | vvencapp.exe --input - --threads 6 --preset faster --format yuv420 --qp 32 --framerate 25.0 --size 1920x1080 --output "output.266"
but unfortunatelly, pipe is not yet supported, it is absolutely necessary because yuv files are so heavy !

could you please plan that in next version ?

regards

Rate control destroys quality towards end of video

Version: 1.1.0

Settings: vvencapp -s 1920×800 -r 24 -c yuv420 --preset faster --internal-bitdepth 8 -ip 128 -b 1000000 -i input.yuv -o VVC.266

Video: Tears of Steel

File (can't append here): https://drive.google.com/file/d/1VyfTHq3nw0L6f1vwNE47MSFmGp2YMcBM/view?usp=sharing

The problem starts at 11:50. The quantizer increases to 63 (from around 30 normal). Quality recovers after ~10 seconds.

a.mp4

This is also right after the credits. My guess is that the encoder expected an easy to compress last 20 seconds, then drastically lowered quality after realizing bitrate was going to go over budget. Final bitrate is 997.7 kbps.

How can I encode from video to VVC 10 bit and decode back from VVC to AV1?

Hello guys.
I need help so, how can I encode from video to VVC 10 bit, example my input video codec is AOMEDIA 1 and I want encode into VVC 10 bit smaller bit rate without losing quality.
And after encode to VVC 10 bit, how can I decode back VVC to h.264, h.265 or av1?
Is there any best results to encode VVC 10 bit and decode back to AV1 to see media player VLC result.

  • MartinHero

Trouble converting to YUV 10-bit BT.709

I'm trying to feed vvencpp directly with yuv 10 bit. But I'm getting a bit darker images when I input 10 bit samples. Certainly is a ffmpeg color conversion mishap. When converting to yuv 4:2:0 10-bit, should I use "limited" yuv range in the BT.709, right?

I tried many ffmpeg conversion command lines, but I never get it right. Inputting 8-bit to vvenc I get the colors as expected, all good. Any recommendations on how to convert RGB to YUV 10-bit?

VMAF for VVC

Hi, my name is Antonio and I am doing a final Master thesis. I need to get the VMAF value of an VVC video stream. How I can do it? Thank you.

Output yuv file size increased

Hello

I encode the YUV file (926 MB) with this command

vvencapp.exe -i input.yuv -s 1280x720 -r 30 -f 670 --preset medium -o output.266

and decode it with this command

vvdecapp.exe -b output.266 -f 670 -o back.yuv

The problem is when i decode the file, back.yuv file is 2x larger than input.yuv

How can I fix this problem?

Regards.

Setting or controlling quality of layers in VVC multi-layer encoding

VVC, like the predecessor, supports multi-layer encoding. I looked into the config files provided in the base VTM repo along with this repo, and couldn't find a way to set the quality of the layers independently. I read the software manually, but couldn't find any information.

Is there a way to specify the quality of enhancement layers during encoding. For example, L0 at 32 and L1 at 33, and with L2 at 35.

<Not exactly an issue, thanks for the help!>

I failed to build VVenc on gcc-8 and cmake-3.14 on centos 7

I failed to build VVenc. I use gcc-8.3.1 and cmake-3.14.0 on centos-7.7.1980, and got these errors:
Is there anythin I make wrong?
But I can build VVdec successfully on the same server.

[ 18%] Building CXX object source/Lib/vvenc/CMakeFiles/vvenc.dir//CommonLib/x86/avx2/Buffer_avx2.cpp.o
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/Utilities/NoMallocThreadPool.cpp:52:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk*)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/MCTF_avx41.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../MCTFX86.h:73:38: error: 'vvenc::_mm256_extract_epi32' declared as an 'inline' variable
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../MCTFX86.h:73:38: error: '__m256i' was not declared in this scope
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../MCTFX86.h:73:51: error: expected primary-expression before 'const'
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../MCTFX86.h:73:63: error: expression list treated as compound expression in initializer [-fpermissive]
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../MCTFX86.h:74:1: error: expected ',' or ';' before '{' token
{
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/MCTF_avx.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/../MCTFX86.h: In function 'uint32_t vvenc::_mm256_extract_epi32(__m256i, int)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/../MCTFX86.h:76:79: error: '_mm256_permutevar8x32_epi32' was not declared in this scope
__m256i val = _mm256_permutevar8x32_epi32(vec, _mm256_castsi128_si256(indx));
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/MCTF.cpp:56:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/LoopFilter.cpp: In static member function 'static void vvenc::LoopFilter::calcFilterStrengths(const vvenc::CodingUnit&, bool)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/LoopFilter.cpp:815:61: error: cannot convert 'vvenc::LFCUParam' to 'bool' in initialization
LFCUParam stLFCUParam { xGetLoopfilterParam( cu ) };
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/MCTF_avx42.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../MCTFX86.h:73:38: error: 'vvenc::_mm256_extract_epi32' declared as an 'inline' variable
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../MCTFX86.h:73:38: error: '__m256i' was not declared in this scope
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../MCTFX86.h:73:51: error: expected primary-expression before 'const'
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../MCTFX86.h:73:63: error: expression list treated as compound expression in initializer [-fpermissive]
inline uint32_t _mm256_extract_epi32(__m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../MCTFX86.h:74:1: error: expected ',' or ';' before '{' token
{
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/Buffer_avx2.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_clip(T&, T&, T&) [with bool clip = true; T = __vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1278:24: note: previous declaration 'void vvenc::do_clip(T&, T&, T&) [with bool clip = true; T = __vector(4) long long int]'
template<> inline void do_clip<true, __m256i>( __m256i& vreg, __m256i& vbdmin, __m256i& vbdmax ) { vreg = _mm256_min_epi16( vbdmax, _mm256_max_epi16( vbdmin, vreg ) ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1276:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_clip<true, __m128i>( __m128i& vreg, __m128i& vbdmin, __m128i& vbdmax ) { vreg = _mm_min_epi16 ( vbdmax, _mm_max_epi16 ( vbdmin, vreg ) ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_clip(T&, T&, T&) [with bool clip = false; T = vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/x86/sse41/MCTF_avx41.cpp.o] Error 1
gmake[3]: *** Waiting for unfinished jobs....
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1274:24: note: previous declaration 'void vvenc::do_clip(T&, T&, T&) [with bool clip = false; T = __vector(4) long long int]'
template<> inline void do_clip<false, __m256i>( __m256i&, __m256i&, __m256i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1272:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_clip<false, __m128i>( __m128i&, __m128i&, __m128i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_add(T&, T&) [with bool add = true; T = vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/x86/avx/MCTF_avx.cpp.o] Error 1
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1268:24: note: previous declaration 'void vvenc::do_add(T&, T&) [with bool add = true; T = __vector(4) long long int]'
template<> inline void do_add<true, __m256i>( __m256i& vreg, __m256i& vadd ) { vreg = _mm256_add_epi32( vreg, vadd ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1266:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_add<true, __m128i>( __m128i& vreg, __m128i& vadd ) { vreg = _mm_add_epi32( vreg, vadd ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_add(T&, T&) [with bool add = false; T = __vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1264:24: note: previous declaration 'void vvenc::do_add(T&, T&) [with bool add = false; T = __vector(4) long long int]'
template<> inline void do_add<false, __m256i>( __m256i&, __m256i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1262:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_add<false, __m128i>( __m128i&, __m128i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_mult(T&, T&) [with bool mult = true; T = __vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1258:24: note: previous declaration 'void vvenc::do_mult(T&, T&) [with bool mult = true; T = __vector(4) long long int]'
template<> inline void do_mult<true, __m256i>( __m256i& vreg, __m256i& vmult ) { vreg = _mm256_mullo_epi32( vreg, vmult ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1256:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_mult<true, __m128i>( __m128i& vreg, __m128i& vmult ) { vreg = _mm_mullo_epi32 ( vreg, vmult ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_mult(T&, T&) [with bool mult = false; T = __vector(2) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1254:24: note: previous declaration 'void vvenc::do_mult(T&, T&) [with bool mult = false; T = __vector(4) long long int]'
template<> inline void do_mult<false, __m256i>( __m256i&, __m256i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1252:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_mult<false, __m128i>( __m128i&, __m128i& ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_shift(T&, int) [with bool doShift = false; bool shiftR = false; T = __vector(4) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1249:24: note: previous declaration 'void vvenc::do_shift(T&, int) [with bool doShift = false; bool shiftR = false; T = __vector(2) long long int]'
template<> inline void do_shift<false, false, __m128i>( __m128i &vreg, int num ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1244:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_shift<false, false, __m256i>( m256i &vreg, int num ) { }
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/x86/sse42/MCTF_avx42.cpp.o] Error 1
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_shift(T&, int) [with bool doShift = false; bool shiftR = true; T = __vector(4) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1248:24: note: previous declaration 'void vvenc::do_shift(T&, int) [with bool doShift = false; bool shiftR = true; T = __vector(2) long long int]'
template<> inline void do_shift<false, true , __m128i>( __m128i &vreg, int num ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1243:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_shift<false, true , __m256i>( __m256i &vreg, int num ) { }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_shift(T&, int) [with bool doShift = true; bool shiftR = false; T = __vector(4) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1247:24: note: previous declaration 'void vvenc::do_shift(T&, int) [with bool doShift = true; bool shiftR = false; T = __vector(2) long long int]'
template<> inline void do_shift<true, false, __m128i>( __m128i &vreg, int num ) { vreg = _mm_slli_epi32( vreg, num ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1242:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_shift<true, false, __m256i>( __m256i &vreg, int num ) { vreg = _mm256_slli_epi32( vreg, num ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1703:1: error: 'void vvenc::do_shift(T&, int) [with bool doShift = true; bool shiftR = true; T = __vector(4) long long int]' conflicts with a previous declaration
} // namespace vvenc
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1246:24: note: previous declaration 'void vvenc::do_shift(T&, int) [with bool doShift = true; bool shiftR = true; T = __vector(2) long long int]'
template<> inline void do_shift<true, true , __m128i>( __m128i &vreg, int num ) { vreg = _mm_srai_epi32( vreg, num ); }
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx2/../BufferX86.h:1241:24: note: -fabi-version=6 (or =0) avoids this error with a change in mangling
template<> inline void do_shift<true, true , m256i>( m256i &vreg, int num ) { vreg = _mm256_srai_epi32( vreg, num ); }
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//Utilities/NoMallocThreadPool.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/x86/avx2/Buffer_avx2.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/InterPred_avx.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/../InterPredX86.h: In function 'uint32_t vvenc::_mm256_extract_epi32(__m256i, int)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/avx/../InterPredX86.h:70:84: error: '_mm256_permutevar8x32_epi32' was not declared in this scope
__m256i val = _mm256_permutevar8x32_epi32( vec, _mm256_castsi128_si256( indx ) );
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/InterPred_sse41.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../InterPredX86.h:67:41: error: 'vvenc::_mm256_extract_epi32' declared as an 'inline' variable
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../InterPredX86.h:67:41: error: '__m256i' was not declared in this scope
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../InterPredX86.h:67:54: error: expected primary-expression before 'const'
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../InterPredX86.h:67:66: error: expression list treated as compound expression in initializer [-fpermissive]
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse41/../InterPredX86.h:68:3: error: expected ',' or ';' before '{' token
{
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/InterPred_sse42.cpp:47:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../InterPredX86.h:67:41: error: 'vvenc::_mm256_extract_epi32' declared as an 'inline' variable
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../InterPredX86.h:67:41: error: '__m256i' was not declared in this scope
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../InterPredX86.h:67:54: error: expected primary-expression before 'const'
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../InterPredX86.h:67:66: error: expression list treated as compound expression in initializer [-fpermissive]
inline uint32_t _mm256_extract_epi32( __m256i vec, const int i )
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/CommonLib/x86/sse42/../InterPredX86.h:68:3: error: expected ',' or ';' before '{' token
{
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/CABACWriter.cpp:53:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ *firstPtr } {}
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/LoopFilter.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp:61:0:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk*)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/DecoderLib/DecLib.cpp:64:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/__/CommonLib/MCTF.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/IntraSearch.cpp:53:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/vvencimpl.h:56,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/vvenc.cpp:56:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.cpp:52:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/InterSearch.cpp:54:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/vvencimpl.h:56,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/vvencimpl.cpp:53:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//CommonLib/x86/avx/InterPred_avx.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/CommonLib/x86/sse41/InterPred_sse41.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/__/CommonLib/x86/sse42/InterPred_sse42.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncCu.cpp:53:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:52:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ firstPtr } {}
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp: In member function 'void vvenc::EncGOP::encodePictures(const std::vectorvvenc::Picture*&, vvenc::PicList&, vvenc::AccessUnitList&, bool)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:85: error: parameter declared 'auto'
auto picItr = find_if( procList.begin(), procList.end(), []( auto pic ) { return pic->slices[ 0 ]->checkRefPicsReconstructed(); } );
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp: In lambda function:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:100: error: 'pic' is not captured
auto picItr = find_if( procList.begin(), procList.end(), []( auto pic ) { return pic->slices[ 0 ]->checkRefPicsReconstructed(); } );
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/__/EncoderLib/CABACWriter.cpp.o] Error 1
In file included from /usr/include/c++/4.8.2/algorithm:62:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../CommonLib/CommonDef.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../CommonLib/BitStream.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/CABACWriter.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncSampleAdaptiveOffset.h:53,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:52:
/usr/include/c++/4.8.2/bits/stl_algo.h: In instantiation of '_InputIterator std::__find_if(_InputIterator, _InputIterator, _Predicate, std::input_iterator_tag) [with _InputIterator = std::_List_iteratorvvenc::Picture*; _Predicate = vvenc::EncGOP::encodePictures(const std::vectorvvenc::Picture*&, vvenc::PicList&, vvenc::AccessUnitList&, bool)::__lambda4]':
/usr/include/c++/4.8.2/bits/stl_algo.h:4465:41: required from '_IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = std::_List_iteratorvvenc::Picture*; _Predicate = vvenc::EncGOP::encodePictures(const std::vectorvvenc::Picture*&, vvenc::PicList&, vvenc::AccessUnitList&, bool)::__lambda4]'
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:149: required from here
/usr/include/c++/4.8.2/bits/stl_algo.h:150:56: error: no match for call to '(vvenc::EncGOP::encodePictures(const std::vectorvvenc::Picture*&, vvenc::PicList&, vvenc::AccessUnitList&, bool)::__lambda4) (vvenc::Picture
&)'
while (first != last && !bool(pred(__first)))
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:77: note: candidates are:
auto picItr = find_if( procList.begin(), procList.end(), []( auto pic ) { return pic->slices[ 0 ]->checkRefPicsReconstructed(); } );
^
In file included from /usr/include/c++/4.8.2/algorithm:62:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../CommonLib/CommonDef.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../CommonLib/BitStream.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/CABACWriter.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncSampleAdaptiveOffset.h:53,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:52:
/usr/include/c++/4.8.2/bits/stl_algo.h:150:56: note: void (
)()
while (first != last && !bool(pred(__first)))
^
/usr/include/c++/4.8.2/bits/stl_algo.h:150:56: note: candidate expects 1 argument, 2 provided
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:89: note: vvenc::EncGOP::encodePictures(const std::vectorvvenc::Picture*&, vvenc::PicList&, vvenc::AccessUnitList&, bool)::lambda4
auto picItr = find_if( procList.begin(), procList.end(), []( auto pic ) { return pic->slices[ 0 ]->checkRefPicsReconstructed(); } );
^
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.cpp:386:89: note: candidate expects 0 arguments, 1 provided
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/EncoderLib/EncAdaptiveLoopFilter.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.cpp:52:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk
)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ *firstPtr } {}
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/vvenc.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//EncoderLib/EncPicture.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//DecoderLib/DecLib.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/vvencimpl.cpp.o] Error 1
In file included from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncPicture.h:56:0,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncGOP.h:57,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncLib.h:52,
from /mnt/nas1/elab/gyc/packages/vvenc/source/Lib/EncoderLib/EncSlice.cpp:53:
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h: In constructor 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk::Chunk(vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk*)':
/mnt/nas1/elab/gyc/packages/vvenc/source/Lib/vvenc/../Utilities/NoMallocThreadPool.h:273:58: error: invalid initialization of non-const reference of type 'vvenc::NoMallocThreadPool::ChunkedTaskQueue::Chunk&' from an rvalue of type ''
Chunk( Chunk* firstPtr ) : m_firstChunk{ *firstPtr } {}
^
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//EncoderLib/IntraSearch.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//EncoderLib/EncGOP.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//EncoderLib/EncCu.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/EncoderLib/InterSearch.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir//EncoderLib/EncLib.cpp.o] Error 1
gmake[3]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/
/EncoderLib/EncSlice.cpp.o] Error 1
gmake[3]: Leaving directory /mnt/nas1/elab/gyc/packages/vvenc/build/release-static' gmake[2]: *** [source/Lib/vvenc/CMakeFiles/vvenc.dir/all] Error 2 gmake[2]: Leaving directory /mnt/nas1/elab/gyc/packages/vvenc/build/release-static'
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/mnt/nas1/elab/gyc/packages/vvenc/build/release-static'
make: *** [release] Error 2

Problems in pure c++ code (disable SIMD)

When disabling SIMD with SIMD_ENABLE = 0, there are some problems in pure c++ code.

  1. Firstly, compile error
    The complie error can be fixed as follows:
    image
    image

  2. Problems in AdaptiveLoopFilter::deriveClassificationBlk()
    AdaptiveLoopFilter::deriveClassificationBlk() will make the two encoding streams with the same parameters different.

vvencAccessUnit payload size is too small to store data

Hello

First of thanks for this great repo !

I have an issue with vvencapp encoder.

I found that with some specific images (not all of them), I get an error while using very low QPs saying that vvencAccessUnit payload size is too small to store data.

Step to reproduce this error:

  • Download this image.
  • Run the command ./bin/release-static/vvencapp -s 224x224 -r 1 -i _S66I3JYFV8OGPYHK.yuv -o _S66I3JYFV8OGPYHK.266 --preset faster --qp 6 to trigger the error
  • Using similar command line with vvencFFapp ./bin/release-static/vvencFFapp -s 224x224 -fr 1 --InputFile _S66I3JYFV8OGPYHK.yuv --BitstreamFile _S66I3JYFV8OGPYHK.266 --QP 6 do not trigger the error.

Complete log for the above command:

disable MCTF for QP < 17
vvencapp: Fraunhofer VVC Encoder ver. 1.1.0 [Linux][GCC 9.3.0][64 bit][SIMD=AVX2]
CODING TOOL CFG: CTU64 QT44BTT00 IBD:1 CIP:0 SAO:1 ALF:0 CCALF:0 WPP:0 WPP-Substreams:1 TMVP:1 DQ:0 SDH:1 CST:1 BDOF:0 DMVR:1 MTSImplicit:1 SBT:0 JCbCr:0 CabacInitPresent:0 AMVR:0 SMVD:0 LMCS:0 CIIP:0 MIP:0 AFFINE:0 MMVD:0 SbTMVP:0 GPM:0 LFNST:0 MTS:0 ISP:0 TS:2 TSLog2MaxSize:3 useChromaTS:0 BDPCM:2 IBC:2 BCW:0
ENC. ALG. CFG: QPA:1 HAD:1 RDQ:2 RDQTS:1 ASR:1 MinSearchWindow:96 RestrictMESampling:0 EDO:0 MCTF:0
FAST TOOL CFG: ECU:1 FEN:1 FDM:1 FastSearch:4 (SCC:2) LCTUFast:1 FastMrg:2 PBIntraFast:1 AMaxBT:0 FastQtBtEnc:1 ContentBasedFastQtbt:1 FastIntraTools:0 IntraEstDecBit:3 FastLocalDualTree:1 IntegerET:1 FastSubPel:1 QtbttExtraFast:3 IBCFastMethod:6 FIM:4 (29) QuantThr: 3
RATE CONTROL CFG: RateControl:0
PARALLEL PROCESSING CFG: NumThreads:4 MaxParallelFrames:4 WppBitEqual:1 WF:0

started @ Thu Sep 2 11:14:01 2021

POC 0 TId: 0 ( IDR_N_LP, I-SLICE, QP 4 ) 405016 bits [Y 59.7913 dB U 59.5361 dB V 59.5985 dB] [ET 0 ] [L0 ] [L1 ]
vvencapp [error]: encoding failed, error -5 - vvencAccessUnit payload size is too small to store data. (payload size: 50176, needed 50627)

For this specific image, QP>7 do not cause this error. If it can help, I can find more images where the same problem appear. Do not hesitate to ask for more details also.

Am I missing something with this error ? Is there an easy way to increase this payload size to a high amount, just so the code do not crash anymore ?

The roadmap about lowdelay configuration

Currently the lowdelay related configurations are placed in cfg/experimental/, in vvencCfg.cpp there are confirmParameter against lowdelay configuration:

confirmParameter( m_IntraPeriod < 0, "IDR period (in frames) must be >= 0");

confirmParameter( m_GOPSize != 1 && m_GOPSize != 16 && m_GOPSize != 32, "GOP size only supporting: 1, 16, 32" );

confirmParameter( m_IntraPeriod > 0 && !(m_DecodingRefreshType==1 || m_DecodingRefreshType==2), "Only Decoding Refresh Type CRA for non low delay supported" ); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
confirmParameter( m_IntraPeriod < 0 && m_DecodingRefreshType !=0, "Only Decoding Refresh Type 0 for low delay supported" );

I would like to ask when will lowdelay configuration be avaliable? Thanks!

Problems with high bitdepth

Issues similar to:
#46

are encountered when setting
122 #define RExt__HIGH_BIT_DEPTH_SUPPORT = 1

which causes

/tmp/VVC_VVCenc/source/Lib/CommonLib/Buffer.cpp:358:3: error: ‘removeHighFreq8’ was not declared in this scope removeHighFreq8 = removeHighFreq; ^~~~~~~~~~~~~~~ /tmp/VVC_VVCenc/source/Lib/CommonLib/Buffer.cpp:358:3: note: suggested alternative: ‘removeHighFreq’ removeHighFreq8 = removeHighFreq; ^~~~~~~~~~~~~~~ removeHighFreq /tmp/VVC_VVCenc/source/Lib/CommonLib/Buffer.cpp:359:3: error: ‘removeHighFreq4’ was not declared in this scope removeHighFreq4 = removeHighFreq; ^~~~~~~~~~~~~~~ /tmp/VVC_VVCenc/source/Lib/CommonLib/Buffer.cpp:359:3: note: suggested alternative: ‘removeHighFreq’ removeHighFreq4 = removeHighFreq;
(see attached log for full output log.txt)

which can only be partially resolved by setting

142 #define ENABLE_SIMD_OPT_BCW = 0
.

Problem with size video

mp4box -info input_1280x720.266

[VVC] Picture header in slice header incomplete support, cannot guess slice type
Import probing results for input.266:
File has 1 tracks
Duration: 1 s
        Track 1 type: Video Codec VVC Video (ID 1987470112)
        Size 95x79 @ 25 FPS

VVEncoderApp.exe -v 5 -t 4 -s 1280x720 -r 30 -c yuv420 -b 8 -g 16 --preset medium --profile main10 --level 6.3 --tier high -i input.yuv -o output.266

Rate control has problems with still picture encoding

When encoding still images at low bitrate (80kbit per pic, SD resolution) - all good happens if the image has low entropy, and the picture matches the size specified by "-b" (-r 1). If the image is of high entropy, the encoder chooses a very bad qp (49 for eg), and instead of 10 kbytes, the encoded picture is 3 or 4 kbytes (and obviously has an awful quality).

Also I don't really know the correct syntax for "--profile", but I always get an error when I try to use it:
Error parsing option "profile" with argument "main10".
or
Error parsing option "profile" with argument "main10_stillpic"

Unicode format issue in file "BitAllocation.cpp"

Hello,

When I want to build a Visual Studio 2019 solution of VVenC, after the solution generated and i build the "vvencapp" project and it turned out to be failed, for the reason that an error happened in file "BitAllocation.cpp"

'warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

and I solved this by save this file in the format of "UNICODE codepage 1200" instead of "Unicode (UTF-8 without signature) - Codepage 65001", then it can build successfully.

I don't know whether it can be regarded as a bug or what

Low VMAF

Hello, I have an issue trying to get the VMAF score of an 1920x1080 10 seg, 30 fps video.
I used this command for encoding:
vvencapp -i Football.yuv -s 1920x1080 -c yuv420 -r 30 --preset medium --qp 31 --qpa 0 -ip 64 -t 4 -o Football_vvc_qp31.266
This one for decoding:
vvdecapp -b Football_vvc_qp31.266 -o Football_vvc.yuv
and this one to get the VMAF:
vmaf -r Football.yuv -d prueba.yuv -w 1920 -h 1080 -p 420 -b 8
and I get a VMAF of 6 points. Just to check I encoded the Football_vvc.yuv file with h264 and the video had 20 seconds duration and horrible quality. What I am doing wrong? Thank you.

Decode h266 bit stream but output yuv size is not same to raw yuv size

I use vvencapp encode a 3s yuv file then use DecoderAppStatic provided by VTM to decode bit stream, but decoding output yuv file size is 2x compare to raw yuv size. Do I use the wrong decoder?

./vvencapp -i seg_1.yuv -s 640x360 -b 350000 -r 24 --preset fast -o tmp.h266
./DecoderAppStatic -b tmp.h266 -o tmp.yuv
-rw-rw-r-- 1 ec2-user ec2-user 24883200 Mar 12 05:00 seg_1.yuv
-rw-rw-r-- 1 ec2-user ec2-user 49766400 Mar 12 08:09 tmp.yuv

is that a bug?

int remRegBins = (uiWidth * uiHeight * ctxBinSampleRatio) >> 4; in file QuantRDOQ.cpp

For my understanding, it should be int remRegBins = (tu.getTbAreaAfterCoefZeroOut(compID) * ctxBinSampleRatio) >> 4;

Possible unsafe flag naming

Hello,

I came across a possible misleading flag name used in the Picture class, which is related with isMctfFiltered flag. If I'm right, not all frames are truly filtered with MCTF? However, the flag is set to true even for those frames that are not filtered by MTCF, which may lead to wrong conclusions for the users that are not familiar with implementation details of MCTF. It's a bit unsafe to use the current name if you agree? Is it maybe better to change to something else or to add additional flag?

Milos

Unable to build on Windows

Hi,
Whenever I try to build, I always get "error 1" and the only thing in the CMakeOutput.log is The system is: Windows - 10.0.19043 - AMD64.
I'm using cmake 2.21.2, make 3.81, and visual studio 2019.

Using a command prompt running as admin: make install-release I get this output:

`cmake --build build/static --config Release -- /maxcpucount:20 /verbosity:minimal /nr:false
CMake Error:
Generator

NMake Makefiles

does not support platform specification, but platform

x64

was specified.

make: *** [release] Error 1`

It's probably something simple I'm missing...

[Feature request] Y4M support inside of VVenC

Hello. I've been trying out VVenC recently, and I've noticed that this encoder doesn't support y4m input for some reason.

Are there any plans into bringing y4m support into the encoder? Having to pipe YUV and specifying the data is fine, but it is not optimal and makes the encoding workflow more annoying, even when scripted.

Might as well add in y4m support in VVdec.

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.