Giter Site home page Giter Site 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!!!

revc's People

Contributors

rainliu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

revc's Issues

Add WebAssembly CI

Hello !

Thank you for this very interesting project !
Can we add also a job to validate the WebAssembly compilation ?

Right now it works perfectly, but with optimisation addition it can be great to check every time the compilation on this target.

If required I can help you on that via contributions.

Best,
Marc-Antoine

(Not an Issue) Request for Help!

Hello,

I've been looking for the EVC software repository in the MPEG Gitlab server but i can't find (seems to be in a private repository). I would be very grateful if you could point me in the right direction or share the Test Model release source code with me.

Thanks!

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.