1 2# OpenAPV (Open Advanced Professional Video Codec) 3 4[](https://github.com/openapv/openapv/actions/workflows/build.yml) 5 6OpenAPV provides the reference implementation of the [APV codec](#apv-codec) which can be used to record professional-grade video and associated metadata without quality degradation. OpenAPV is free and open source software provided by [LICENSE](#license). 7 8The OpenAPV supports the following features: 9 10- fully compliant with 422-10 and 400-10 profile of [APV codec](#apv-codec) 11- Low complexity by optimization for ARM NEON and x86(64bit) SEE/AVX CPU 12- Supports tile-based multi-threading 13- Supports Various metadata including HDR10/10+ and user-defined format 14- Constant QP (CQP), average bitrate (ABR), and constant rate factor (CRF) are supported 15 16 17## APV codec 18The APV codec is a professional video codec, which was developed in response to the need for professional level high quality video recording and post production. The primary purpose of the APV codec is for use in professional video recording and editing workflows for various types of content. 19 20APV codec utilizes technologies known to be over 20 years to achieve a royalty free codec. APV builds a video codec using only conventional coding technologies, which consist of traditional methods published between the early 1980s and the end of the 1990s. 21 22The APV codec standard has the following features: 23 24- Perceptually lossless video quality, which is close to raw video quality 25- Low complexity and high throughput intra frame only coding without pixel domain prediction 26- Support for high bit-rate range up to a few Gbps for 2K, 4K and 8K resolution content, enabled by a lightweight entropy coding scheme 27- Frame tiling for immersive content and for enabling parallel encoding and decoding 28- Support for various chroma sampling formats from 4:2:2 to 4:4:4, and bit-depths from 10 to 16 29- Support for multiple decoding and re-encoding without severe visual quality degradation 30- Support multi-view video and auxiliary video like depth, alpha, and preview 31- Support various metadata including HDR10/10+ and user-definded format 32 33### Related specification 34- APV Codec (bitstream): [https://datatracker.ietf.org/doc/draft-lim-apv/](https://datatracker.ietf.org/doc/draft-lim-apv/) 35 - Scope of OpenAPV project 36- APV ISO based media file format: [APV-ISOBMFF](/readme/apv_isobmff.md) 37- APV RTP payload format: [https://datatracker.ietf.org/doc/draft-lim-rtp-apv/](https://datatracker.ietf.org/doc/draft-lim-rtp-apv/) 38 39## How to build 40- Build Requirements 41 - CMake (download from [https://cmake.org/](https://cmake.org/)) 42 - GCC 43 44 For ARM 45 - gcc-aarch64-linux-gnu 46 - binutils-aarch64-linux-gnu 47 48 For Windows (crosscompile) 49 - mingw-w64 50 - mingw-w64-tools 51 52- Build Instructions PC (Linux) 53 ``` 54 cmake -DCMAKE_BUILD_TYPE=Release -S . -B build 55 cmake --build build 56 ``` 57 58- Build Instructions ARM (Crosscompile) 59 ``` 60 cmake -S . -B build-arm -DCMAKE_TOOLCHAIN_FILE=aarch64_toolchain.cmake -DCMAKE_BUILD_TYPE=Release 61 cmake --build build-arm 62 ``` 63 64- Build Instructions Windows (Crosscompile) 65 ``` 66 cmake -S . -B build-windows -DCMAKE_TOOLCHAIN_FILE=windows_x86_64_toolchain.cmake -DCMAKE_BUILD_TYPE=Release 67 cmake --build build-windows 68 ``` 69 70- Output Location 71 - Executable applications can be found under build*/bin/ 72 - Library files can be found under build*/lib/ 73 74## How to use 75### Encoder 76 77Encoder as input require raw YCbCr file (422, 444), 10-bit or more. 78 79Displaying help: 80 81 oapv_app_enc --help 82 83Encoding: 84 85 oapv_app_enc -i input_1920x1080_yuv422_10bit.yuv -w 1920 -h 1080 -d 10 -z 30 --input-csp 2 -o encoded.apv 86 oapv_app_enc -i input.y4m -o encoded.apv 87 88### Decoder 89 90Decoder output can be in yuv or y4m formats. 91 92Displaying help: 93 94 oapv_app_dec --help 95 96Decoding: 97 98 oapv_app_dec -i encoded.apv -o output.y4m 99 100## Utility 101 102### Graphical APV bitstream parser 103 104Pattern file of APV bitstream for [ImHex](https://github.com/WerWolv/ImHex) is provided [here](/util/apv.hexpat). 1051. Install [ImHex](https://github.com/WerWolv/ImHex) application 1062. Download [APV pattern file](/util/apv.hexpat) 1072. Open APV bitstream (\*.apv file) with ImHex 1083. Import the APV pattern file on Pattern editor view of ImHex and apply 109 110 111 112## Testing 113 114In build directory run ``ctest`` 115 116## Packaging 117 118For generating package ready for distribution (default deb) execute in build directory ``cpack``, or other formats (tgz, zip etc.) ``cpack -G TGZ``. 119 120## License 121 122See [LICENSE](LICENSE) file for details. 123 124## Graphic logo 125   126   127