# 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**.

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)