Skip to content

Commit 53e0215

Browse files
committed
merge main + clippy
2 parents d62bdfe + 87d3eae commit 53e0215

File tree

2 files changed

+43
-36
lines changed

2 files changed

+43
-36
lines changed

src/lib.rs

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -125,22 +125,30 @@ impl AtomicF64 {
125125
/// voice based applications, e.g. see phone bandwidth) and 96000Hz (for very high
126126
/// quality audio applications and spectrum manipulation).
127127
/// Most common sample rates for musical applications are 44100 and 48000.
128-
/// - see <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer-samplerate>
128+
///
129+
/// - see <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate>
130+
/// > An implementation MUST support sample rates in at least the range 8000 to 96000.
129131
///
130132
/// # Panics
131133
///
132134
/// This function will panic if:
133-
/// - the given sample rate is zero
135+
/// - the given sample rate is lower than 4000 or greater than 192000
134136
///
135137
#[track_caller]
136138
#[inline(always)]
137139
pub(crate) fn assert_valid_sample_rate(sample_rate: f32) {
138-
// 1000 Hertz is a just a random cutoff, but it helps a if someone accidentally puts a
139-
// timestamp in the sample_rate variable
140+
// Arbitrary cutoffs defined as:
141+
// min_sample_rate = min_required_in_spec / 4
142+
// max_sample_rate = max_required_in_spec * 4
143+
let min_sample_rate = 2_000.;
144+
let max_sample_rate = 384_000.;
145+
140146
assert!(
141-
sample_rate > 1000.,
142-
"NotSupportedError - Invalid sample rate: {:?}, should be greater than 1000",
143-
sample_rate
147+
sample_rate >= min_sample_rate && sample_rate <= max_sample_rate,
148+
"NotSupportedError - Invalid sample rate: {:?}, should be in the range [{:?}, {:?}]",
149+
sample_rate,
150+
min_sample_rate,
151+
max_sample_rate,
144152
);
145153
}
146154

@@ -228,20 +236,18 @@ mod tests {
228236

229237
#[test]
230238
#[should_panic]
231-
fn test_invalid_sample_rate_zero() {
232-
assert_valid_sample_rate(0.);
233-
}
234-
235-
#[test]
236-
#[should_panic]
237-
fn test_invalid_sample_rate_subzero() {
238-
assert_valid_sample_rate(-48000.);
239+
fn test_invalid_sample_rate_too_small() {
240+
// invalid lower value used in wpt check
241+
// <the-audio-api/the-audiocontext-interface/audiocontextoptions.html>
242+
assert_valid_sample_rate(1.);
239243
}
240244

241245
#[test]
242246
#[should_panic]
243-
fn test_invalid_sample_rate_too_small() {
244-
assert_valid_sample_rate(100.);
247+
fn test_invalid_sample_rate_too_big() {
248+
// invalid upper value used in wpt check
249+
// <the-audio-api/the-audiocontext-interface/audiocontextoptions.html>
250+
assert_valid_sample_rate(1_000_000.);
245251
}
246252

247253
#[test]

src/node/delay.rs

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ impl DelayNode {
209209
// We add one extra buffer in the ring buffer so that reader never read the
210210
// same entry in history as the writer, even if `delay_time === max_delay_time`
211211
// cf. test_max_delay_multiple_of_quantum_size and test_max_delay
212-
let num_quanta = (max_delay_time * sample_rate / RENDER_QUANTUM_SIZE as f64).ceil() as usize;
212+
let num_quanta =
213+
(max_delay_time * sample_rate / RENDER_QUANTUM_SIZE as f64).ceil() as usize;
213214
let ring_buffer = Vec::with_capacity(num_quanta + 1);
214215

215216
let shared_ring_buffer = Rc::new(RefCell::new(ring_buffer));
@@ -665,7 +666,7 @@ mod tests {
665666

666667
#[test]
667668
fn test_audioparam_value_applies_immediately() {
668-
let context = OfflineAudioContext::new(1, 128, 48000.);
669+
let context = OfflineAudioContext::new(1, 128, 48_000.);
669670
let options = DelayOptions {
670671
delay_time: 0.12,
671672
..Default::default()
@@ -677,7 +678,7 @@ mod tests {
677678
#[test]
678679
fn test_sample_accurate() {
679680
for delay_in_samples in [128., 131., 197.].iter() {
680-
let sample_rate = 48000.;
681+
let sample_rate = 48_000.;
681682
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
682683

683684
let delay = context.create_delay(2.);
@@ -705,7 +706,7 @@ mod tests {
705706
#[test]
706707
fn test_sub_sample_accurate_1() {
707708
let delay_in_samples = 128.5;
708-
let sample_rate = 48000.;
709+
let sample_rate = 48_000.;
709710
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
710711

711712
let delay = context.create_delay(2.);
@@ -733,7 +734,7 @@ mod tests {
733734
#[test]
734735
fn test_sub_sample_accurate_2() {
735736
let delay_in_samples = 128.8;
736-
let sample_rate = 48000.;
737+
let sample_rate = 48_000.;
737738
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
738739

739740
let delay = context.create_delay(2.);
@@ -761,7 +762,7 @@ mod tests {
761762
#[test]
762763
fn test_multichannel() {
763764
let delay_in_samples = 128.;
764-
let sample_rate = 48000.;
765+
let sample_rate = 48_000.;
765766
let mut context = OfflineAudioContext::new(2, 2 * 128, sample_rate);
766767

767768
let delay = context.create_delay(2.);
@@ -794,7 +795,7 @@ mod tests {
794795
#[test]
795796
fn test_input_number_of_channels_change() {
796797
let delay_in_samples = 128.;
797-
let sample_rate = 48000.;
798+
let sample_rate = 48_000.;
798799
let mut context = OfflineAudioContext::new(2, 3 * 128, sample_rate);
799800

800801
let delay = context.create_delay(2.);
@@ -838,7 +839,7 @@ mod tests {
838839
fn test_node_stays_alive_long_enough() {
839840
// make sure there are no hidden order problem
840841
for _ in 0..10 {
841-
let sample_rate = 48000.;
842+
let sample_rate = 48_000.;
842843
let mut context = OfflineAudioContext::new(1, 5 * 128, sample_rate);
843844

844845
// Set up a source that starts only after 5 render quanta.
@@ -873,7 +874,7 @@ mod tests {
873874
#[test]
874875
fn test_subquantum_delay() {
875876
for i in 0..128 {
876-
let sample_rate = 48000.;
877+
let sample_rate = 48_000.;
877878
let mut context = OfflineAudioContext::new(1, 128, sample_rate);
878879

879880
let delay = context.create_delay(1.);
@@ -900,7 +901,7 @@ mod tests {
900901

901902
#[test]
902903
fn test_min_delay_when_in_loop() {
903-
let sample_rate = 480000.;
904+
let sample_rate = 48_000.;
904905
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
905906

906907
let delay = context.create_delay(1.);
@@ -950,8 +951,8 @@ mod tests {
950951
let mut tone_buffer = context.create_buffer(1, tone_length, sample_rate);
951952
let tone_data = tone_buffer.get_channel_data_mut(0);
952953

953-
for i in 0..tone_data.len() {
954-
tone_data[i] = (tone_frequency * 2.0 * PI * i as f32 / sample_rate).sin();
954+
for (i, s) in tone_data.iter_mut().enumerate() {
955+
*s = (tone_frequency * 2.0 * PI * i as f32 / sample_rate).sin();
955956
}
956957

957958
let mut buffer_source = context.create_buffer_source();
@@ -971,14 +972,14 @@ mod tests {
971972
let delay_time_frames = (delay_time_seconds * sample_rate as f64) as usize;
972973
let tone_length_frames = (tone_length_seconds * sample_rate as f64) as usize;
973974

974-
for i in 0..rendered.len() {
975+
for (i, s) in rendered.iter().enumerate() {
975976
if i < delay_time_frames {
976-
assert_eq!(rendered[i], 0.);
977+
assert_eq!(*s, 0.);
977978
} else if i >= delay_time_frames && i < delay_time_frames + tone_length_frames {
978979
let j = i - delay_time_frames;
979-
assert_eq!(rendered[i], source[j]);
980+
assert_eq!(*s, source[j]);
980981
} else {
981-
assert_eq!(rendered[i], 0.);
982+
assert_eq!(*s, 0.);
982983
}
983984
}
984985
}
@@ -991,7 +992,7 @@ mod tests {
991992
// that everything works even if order of processing is not guaranteed
992993
// (i.e. when delay is in a loop)
993994
for _ in 0..10 {
994-
let sample_rate = 480000.;
995+
let sample_rate = 48_000.;
995996
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
996997

997998
// this will be internally clamped to 128 * sample_rate
@@ -1032,7 +1033,7 @@ mod tests {
10321033
#[test]
10331034
fn test_max_delay_multiple_of_quantum_size_1() {
10341035
// set delay and max delay time exactly 1 render quantum
1035-
let sample_rate = 48000.;
1036+
let sample_rate = 48_000.;
10361037
let mut context = OfflineAudioContext::new(1, 256, sample_rate);
10371038

10381039
let max_delay = 128. / sample_rate;
@@ -1087,7 +1088,7 @@ mod tests {
10871088

10881089
#[test]
10891090
fn test_subquantum_delay_dynamic_lifetime() {
1090-
let sample_rate = 48000.;
1091+
let sample_rate = 48_000.;
10911092
let mut context = OfflineAudioContext::new(1, 3 * 128, sample_rate);
10921093

10931094
// Setup a source that emits for 120 frames, so it deallocates after the first render

0 commit comments

Comments
 (0)