Skip to content

Commit cd19799

Browse files
rohitjoinscopybara-github
authored andcommitted
Fix float PCM endianness handling in MP4 extraction
This change adds an explicit endianness check (`!isBigEndian`) when parsing the audio sample entry in `BoxParser.java` to prevent mapping big-endian 32-bit float audio to a little-endian encoding, avoiding static noise during playback. Issue: #3063 PiperOrigin-RevId: 875133592
1 parent ff498c4 commit cd19799

File tree

1 file changed

+1
-1
lines changed
  • libraries/extractor/src/main/java/androidx/media3/extractor/mp4

1 file changed

+1
-1
lines changed

libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2139,7 +2139,7 @@ private static void parseAudioSampleEntry(
21392139
} else if (bitsPerSample == 32) {
21402140
pcmEncoding = isBigEndian ? C.ENCODING_PCM_32BIT_BIG_ENDIAN : C.ENCODING_PCM_32BIT;
21412141
}
2142-
} else if (bitsPerSample == 32) {
2142+
} else if (!isBigEndian && bitsPerSample == 32) {
21432143
pcmEncoding = C.ENCODING_PCM_FLOAT;
21442144
}
21452145
parent.skipBytes(8); // constBytesPerAudioPacket, constLPCMFramesPerAudioPacket

0 commit comments

Comments
 (0)