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- Build Instructions PC 49 ``` 50 cmake -DCMAKE_BUILD_TYPE=Release -S . -B build 51 cmake --build build 52 ``` 53 54- Build Instructions ARM 55 ``` 56 cmake -DCMAKE_BUILD_TYPE=Release -S . -B build-arm -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DARM=TRUE -DCMAKE_SYSTEM_PROCESSOR=aarch64 57 cmake --build build-arm 58 ``` 59 60- Output Location 61 - Executable applications can be found under build/bin/ or build-arm/bin/ 62 - Library files can be found under build/lib/ or build-arm/lib/ 63 64## How to use 65### Encoder 66 67Encoder as input require raw YUV file (422, 444), 10-bit or more. 68 69Displaying help: 70 71 oapv_app_enc --help 72 73Encoding: 74 75 oapv_app_enc -i input_1920x1080_yuv422_10bit.yuv -w 1920 -h 1080 -d 10 -z 30 --input-csp 2 -o encoded.apv 76 oapv_app_enc -i input.y4m -o encoded.apv 77 78### Decoder 79 80Decoder output can be in yuv or y4m formats. 81 82Displaying help: 83 84 oapv_app_dec --help 85 86Decoding: 87 88 oapv_app_dec -i encoded.apv -o output.y4m 89 90## Testing 91 92In build directory run ``ctest`` 93 94## Packaging 95 96For generating package ready for distribution (default deb) execute in build directory ``cpack``, or other formats (tgz, zip etc.) ``cpack -G TGZ``. 97 98## License 99 100See [LICENSE](LICENSE) file for details. 101 102## Graphic logo 103   104   105