Git Product home page Git Product logo

revc's Introduction

revc Actions Status

The fastest and safest EVC encoder and decoder

Table of Content

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:
    • Translate ETM baseline decoder from C to Rust
    • Translate ETM baseline encoder from C to Rust
  • 0.2 Optimization:
    • profiling and benchmarking
    • memory/cache 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.

cargo run --release --bin revce -- -i scripts/foreman_qcif8.yuv -w 176 -h 144 -z 30 -f 8 -q 27 -r scripts/tmp/rec.yuv --keyint 8 --ref_pic_gap_length 8 --skip 0 --disable_dbf --inter_slice_type 1 -o scripts/tmp/test_ld_p.evc -v
cargo run --release --bin revce -- -i scripts/foreman_qcif8.y4m                     -f 8 -q 27 -r scripts/tmp/rec.y4m --keyint 8 --ref_pic_gap_length 8 --skip 0               --inter_slice_type 0 -o scripts/tmp/test_ld_b.evc -v

Decompressing video

Decoder only supports MPEG-5 EVC baseline profile. Output videos can be in raw yuv (I420) format or y4m format

cargo run --release --bin revcd -- -i scripts/tmp/test_ld_p.evc -o scripts/tmp/test.yuv -v
cargo run --release --bin revcd -- -i scripts/tmp/test_ld_b.evc -o scripts/tmp/test.y4m -v

Benchmark

Benchmark each component with Criterion.

cargo bench --features bench

Contributing

Contributors or Pull Requests are Welcome!!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.