diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 12530e32bf..c620ea708e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -13,6 +13,7 @@ `ExportException.codecInfo`. * Track Selection: * Extractors: + * Fix PCM audio format extraction in AVI containers. * Audio: * Video: * Text: diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/StreamFormatChunk.java b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/StreamFormatChunk.java index 7ecdcd2816..08e8a77476 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/StreamFormatChunk.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/StreamFormatChunk.java @@ -83,9 +83,9 @@ import com.google.common.collect.ImmutableList; int channelCount = body.readLittleEndianUnsignedShort(); int samplesPerSecond = body.readLittleEndianInt(); body.skipBytes(6); // averageBytesPerSecond (4 bytes), nBlockAlign (2 bytes). - int bitsPerSample = body.readUnsignedShort(); + int bitsPerSample = body.readLittleEndianUnsignedShort(); int pcmEncoding = Util.getPcmEncoding(bitsPerSample); - int cbSize = body.readLittleEndianUnsignedShort(); + int cbSize = body.bytesLeft() > 0 ? body.readLittleEndianUnsignedShort() : 0; byte[] codecData = new byte[cbSize]; body.readBytes(codecData, /* offset= */ 0, codecData.length);