#codec #baseline #coding #decoder #encoder #evc

bin+lib revc

Rust 基础视频编码 (MPEG-5 EVC)

5 个版本

0.2.0 2020 年 8 月 26 日
0.1.3 2020 年 8 月 25 日
0.1.2 2020 年 7 月 16 日
0.1.1 2020 年 6 月 7 日
0.1.0 2020 年 6 月 7 日

#147视频

每月 29 次下载

MIT 许可证

2MB
20K SLoC

包含 (DOS exe, 1MB) tools/evca_encoder.exe, (DOS exe, 455KB) tools/evca_decoder.exe

revc Actions Status

最快的最安全的 EVC 编码器和解码器

目录

概述

MPEG-5 基础视频编码 (EVC) 基线配置文件是免费的,它包括20年以上的技术或声明免费的提交的技术。与 H.264/AVC (JM19.0) 相比,MPEG-5 EVC (ETM基线) 在可比较的计算复杂度下提供了大约30%的 BD-rate 降低。

REVC 是一个基于 Rust 的 EVC (基线) 视频编解码器实现。

特性

  • 编码结构
    • 基于四叉树编码结构,最大块大小为 64x64
  • 帧内预测
    • DC、水平 (H)、垂直 (V)、左对角线 (DL)、右对角线 (DR) 用于帧内预测
  • 帧间预测
    • 单向和双向帧间预测
    • 时间直接模式
    • 三个空间相邻运动向量和一个时间共定位的运动向量
    • 1/2 和 1/4 像素插值
  • 变换和量化
    • 4x4 到 64x64 DCT
    • QP 范围:0 到 51
    • 带之字形扫描的 Run/level 符号
  • 环路滤波器
    • H.263 附录 J 中的去块滤波器
  • 熵编码
    • JPEG 附录 D 中的二进制算术编码方案

路线图

  • 0.1 翻译
    • 将 ETM 基线解码器从 C 转换为 Rust
    • 将 ETM 基线编码器从 C 转换为 Rust
  • 0.2 优化
    • 性能分析和基准测试
    • Rust 安全代码优化
    • 汇编优化
      • armeabi-v7a
      • arm64-v8a
      • x86
      • x86_64
    • 多线程优化
  • 0.3 现代化
    • 速率控制
    • 实际用例:RTC、实时流、VOD 等

使用方法

压缩视频

输入视频可以是原始 yuv (I420) 格式或 y4m 格式。目前不支持单色颜色格式。

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

解压缩视频

解码器仅支持 MPEG-5 EVC 基线配置文件。输出视频可以是原始 yuv (I420) 格式或 y4m 格式

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

贡献

欢迎贡献者或拉取请求!!!

依赖项