Update README and other documents, rename github workflow from kvazaar.yml to uvg266.yml

This commit is contained in:
Marko Viitanen 2022-04-29 13:28:10 +03:00
parent f691ed22c3
commit a8c458469c
4 changed files with 46 additions and 41 deletions

View file

@ -8,8 +8,8 @@ uvg266 is still under development. Speed and RD-quality will continue to improve
http://ultravideo.fi/#encoder for more information. http://ultravideo.fi/#encoder for more information.
- Linux [![Kvazaar_tests](https://github.com/ultravideo/kvazaar/actions/workflows/kvazaar.yml/badge.svg)](https://github.com/ultravideo/kvazaar/actions/workflows/kvazaar.yml) - Linux [![uvg266_tests](https://github.com/ultravideo/uvg266/actions/workflows/uvg266.yml/badge.svg)](https://github.com/ultravideo/uvg266/actions/workflows/uvg266.yml)
- Windows [![Build status](https://ci.appveyor.com/api/projects/status/88sg1h25lp0k71pu?svg=true)](https://ci.appveyor.com/project/Ultravideo/kvazaar) - Windows [![Build status](https://ci.appveyor.com/api/projects/status/88sg1h25lp0k71pu?svg=true)](https://ci.appveyor.com/project/Ultravideo/uvg266)
## Table of Contents ## Table of Contents
@ -20,13 +20,8 @@ http://ultravideo.fi/#encoder for more information.
- [Presets](#presets) - [Presets](#presets)
- [uvg266 library](#uvg266-library) - [uvg266 library](#uvg266-library)
- [Compiling uvg266](#compiling-uvg266) - [Compiling uvg266](#compiling-uvg266)
- [Required libraries](#required-libraries) - [CMake](#cmake)
- [Autotools](#autotools)
- [Autotools on MinGW](#autotools-on-mingw)
- [OS X](#os-x)
- [Visual Studio](#visual-studio)
- [Docker](#docker) - [Docker](#docker)
- [Visualization (Windows only)](#visualization-windows-only)
- [Paper](#paper) - [Paper](#paper)
- [Contributing to uvg266](#contributing-to-uvg266) - [Contributing to uvg266](#contributing-to-uvg266)
- [Code documentation](#code-documentation) - [Code documentation](#code-documentation)
@ -273,7 +268,8 @@ Compression tools:
--(no-)tmvp : Temporal motion vector prediction [enabled] --(no-)tmvp : Temporal motion vector prediction [enabled]
--(no-)mrl : Enable use of multiple reference lines in intra --(no-)mrl : Enable use of multiple reference lines in intra
predictions. predictions.
--(no-)mip : Enable matrix weighted intra prediction. --mts <string> : Multiple Transform Selection [off]. --(no-)mip : Enable matrix weighted intra prediction.
--mts <string> : Multiple Transform Selection [off].
(Currently only implemented for intra (Currently only implemented for intra
and has effect only when rd >= 2) and has effect only when rd >= 2)
- off: MTS disabled - off: MTS disabled
@ -282,7 +278,8 @@ Compression tools:
- both: MTS applied for both intra and inter blocks. - both: MTS applied for both intra and inter blocks.
- implicit: uses implicit MTS. Applies DST7 instead - implicit: uses implicit MTS. Applies DST7 instead
of DCT2 to certain intra blocks. of DCT2 to certain intra blocks.
--(no-)jccr : Joint coding of chroma residual. Requires rdo> = 2. [disabled] --(no-)jccr : Joint coding of chroma residual.
Requires rdo> = 2. [disabled]
--(no-)cclm : Cross component linear model. --(no-)cclm : Cross component linear model.
Extra chroma prediction modes that are formed Extra chroma prediction modes that are formed
via linear transformation from the luma via linear transformation from the luma
@ -406,10 +403,10 @@ where the names have been abbreviated to fit the layout in GitHub.
## uvg266 library ## uvg266 library
See [kvazaar.h](src/kvazaar.h) for the library API and its See [uvg266.h](src/uvg266.h) for the library API and its
documentation. documentation.
When using the static uvg266 library on Windows, macro `KVZ_STATIC_LIB` When using the static uvg266 library on Windows, macro `UVG_STATIC_LIB`
must be defined. On other platforms it's not strictly required. must be defined. On other platforms it's not strictly required.
The needed linker and compiler flags can be obtained with pkg-config. The needed linker and compiler flags can be obtained with pkg-config.
@ -423,39 +420,45 @@ improve in the build process. We want to make this as simple as
possible. possible.
### Autotools ### CMake
Depending on the platform, some additional tools are required for compiling uvg266 with autotools. Depending on the platform, some additional tools are required for compiling uvg266 with CMake.
For Ubuntu, the required packages are `automake autoconf libtool m4 build-essential yasm`. Yasm is For Ubuntu, the required packages are `automake autoconf build-essential`.
optional, but some of the optimization will not be compiled in if it's missing.
Run the following commands to compile and install uvg266. Run the following commands to compile and install uvg266.
./autogen.sh cd build
./configure cmake ..
make make
sudo make install sudo make install
See `./configure --help` for more options. Visual Studio natively supports opening the `CMakeLists.txt` of the CMake build package has been installed.
Otherwise CMake-CLI can be used to generate the Visual Studio project files.
### Autotools on MinGW ### Docker
It is recommended to use Clang instead of GCC in MinGW environments. GCC also works, but AVX2 optimizations will be disabled because of a known GCC issue from 2012, so performance will suffer badly. Instead of `./configure`, run This project includes a [Dockerfile](./Dockerfile), which enables building for Docker.
Build using Docker: `docker build -t uvg266 .`
Example usage: `docker run -i -a STDIN -a STDOUT uvg266 -i - --input-res=320x240 -o - < testfile_320x240.yuv > out.266`
For other examples, see [Dockerfile](./Dockerfile)
CC=clang ./configure ## Paper
to build uvg266 using Clang. Please cite [this paper](https://ieeexplore.ieee.org/document/9690938) for uvg266:
### OS X ```M. Viitanen, J. Sainio, A. Mercat, A. Lemmetti, and J. Vanne, “From HEVC to VVC: the First Development Steps of a Practical Intra Video Encoder,” Accepted to IEEE Transactions on Consumer Electronics```
- Install Homebrew
- run ```brew install automake libtool yasm```
- Refer to Autotools instructions
Or in BibTex:
### Visual Studio ```
- At least VisualStudio 2015.2 is required. @ARTICLE{uvg266_2022,
- Project files can be found under build/. author={Viitanen, Marko and Sainio, Joose and Mercat, Alexandre and Lemmetti, Ari and Vanne, Jarno},
- Requires external [vsyasm.exe](http://yasm.tortall.net/Download.html) journal={IEEE Transactions on Consumer Electronics},
in %PATH% title={From HEVC to VVC: the First Development Steps of a Practical Intra Video Encoder},
year={2022},
volume={},
number={},
doi={10.1109/TCE.2022.3146016}}
}
```
## Contributing to uvg266 ## Contributing to uvg266
We are happy to look at pull requests in Github. There is still lots of work to be done. We are happy to look at pull requests in Github. There is still lots of work to be done.
@ -469,7 +472,7 @@ You can generate Doxygen documentation pages by running the command
### For version control we try to follow these conventions: ### For version control we try to follow these conventions:
- Master branch always produces a working bitstream (can be decoded with - Master branch always produces a working bitstream (can be decoded with
HM). VTM).
- Commits for new features and major changes/fixes put to a sensibly - Commits for new features and major changes/fixes put to a sensibly
named feature branch first and later merged to the master branch. named feature branch first and later merged to the master branch.
- Always merge the feature branch to the master branch, not the other - Always merge the feature branch to the master branch, not the other
@ -478,13 +481,13 @@ You can generate Doxygen documentation pages by running the command
### Testing ### Testing
- Main automatic way of testing is with Travis CI. Commits, branches - Main automatic way of testing is with Github Actions. Commits, branches
and pull requests are tested automatically. and pull requests are tested automatically.
- Uninitialized variables and such are checked with Valgrind. - Uninitialized variables and such are checked with Valgrind.
- Bitstream validity is checked with HM. - Bitstream validity is checked with HM.
- Compilation is checked on GCC and Clang on Linux, and Clang on OSX. - Compilation is checked on GCC and Clang on Linux, and Clang on OSX.
- Windows msys2 and msvc builds are checked automatically on Appveyor. - Windows msys2 and msvc builds are checked automatically on Appveyor.
- If your changes change the bitstream, decode with HM to check that - If your changes change the bitstream, decode with VTM to check that
it doesn't throw checksum errors or asserts. it doesn't throw checksum errors or asserts.
- If your changes shouldn't alter the bitstream, check that they don't. - If your changes shouldn't alter the bitstream, check that they don't.
- Automatic compression quality testing is in the works. - Automatic compression quality testing is in the works.
@ -518,5 +521,5 @@ We try to follow the following conventions:
- Functions only used inside the module shouldn't be defined in the - Functions only used inside the module shouldn't be defined in the
module header. They can be defined in the beginning of the .c file if module header. They can be defined in the beginning of the .c file if
necessary. necessary.
- Symbols defined in headers prefixed with kvz_ or KVZ_. - Symbols defined in headers prefixed with uvg_ or UVG_.
- Includes in alphabetic order. - Includes in alphabetic order.

View file

@ -376,7 +376,8 @@ Enable use of multiple reference lines in intra
predictions. predictions.
.TP .TP
\fB\-\-(no\-)mip \fB\-\-(no\-)mip
Enable matrix weighted intra prediction. \-\-mts <string> Enable matrix weighted intra prediction.
\fB\-\-mts <string>
Multiple Transform Selection [off]. Multiple Transform Selection [off].
(Currently only implemented for intra (Currently only implemented for intra
and has effect only when rd >= 2) and has effect only when rd >= 2)
@ -388,7 +389,8 @@ and has effect only when rd >= 2)
of DCT2 to certain intra blocks. of DCT2 to certain intra blocks.
.TP .TP
\fB\-\-(no\-)jccr \fB\-\-(no\-)jccr
Joint coding of chroma residual. Requires rdo> = 2. [disabled] Joint coding of chroma residual.
Requires rdo> = 2. [disabled]
.TP .TP
\fB\-\-(no\-)cclm \fB\-\-(no\-)cclm
Cross component linear model. Cross component linear model.

View file

@ -628,7 +628,7 @@ void print_help(void)
" --(no-)tmvp : Temporal motion vector prediction [enabled]\n" " --(no-)tmvp : Temporal motion vector prediction [enabled]\n"
" --(no-)mrl : Enable use of multiple reference lines in intra\n" " --(no-)mrl : Enable use of multiple reference lines in intra\n"
" predictions.\n" " predictions.\n"
" --(no-)mip : Enable matrix weighted intra prediction." " --(no-)mip : Enable matrix weighted intra prediction.\n"
" --mts <string> : Multiple Transform Selection [off].\n" " --mts <string> : Multiple Transform Selection [off].\n"
" (Currently only implemented for intra\n" " (Currently only implemented for intra\n"
" and has effect only when rd >= 2)\n" " and has effect only when rd >= 2)\n"
@ -638,7 +638,7 @@ void print_help(void)
" - both: MTS applied for both intra and inter blocks.\n" " - both: MTS applied for both intra and inter blocks.\n"
" - implicit: uses implicit MTS. Applies DST7 instead \n" " - implicit: uses implicit MTS. Applies DST7 instead \n"
" of DCT2 to certain intra blocks.\n" " of DCT2 to certain intra blocks.\n"
" --(no-)jccr : Joint coding of chroma residual. " " --(no-)jccr : Joint coding of chroma residual.\n"
" Requires rdo> = 2. [disabled]\n" " Requires rdo> = 2. [disabled]\n"
" --(no-)cclm : Cross component linear model. \n" " --(no-)cclm : Cross component linear model. \n"
" Extra chroma prediction modes that are formed\n" " Extra chroma prediction modes that are formed\n"