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 解析器实现
31KB
608 行
GV Video Decoder for Rust
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
致谢
decode_bc2_alpha
,decode_bc2_block
函数包含在bc2_decoder
中,来自 https://github.com/autergame/texture2ddecoder/commit/6a5e8eaa8a146a0ed117fc245ebfbefa06abe8a5,双重许可下为 MIT 和 Apache-2.0。
依赖项
~630KB
~13K SLoC