---
# System prepended metadata

title: VVC Reference Software

---

# VVC Reference Software

As instruções estão divididas em duas etapas: Compilar e Simular.

Etapa 1: Instruções para compilar
---------------------------

Criar uma pasta 'build' na raiz do diretório do software:
```bash
mkdir build 
```
Então, seguir as instruções de acordo com o sistema operacional utilizado.

**Windows**

É necessário o [Visual Studio](https://visualstudio.microsoft.com/pt-br/vs/community/) e o [cmake](https://cmake.org/download/). 

Criar projeto do Visual Studio

```bash!
cd build
cmake.exe .. -G "Visual Studio 14 2015 Win64"
```
Para o Visual Studio 2017 usar "Visual Studio 15 2017 Win64"
Para o Visual Studio 2019 usar "Visual Studio 16 2019".

Então abrir o projeto gerado dentro da pasta build, e compilar direto no Visual Studio.

**Linux**

Criar os arquivos make do projeto:
```bash
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
```

Então compilar com
```bash
make -j
```

**VSCode** 
(Fiz poucos testes, parece funcionar bem.)

[//]: # (Tutorial: https://code.visualstudio.com/docs/cpp/CMake-linux)

- Instalar o [gcc ou g++](https://github.com/niXman/mingw-builds-binaries/releases). O Visual Studio Normal já tem um g++ compativel. Se for instalar o MinGW, instale o 11.2.0. Versoes mais recentes não conseguem compilar o projeto.
- Instale o [CMake](https://cmake.org/download/). 
- Extensão [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) e [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools)

Fazer a extensão CMake Tooks reconhecer a pasta do MinGW pelas configurações da extensão.

Abrir pasta do VSCode **sempre** na raiz do VTM

Escolher o compilador a ser utilizado: **`F1`**, `>CMake: Select a Kit`
Se nao houver opção de selecionar um kit, configurar o cmake: **`F1`**, `>CMake: Configure`

Selecionar variante:  **`F1`**, `>CMake: Select Variant`

Depois selecionar tudo pela barra inferior do VSCode: **Versão** (Debug ou Release), um **compilador** diferente, ou compilar o projeto pelo **Build**.
![Screenshot_1.png](https://hackmd.io/_uploads/Sy0_LBtmp.png)



Etapa 2: Instruções para rodar as simulações
---------------------------

Criar uma pasta 'outputs' na raiz do diretório do software:
```bash
mkdir outputs 
```

Executar os comandos de acordo com as sequências desejadas. 

Abaixo os link contendo todos os comandos necessários de acordo com a CTC: [JVET-T2010](https://jvet-experts.org/doc_end_user/current_document.php?id=10545).
São 26 sequências, 4 QPs por sequência, o que totaliza 104 linhas de comando.
(para baixar a lista, utilize o botão direito, salvar link como)

Pode ser necessario fazer alterações nessas linhas de comando, de acordo com localização do executável do software e da localização das sequências.



[Lista de comandos para Windows, cfg Low Delay P](https://gist.github.com/mrperleberg/e1959619a33f57a25e63cf8975faa38a/raw/9025cf9a996b001f4a64132207652877522ef45d/listaComandos_VVC_LDP_Windows.txt)
[Lista de comandos para Windows, cfg All Intra](https://gist.github.com/mrperleberg/941bb1ee2ee6becac8b54045ee105196/raw/f32c2e3171ca2d41d7953285c17450793370ac11/listaComandos_VVC_AI_Windows.txt)
[Lista de comandos para Windows, cfg Random Access](https://gist.github.com/mrperleberg/292dad95e34de4fa102bb8b97a47a897/raw/4619c7bcaafb8c9a34082cac5b23f0b5984a8cff/listaComandos_VVC_RA_Windows.txt)

[Lista de comandos para Linux, cfg Low Delay P](https://gist.github.com/mrperleberg/46ef17d959941f9aca81c4d3034941ac/raw/3a6c90892fa80179227ff7783cb44e34e3a29d2a/listaComandos_VVC_LDP_Linux.txt)
[Lista de comandos para Linux, cfg All Intra](https://gist.github.com/mrperleberg/491897193158c5cb3b39de80ff5ce977/raw/77209bd92abbb76e732428eff514012e91e1518e/listaComandos_VVC_AI_Linux.txt)
[Lista de comandos para Linux, cfg Random Access](https://gist.github.com/mrperleberg/7077ef5c9561c21e2e8b52ecf71de6b1/raw/188007518eb88cc9549f7f4fc8cc7f3ae61782e7/listaComandos_VVC_RA_Linux.txt)

### Definir thread:

No linux, pode ser utilizado 
```
taskset -c x
```
no começo de cada linha de comando para definir qual thread utilizar. (sendo x o número da thread)

