Update TrackEvent.java

This commit is contained in:
Philippe Simons 2023-10-19 21:53:15 +02:00 committed by christosts
parent fc2099dede
commit b27b65199a

View File

@ -115,44 +115,42 @@ import androidx.media3.common.util.UnstableApi;
} }
statusByte = firstByte; statusByte = firstByte;
} else { } else if (firstByte == META_EVENT_STATUS) { // This is a Meta event.
if (firstByte == META_EVENT_STATUS) { // This is a Meta event. int metaEventMessageType = parsableTrackEventBytes.readUnsignedByte();
int metaEventMessageType = parsableTrackEventBytes.readUnsignedByte(); int eventLength = readVariableLengthInt(parsableTrackEventBytes);
int eventLength = readVariableLengthInt(parsableTrackEventBytes);
statusByte = firstByte; statusByte = firstByte;
switch (metaEventMessageType) { switch (metaEventMessageType) {
case META_TEMPO_CHANGE: case META_TEMPO_CHANGE:
usPerQuarterNote = parsableTrackEventBytes.readUnsignedInt24(); usPerQuarterNote = parsableTrackEventBytes.readUnsignedInt24();
if (usPerQuarterNote <= 0) { if (usPerQuarterNote <= 0) {
throw ParserException.createForUnsupportedContainerFeature( throw ParserException.createForUnsupportedContainerFeature(
"Tempo event data value must be a non-zero positive value. Parsed value: " "Tempo event data value must be a non-zero positive value. Parsed value: "
+ usPerQuarterNote); + usPerQuarterNote);
} }
parsableTrackEventBytes.skipBytes(eventLength - /* tempoDataLength */ 3); parsableTrackEventBytes.skipBytes(eventLength - /* tempoDataLength */ 3);
break; break;
case META_END_OF_TRACK: case META_END_OF_TRACK:
parsableTrackEventBytes.setPosition(startingPosition); parsableTrackEventBytes.setPosition(startingPosition);
reset(); reset();
return false; return false;
default: // Ignore all other Meta events. default: // Ignore all other Meta events.
parsableTrackEventBytes.skipBytes(eventLength); parsableTrackEventBytes.skipBytes(eventLength);
}
} else if (firstByte == SYSEX_BEGIN_STATUS) {
// TODO(b/228838584): Handle this gracefully.
statusByte = firstByte;
int currentByte;
do { // eat SysEx Message
currentByte = parsableTrackEventBytes.readUnsignedByte();
} while (currentByte != SYSEX_END_STATUS);
} else {
throw ParserException.createForUnsupportedContainerFeature(
"Unknown track events.");
} }
} else if (firstByte == SYSEX_BEGIN_STATUS) {
// TODO(b/228838584): Handle this gracefully.
statusByte = firstByte;
int currentByte;
do { // eat SysEx Message
currentByte = parsableTrackEventBytes.readUnsignedByte();
} while (currentByte != SYSEX_END_STATUS);
} else {
throw ParserException.createForUnsupportedContainerFeature(
"Unknown track event: " + firstByte);
} }
eventFileSizeBytes = parsableTrackEventBytes.getPosition() - startingPosition; eventFileSizeBytes = parsableTrackEventBytes.getPosition() - startingPosition;