Merge pull request #6 from openapv/refactor_reducing_global_functions

reduced number of global functions and refactored metadata code
tree: 729f9d71887c1ff835005de13b15be97cf5ab9f1
  1. .github/
  2. app/
  3. inc/
  4. pkgconfig/
  5. readme/
  6. src/
  7. test/
  8. .gitignore
  9. cmake_uninstall.cmake.in
  10. CMakeLists.txt
  11. LICENSE
  12. README.md
  13. version.txt
README.md

OAPV

OpenAPV (Open Advanced Professional Video Codec)

Build & test

OpenAPV provides the reference implementation of the APV codec which can be used to record professional-grade video and associated metadata without quality degradation.

APV codec

The 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. The APV codec supports the following features:

  • Perceptually lossless video quality, which is close to raw video quality
  • Low complexity and high throughput intra frame only coding without pixel domain prediction
  • 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
  • Frame tiling for immersive content and for enabling parallel encoding and decoding
  • Support for various chroma sampling formats from 4:2:2 to 4:4:4, and bit-depths from 10 to 16
  • Support for multiple decoding and re-encoding without severe visual quality degradation
  • Support multi-view video and auxiliary video like depth, alpha, and preview
  • Support various metadata including HDR10/10+ and user-definded format

Related specification

How to build

  • Build Requirements
  • Build Instructions
    cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
    cmake --build build
    
  • Output Location
    • Executable applications can be found under build/bin/
    • Library files can be found under build/lib/

How to use

Encoder

Encoder as input require raw YUV file (422, 444), 10-bit or more.

Displaying help:

$oapv_app_enc --help

Encoding:

$oapv_app_enc -i input_1920x1080_yuv422_10bit.yuv -w 1920 -h 1080 -d 10 -z 30 -o encoded.apv

Decoder

Decoder output can be in yuv or y4m formats.

Displaying help:

$oapv_app_dec --help

Decoding:

$oapv_app_dec -i encoded.apv -o output.y4m

Testing

In build directory run:

ctest

Packaging

For generating package ready for distribution (default deb) execute in build directory:

cpack

or other formats (tgz, zip etc.):

cpack -G TGZ

License

See LICENSE file for details.