Mr_Khyron
27th August 2020, 14:49
https://github.com/revcx/revc
Overview
MPEG-5 Essential Video Coding (EVC) baseline profile is royalty-free. It includes only technologies that are more than 20 years old or that were submitted with a royalty-free declaration. Compared to H.264/AVC High Profile (JM19.0), MPEG-5 EVC Baseline Profile (ETM 6.1) provides about 30% BD-rate reduction with reduced encoding computation complexity and comparable decoding computation complexity.
REVC is a Rust-based EVC (baseline) video codec implementation.
Features
Coding Structure
-- Quad-tree based coding structure up to 64x64 block size
Intra Prediction
-- DC, horizontal (H), vertical (V), diagonal left (DL), diagonal right (DR) for intra prediction
Inter Prediction
-- Un-directional and Bi-directional inter prediction
-- Temporal direct mode
-- Three spatial neighbouring motion vectors and one temporally co-located motion vector
-- 1/2 and 1/4-pel interpolation
Transform and Quantization
-- 4x4 to 64x64 DCT
-- QP range: 0 to 51
-- Run/level symbols with zig-zag scan
Loop Filter
-- Deblocking filter in H.263 Annex J
Entropy Coding
-- Binary arithmetic coding scheme in JPEG Annex D
Roadmap
0.1 Translation: (Done)
-- Translate ETM baseline decoder from C to Rust
-- Translate ETM baseline encoder from C to Rust
0.2 Optimization:
-- profiling and benchmarking
-- rust safe code optimization
-- assembly optimization
-- armeabi-v7a
-- arm64-v8a
-- x86
-- x86_64
-- multi-threading optimization
0.3 Modernization
-- rate control
-- practical usecases: RTC, Live Streaming, VOD, etc
Overview
MPEG-5 Essential Video Coding (EVC) baseline profile is royalty-free. It includes only technologies that are more than 20 years old or that were submitted with a royalty-free declaration. Compared to H.264/AVC High Profile (JM19.0), MPEG-5 EVC Baseline Profile (ETM 6.1) provides about 30% BD-rate reduction with reduced encoding computation complexity and comparable decoding computation complexity.
REVC is a Rust-based EVC (baseline) video codec implementation.
Features
Coding Structure
-- Quad-tree based coding structure up to 64x64 block size
Intra Prediction
-- DC, horizontal (H), vertical (V), diagonal left (DL), diagonal right (DR) for intra prediction
Inter Prediction
-- Un-directional and Bi-directional inter prediction
-- Temporal direct mode
-- Three spatial neighbouring motion vectors and one temporally co-located motion vector
-- 1/2 and 1/4-pel interpolation
Transform and Quantization
-- 4x4 to 64x64 DCT
-- QP range: 0 to 51
-- Run/level symbols with zig-zag scan
Loop Filter
-- Deblocking filter in H.263 Annex J
Entropy Coding
-- Binary arithmetic coding scheme in JPEG Annex D
Roadmap
0.1 Translation: (Done)
-- Translate ETM baseline decoder from C to Rust
-- Translate ETM baseline encoder from C to Rust
0.2 Optimization:
-- profiling and benchmarking
-- rust safe code optimization
-- assembly optimization
-- armeabi-v7a
-- arm64-v8a
-- x86
-- x86_64
-- multi-threading optimization
0.3 Modernization
-- rate control
-- practical usecases: RTC, Live Streaming, VOD, etc