#fps #frame-rate #time #rayleigh #nyquist

hertz

用于处理帧率、采样率、其他比率、时间长度、频率等的有用函数,以及保持恒定帧率的函数

3 个版本 (重大变更)

使用旧的 Rust 2015

0.3.0 2016年6月12日
0.2.0 2016年2月5日
0.1.0 2016年2月4日

#19 in #fps


被用于 mel

MIT/Apache

10KB
100

hertz

状态:正常工作。已测试。API 仍在变动。

Build Status

用于处理帧率、采样率、其他比率、时间长度、频率等的有用函数,以及保持恒定帧率。用 rust 编写。

要使用它,请在你的 Cargo.toml[dependencies] 部分添加 hertz = "*",并在你的代码中调用 extern crate hertz;

阅读文档以获取示例和更多信息!

贡献

根据您的选择,许可协议为 Apache-2.0 (tl;dr) 或 MIT (tl;dr)


lib.rs:

用于处理帧率、采样率、其他比率、时间长度、频率等的有用函数,以及保持恒定帧率。

ratesample rateframe ratefpsfrequency 等,表达相同的概念,因此可以互换使用。

你可以使用 hertz 来计算信号短时傅里叶变换可以有意义分析的时间分辨率和频率范围

extern crate hertz;

fn main() {
let sample_rate = 44100;
let window_size = 4096;
let step_size = 512;

// 11 hertz is the maximum frequency that can be meaningfully analyzed
assert_eq!(
11.,
hertz::rayleigh(sample_rate as f64, window_size as f64).round());

// 22050 hertz is the maximum frequency that can be meaningfully analyzed
assert_eq!(
22050.,
hertz::nyquist(sample_rate as f64).round());

// 12 ms is the time resolution we get when analyzing a 44100 hertz
// signal with a step size of 512
assert_eq!(
12.,
hertz::s_to_ms(hertz::cycles_per_second_to_seconds_per_cycle(
sample_rate as f64,
step_size as f64)).round());
}

你可以使用 hertz 在游戏或其他计算机图形应用程序中保持恒定帧率

fn main() {
let frames_per_second: usize = 60;

loop {
let instant_at_frame_start = std::time::Instant::now();

// here's where logic and rendering would go.
// this is never called more than frames_per_second
// times per second.

hertz::sleep_for_constant_rate(
frames_per_second, instant_at_frame_start);
}
}

无运行时依赖