4 个版本

0.1.10 2024 年 5 月 11 日
0.1.9 2024 年 4 月 19 日
0.1.8 2024 年 4 月 16 日
0.1.7 2024 年 4 月 16 日

#1238 in 解析器实现

Zlib 许可证

31KB
608

GV Video Decoder for Rust

Crates.io Docs.rs License

GV 视频解码器(极限 GPU 友好视频格式)的 Rust 端口(https://github.com/Ushio/ofxExtremeGpuVideo#binary-file-format-gv)。

  • 此包提供 BC1(DXT1)/ BC2(DXT3)/ BC3(DXT5)/ BC7 解码器(使用 texture2ddecoder 包)和 LZ4 解压缩器(使用 lz4_flex 包),但建议不要使用 BC1/BC2/BC3/BC7 解码器,因为它是在 CPU 上处理的(较慢)。
    • 您可以使用 read_frame_compressed(index)read_frame_compressed_at(time) 方法获取 LZ4 解压缩的(未 BC 解码)帧。(GPU 纹理上传的最快方式)
    • 您可以使用 read_frame(index)read_frame_at(time) 方法获取 BC 解码和 LZ4 解压缩的帧。(易于 BGRA 纹理检查和 CPU 处理)
  • 此包 提供播放器功能。请使用 bevy_movie_player 包(作为 ofxExtremeGpuVideo 的替代方案)。
  • 此包 目前 不提供编码器(但计划将来提供)。目前,您可以使用 ofxExtremeGpuVideo 工具进行编码。

二进制文件格式(gv)

0: uint32_t width
4: uint32_t height
8: uint32_t frame count
12: float fps
16: uint32_t format (DXT1 = 1, DXT3 = 3, DXT5 = 5, BC7 = 7)
20: uint32_t frame bytes
24: raw frame storage (lz4 compressed)
eof - (frame count) * 16: [(uint64_t, uint64_t)..<frame count] (address, size) of lz4, address is zero based from file head

致谢

依赖项

~630KB
~13K SLoC