MIT License

项目介绍

hjmkt/wrenc 是一个托管在 GitHub 上的开源项目,主要使用 Rust 编写,采用 MIT License 许可证,目前获得 7 个 Star、2 次 Fork。

仓库全名
hjmkt/wrenc
开源许可证
MIT License
Star 数
7
Fork 数
2

README 摘要

wrenc is an experimental H.266/VVC encoder implemented in Rust. The latest evaluation dashboard can be found here. Requirements Rust 1.66.0-nightly or later Python 3.10 for running evaluation scripts Node.js & yarn for building an evaluation dashboard Supported features Codec-specific features Feature | Availability | Remarks | :--------------------: | :-----------------------------------: | :--------------------: |…

完整内容见 GitHub 原始 README 或本页 。

常见问题

wrenc 用什么语言开发?

主要使用 Rust 编写,采用 MIT License 许可证,目前有 7 个 Star。

wrenc 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 wrenc 的源码?

可以直接克隆仓库:git clone https://github.com/hjmkt/wrenc.git,默认分支为 main;安装与运行步骤见仓库 README。

wrenc 最近还在维护吗?

仓库最近一次更新为 2022年10月17日,当前没有未关闭的 Issue;Star 数为 7,可作为社区活跃度的参考。

关于

An experimental H.266/VVC encoder

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
13
价值分
5
活跃状态
活跃

README

wrenc workflow

wrenc is an experimental H.266/VVC encoder implemented in Rust.

The latest evaluation dashboard can be found here.

Requirements

  • Rust 1.66.0-nightly or later
  • Python 3.10 for running evaluation scripts
  • Node.js & yarn for building an evaluation dashboard

Supported features

Codec-specific features

Feature Availability Remarks
CTU size 32x32 -
CT size 32x32 or 16x16 or 8x8 or 4x4 -
Tile 1 tile per picture -
Slice 1 slice per picture -
Sub-picture No -
Slice type I only -
Chroma format YCbCr420 only -
Color depth 8-bit only -
Intra prediction PLANAR or DC or ANGULARX or CCLMX -
Transform skip Yes* Not elaborately tested
Transform size 64x64 or 32x32 or 16x16 or 8x8 or 4x4 -
LFNST No -
Loop filter No -
Dependent quantization Yes -

Encoder-specific features

Feature Availability Remarks
Input format Raw YUV only -
Input protocol File or Unix Pipe -
Input resolution Width and height should be multiples of 32 To be fixed
Output protocol File only -
CT partition search Exhaustive search by RD costs -
Intra prediction search Step search by RD costs -
Rate control Fixed QP only -
SIMD Utilize AVX2 when supported -

Build

# building wrenc for debug
cargo build

# building wrenc for development
cargo build --profile dev

# building wrenc for release
cargo build --release

# building an evaluation dashboard
cd tools/dashboard
yarn
node_modules/.bin/webpack

Usage

Run wrenc

# running wrenc for a file input
cargo run --release --bin wrenc -- -i /path/to/video.yuv --input-size {WIDTH}x{HEIGHT} --num-pictures NUM_OF_FRAMES -o /path/to/output.vvc --output-size {WIDTH}x{HEIGHT} [--qp QP] [--max-split-depth MAX_SPLIT_DEPTH] [--reconst /path/to/reconstructed.yuv] [--extra-params KEY1=VAL1[,KEY2=VAL2,...]]

# running wrenc for a pipe input
ffmpeg -i /path/to/input.mp4 -f rawvideo -pix_fmt yuv420p -s {WIDTH}x{HEIGHT} - | cargo run --release --bin wrenc -- -i - --input-size {WIDTH}x{HEIGHT} --num-pictures NUM_OF_FRAMES -o /path/to/output.vvc --output-size {WIDTH}x{HEIGHT} [--qp QP] [--max-split-depth MAX_SPLIT_DEPTH] [--reconst /path/to/reconstructed.yuv] [--extra-params KEY1=VAL1[,KEY2=VAL2,...]]

Evaluation

The following command will run wrenc on test videos with some presets of parameters specified in tools/evaluation/config.json. The result will be generated as summary.json.

cd tools/evaluation

# for pipenv users
pipenv shell
pipenv install

# otherwise
pip install -r requirements.txt

python evaluate_mp.py --threads NUM_OF_THREADS

The following command will run the evaluation, update the dashboard and export it as docs/index.html.

scripts/update_dashboard.sh

Test

# unit tests
cargo test

# integration tests
VTM_ROOT=/path/to/vtm/bin scripts/integration_test.sh

# check coding style
cargo fmt --all --check --verbose
cargo clippy --all-targets --all-features

评论

暂无评论