Explicitly check that AudioGraph input is PCM 16

AudioGraph implicitly assumes that input will be PCM 16 bit, and not float.
Make the check explicit.

PiperOrigin-RevId: 616149131
This commit is contained in:
Googler 2024-03-15 09:10:59 -07:00 committed by Copybara-Service
parent b9843af6a0
commit 415d779c62
2 changed files with 12 additions and 1 deletions

View File

@ -57,7 +57,9 @@ import java.util.Objects;
/** Returns whether an {@link AudioFormat} is valid as an input format. */
public static boolean isInputAudioFormatValid(AudioFormat format) {
if (format.encoding == Format.NO_VALUE) {
// AudioGraphInput assumes PCM_16BIT -- see, for example, the automatic format conversions
// in AudioGraphInput.configureProcessing.
if (format.encoding != C.ENCODING_PCM_16BIT) {
return false;
}
if (format.sampleRate == Format.NO_VALUE) {

View File

@ -48,6 +48,15 @@ public class AudioGraphTest {
private static final AudioFormat SURROUND_50000 =
new AudioFormat(/* sampleRate= */ 50_000, /* channelCount= */ 6, C.ENCODING_PCM_16BIT);
@Test
public void floatPcmFormat_isNotValidInputFormat() {
assertThat(
AudioGraph.isInputAudioFormatValid(
new AudioFormat(
/* sampleRate= */ 44_100, /* channelCount= */ 1, C.ENCODING_PCM_FLOAT)))
.isFalse();
}
@Test
public void silentItem_outputsCorrectAmountOfBytes() throws Exception {
AudioGraph audioGraph = new AudioGraph(new DefaultAudioMixer.Factory());