View Single Post
Old 27th August 2020, 14:49   #1  |  Link
Mr_Khyron
Member
 
Mr_Khyron's Avatar
 
Join Date: Nov 2002
Posts: 203
REVC — Rewrite MPEG-5 EVC (ETM) in Rust

https://github.com/revcx/revc
Quote:
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
Mr_Khyron is offline   Reply With Quote