README.md
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