Add validation for num_10ms_chunks parameter

Ensure num_10ms_chunks is a positive integer to prevent division by zero
or invalid audio chunk sizes. Raises ValueError if value is less than 1.
This commit is contained in:
James Hush
2026-02-05 10:11:10 +08:00
parent f45f23fb1a
commit 63083cd021
2 changed files with 19 additions and 0 deletions

View File

@@ -84,7 +84,12 @@ class RawAudioTrack(AudioStreamTrack):
Args:
sample_rate: The audio sample rate in Hz.
num_10ms_chunks: Number of 10ms chunks per output frame (default 1).
Raises:
ValueError: If num_10ms_chunks is not a positive integer.
"""
if num_10ms_chunks < 1:
raise ValueError(f"num_10ms_chunks must be a positive integer, got {num_10ms_chunks}")
super().__init__()
self._sample_rate = sample_rate
self._num_10ms_chunks = num_10ms_chunks

View File

@@ -137,3 +137,17 @@ class TestRawAudioTrack:
for sample_rate, num_chunks, expected_bytes in test_cases:
track = RawAudioTrack(sample_rate=sample_rate, num_10ms_chunks=num_chunks)
assert track._bytes_per_chunk == expected_bytes
def test_invalid_num_10ms_chunks_zero(self):
"""Test that num_10ms_chunks=0 raises ValueError."""
with pytest.raises(ValueError) as exc_info:
RawAudioTrack(sample_rate=16000, num_10ms_chunks=0)
assert "positive integer" in str(exc_info.value)
def test_invalid_num_10ms_chunks_negative(self):
"""Test that negative num_10ms_chunks raises ValueError."""
with pytest.raises(ValueError) as exc_info:
RawAudioTrack(sample_rate=16000, num_10ms_chunks=-1)
assert "positive integer" in str(exc_info.value)