The fastest and safest EVC encoder and decoder
Overview
MPEG-5 Essential Video Coding (EVC) baseline profile is royalty-free, which includes only technologies that are more than 20 years old or that were submitted with a royalty-free declaration. Compared to H.264/AVC (JM19.0), MPEG-5 EVC (ETM baseline) provides about 30% BD-rate reduction with comparable 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:
- 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
Usage
Compressing video
Input videos can be in raw yuv (I420) format or y4m format. The monochrome color format is not supported yet.
Decompressing video
Decoder only supports MPEG-5 EVC baseline profile. Output videos can be in raw yuv (I420) format or y4m format
Contributing
Contributors or Pull Requests are Welcome!!!