Log in

View Full Version : REVC — Rewrite MPEG-5 EVC (ETM) in Rust


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

hajj_3
27th August 2020, 17:04
I thought that an EVC encoder/decoder hadn't been released?

benwaggoner
27th August 2020, 18:27
This is cool. Rust is an interesting and promising language for video encoding/decoding.

This is for the 0.2 release? SO, a good chunk of features and optimizations, but without rate control and other features targeting real-world scenarios? Any timeframe for 0.3? Any requests for testing or feedback?

ksec
28th August 2020, 09:41
I thought that an EVC encoder/decoder hadn't been released?

It was not available for Public. But I guess the author has access to it.

foxyshadis
28th August 2020, 12:26
Sweet, we can finally start testing EVC!

Greenhorn
28th August 2020, 21:19
This will probably be immediately obvious to anyone who downloads the encoder, but-- the author seems to mean that 0.2.0 marks the start of optimization, not its completion.