Update TrackEvent.java
This commit is contained in:
parent
fc2099dede
commit
b27b65199a
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user