Fix MIDI event array traversal in TrackChunk.java and TrackEvent.java

- Corrected trackEventBytes traversal in TrackChunk where the array position marker was not incremented properly, leading to duplicate sample output.
- Amended TrackEvent "Meta Event" parsing to account for the length of variable length bytes.
- Fixed a bug with TrackEvent message parsing where message data was parsed incorrectly due to miscalculated length.

PiperOrigin-RevId: 456967968
This commit is contained in:
hmzh 2022-06-24 10:50:27 +01:00 committed by Ian Baker
parent f3893c146d
commit 638c758721
2 changed files with 108 additions and 556 deletions

View File

@ -4,8 +4,8 @@ seekMap:
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
total output bytes = 264
sample count = 86
total output bytes = 96
sample count = 30
format 0:
sampleMimeType = audio/midi
sample 0:
@ -21,335 +21,111 @@ track 0:
flags = 1
data = length 3, hash FFFED75B
sample 3:
time = 2108
time = 128
flags = 1
data = length 3, hash FFFED448
data = length 3, hash FFFED733
sample 4:
time = 2148
time = 128
flags = 1
data = length 3, hash FFFE9730
data = length 3, hash FFFED751
sample 5:
time = 2276
time = 256
flags = 1
data = length 3, hash FFFED733
sample 6:
time = 4384
flags = 1
data = length 3, hash FFFECFEF
sample 7:
time = 4384
flags = 1
data = length 3, hash FFFECF7F
sample 8:
time = 4384
flags = 1
data = length 3, hash FFFED751
sample 9:
time = 6492
flags = 1
data = length 3, hash FFFED312
sample 10:
time = 6522
flags = 1
data = length 3, hash FFFE9730
sample 11:
time = 6650
flags = 1
data = length 3, hash FFFED733
sample 12:
time = 8758
flags = 1
data = length 3, hash FFFECFEF
sample 13:
time = 8758
flags = 1
data = length 3, hash FFFECF7F
sample 14:
time = 8758
time = 256
flags = 1
data = length 3, hash FFFED839
sample 15:
time = 10873
flags = 1
data = length 3, hash FFFED4E3
sample 16:
time = 10918
flags = 1
data = length 3, hash FFFE9730
sample 17:
time = 11046
sample 7:
time = 384
flags = 1
data = length 3, hash FFFED80C
sample 18:
time = 13161
flags = 1
data = length 3, hash FFFECFEF
sample 19:
time = 13161
flags = 1
data = length 3, hash FFFECF7F
sample 20:
time = 13161
sample 8:
time = 384
flags = 1
data = length 3, hash FFFED83E
sample 21:
time = 15276
flags = 1
data = length 3, hash FFFED57E
sample 22:
time = 15326
flags = 1
data = length 3, hash FFFE9730
sample 23:
time = 15454
sample 9:
time = 512
flags = 1
data = length 3, hash FFFED80C
sample 24:
time = 17569
flags = 1
data = length 3, hash FFFECFEF
sample 25:
time = 17569
flags = 1
data = length 3, hash FFFECF7F
sample 26:
time = 17569
sample 10:
time = 512
flags = 1
data = length 3, hash FFFED877
sample 27:
time = 19686
flags = 1
data = length 3, hash FFFED4E3
sample 28:
time = 19731
flags = 1
data = length 3, hash FFFE9730
sample 29:
time = 19859
sample 11:
time = 640
flags = 1
data = length 3, hash FFFED84A
sample 30:
time = 21976
flags = 1
data = length 3, hash FFFECFEF
sample 31:
time = 21976
flags = 1
data = length 3, hash FFFECF7F
sample 32:
time = 21976
sample 12:
time = 640
flags = 1
data = length 3, hash FFFED87C
sample 33:
time = 24093
flags = 1
data = length 3, hash FFFED57E
sample 34:
time = 24143
flags = 1
data = length 3, hash FFFE9730
sample 35:
time = 24271
sample 13:
time = 768
flags = 1
data = length 3, hash FFFED84A
sample 36:
time = 26388
flags = 1
data = length 3, hash FFFECFEF
sample 37:
time = 26388
flags = 1
data = length 3, hash FFFECF7F
sample 38:
time = 26388
sample 14:
time = 768
flags = 1
data = length 3, hash FFFED82F
sample 39:
time = 28503
flags = 1
data = length 3, hash FFFED3AE
sample 40:
time = 28538
flags = 1
data = length 3, hash FFFE9AF1
sample 41:
time = 28794
sample 15:
time = 1024
flags = 1
data = length 3, hash FFFED80C
sample 42:
time = 30909
flags = 1
data = length 3, hash FFFECFEF
sample 43:
time = 30909
flags = 1
data = length 3, hash FFFECF7F
sample 44:
time = 30909
sample 16:
time = 1024
flags = 1
data = length 3, hash FFFED800
sample 45:
time = 33022
flags = 1
data = length 3, hash FFFED57E
sample 46:
time = 33072
flags = 1
data = length 3, hash FFFE9730
sample 47:
time = 33200
sample 17:
time = 1152
flags = 1
data = length 3, hash FFFED7CE
sample 48:
time = 35313
flags = 1
data = length 3, hash FFFECFEF
sample 49:
time = 35313
flags = 1
data = length 3, hash FFFECF7F
sample 50:
time = 35313
sample 18:
time = 1152
flags = 1
data = length 3, hash FFFED7FB
sample 51:
time = 37426
flags = 1
data = length 3, hash FFFED4E3
sample 52:
time = 37471
flags = 1
data = length 3, hash FFFE9730
sample 53:
time = 37599
sample 19:
time = 1280
flags = 1
data = length 3, hash FFFED7CE
sample 54:
time = 39712
flags = 1
data = length 3, hash FFFECFEF
sample 55:
time = 39712
flags = 1
data = length 3, hash FFFECF7F
sample 56:
time = 39712
sample 20:
time = 1280
flags = 1
data = length 3, hash FFFED7E1
sample 57:
time = 41824
flags = 1
data = length 3, hash FFFED63D
sample 58:
time = 41874
flags = 1
data = length 3, hash FFFED73F
sample 59:
time = 41938
sample 21:
time = 1344
flags = 1
data = length 3, hash FFFED7AF
sample 60:
time = 44050
flags = 1
data = length 3, hash FFFED02F
sample 61:
time = 44050
flags = 1
data = length 3, hash FFFED73F
sample 62:
time = 44114
sample 22:
time = 1408
flags = 1
data = length 3, hash FFFED7D7
sample 63:
time = 46226
flags = 1
data = length 3, hash FFFED507
sample 64:
time = 46266
flags = 1
data = length 3, hash FFFED73F
sample 65:
time = 46330
sample 23:
time = 1472
flags = 1
data = length 3, hash FFFED7AF
sample 66:
time = 48442
flags = 1
data = length 3, hash FFFED02F
sample 67:
time = 48442
flags = 1
data = length 3, hash FFFED73F
sample 68:
time = 48506
sample 24:
time = 1536
flags = 1
data = length 3, hash FFFED79E
sample 69:
time = 50616
flags = 1
data = length 3, hash FFFED5A2
sample 70:
time = 50661
flags = 1
data = length 3, hash FFFED73F
sample 71:
time = 50725
sample 25:
time = 1600
flags = 1
data = length 3, hash FFFED771
sample 72:
time = 52835
flags = 1
data = length 3, hash FFFED02F
sample 73:
time = 52835
flags = 1
data = length 3, hash FFFED73F
sample 74:
time = 52899
sample 26:
time = 1664
flags = 1
data = length 3, hash FFFED7A3
sample 75:
time = 55009
flags = 1
data = length 3, hash FFFED63D
sample 76:
time = 55059
flags = 1
data = length 3, hash FFFED73F
sample 77:
time = 55123
sample 27:
time = 1728
flags = 1
data = length 3, hash FFFED771
sample 78:
time = 57233
flags = 1
data = length 3, hash FFFED02F
sample 79:
time = 57233
flags = 1
data = length 3, hash FFFED73F
sample 80:
time = 57297
sample 28:
time = 1792
flags = 1
data = length 3, hash FFFED751
sample 81:
time = 59405
flags = 1
data = length 3, hash FFFED313
sample 82:
time = 59435
flags = 1
data = length 3, hash FFFE9AF1
sample 83:
time = 59691
sample 29:
time = 2048
flags = 1
data = length 3, hash FFFED733
sample 84:
time = 61799
flags = 1
data = length 3, hash FFFECFEF
sample 85:
time = 61799
flags = 1
data = length 3, hash FFFECFEE
tracksEnded = true

View File

@ -4,8 +4,8 @@ seekMap:
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
total output bytes = 264
sample count = 86
total output bytes = 96
sample count = 30
format 0:
sampleMimeType = audio/midi
sample 0:
@ -21,335 +21,111 @@ track 0:
flags = 1
data = length 3, hash FFFED75B
sample 3:
time = 2108
time = 128
flags = 1
data = length 3, hash FFFED448
data = length 3, hash FFFED733
sample 4:
time = 2148
time = 128
flags = 1
data = length 3, hash FFFE9730
data = length 3, hash FFFED751
sample 5:
time = 2276
time = 256
flags = 1
data = length 3, hash FFFED733
sample 6:
time = 4384
flags = 1
data = length 3, hash FFFECFEF
sample 7:
time = 4384
flags = 1
data = length 3, hash FFFECF7F
sample 8:
time = 4384
flags = 1
data = length 3, hash FFFED751
sample 9:
time = 6492
flags = 1
data = length 3, hash FFFED312
sample 10:
time = 6522
flags = 1
data = length 3, hash FFFE9730
sample 11:
time = 6650
flags = 1
data = length 3, hash FFFED733
sample 12:
time = 8758
flags = 1
data = length 3, hash FFFECFEF
sample 13:
time = 8758
flags = 1
data = length 3, hash FFFECF7F
sample 14:
time = 8758
time = 256
flags = 1
data = length 3, hash FFFED839
sample 15:
time = 10873
flags = 1
data = length 3, hash FFFED4E3
sample 16:
time = 10918
flags = 1
data = length 3, hash FFFE9730
sample 17:
time = 11046
sample 7:
time = 384
flags = 1
data = length 3, hash FFFED80C
sample 18:
time = 13161
flags = 1
data = length 3, hash FFFECFEF
sample 19:
time = 13161
flags = 1
data = length 3, hash FFFECF7F
sample 20:
time = 13161
sample 8:
time = 384
flags = 1
data = length 3, hash FFFED83E
sample 21:
time = 15276
flags = 1
data = length 3, hash FFFED57E
sample 22:
time = 15326
flags = 1
data = length 3, hash FFFE9730
sample 23:
time = 15454
sample 9:
time = 512
flags = 1
data = length 3, hash FFFED80C
sample 24:
time = 17569
flags = 1
data = length 3, hash FFFECFEF
sample 25:
time = 17569
flags = 1
data = length 3, hash FFFECF7F
sample 26:
time = 17569
sample 10:
time = 512
flags = 1
data = length 3, hash FFFED877
sample 27:
time = 19686
flags = 1
data = length 3, hash FFFED4E3
sample 28:
time = 19731
flags = 1
data = length 3, hash FFFE9730
sample 29:
time = 19859
sample 11:
time = 640
flags = 1
data = length 3, hash FFFED84A
sample 30:
time = 21976
flags = 1
data = length 3, hash FFFECFEF
sample 31:
time = 21976
flags = 1
data = length 3, hash FFFECF7F
sample 32:
time = 21976
sample 12:
time = 640
flags = 1
data = length 3, hash FFFED87C
sample 33:
time = 24093
flags = 1
data = length 3, hash FFFED57E
sample 34:
time = 24143
flags = 1
data = length 3, hash FFFE9730
sample 35:
time = 24271
sample 13:
time = 768
flags = 1
data = length 3, hash FFFED84A
sample 36:
time = 26388
flags = 1
data = length 3, hash FFFECFEF
sample 37:
time = 26388
flags = 1
data = length 3, hash FFFECF7F
sample 38:
time = 26388
sample 14:
time = 768
flags = 1
data = length 3, hash FFFED82F
sample 39:
time = 28503
flags = 1
data = length 3, hash FFFED3AE
sample 40:
time = 28538
flags = 1
data = length 3, hash FFFE9AF1
sample 41:
time = 28794
sample 15:
time = 1024
flags = 1
data = length 3, hash FFFED80C
sample 42:
time = 30909
flags = 1
data = length 3, hash FFFECFEF
sample 43:
time = 30909
flags = 1
data = length 3, hash FFFECF7F
sample 44:
time = 30909
sample 16:
time = 1024
flags = 1
data = length 3, hash FFFED800
sample 45:
time = 33022
flags = 1
data = length 3, hash FFFED57E
sample 46:
time = 33072
flags = 1
data = length 3, hash FFFE9730
sample 47:
time = 33200
sample 17:
time = 1152
flags = 1
data = length 3, hash FFFED7CE
sample 48:
time = 35313
flags = 1
data = length 3, hash FFFECFEF
sample 49:
time = 35313
flags = 1
data = length 3, hash FFFECF7F
sample 50:
time = 35313
sample 18:
time = 1152
flags = 1
data = length 3, hash FFFED7FB
sample 51:
time = 37426
flags = 1
data = length 3, hash FFFED4E3
sample 52:
time = 37471
flags = 1
data = length 3, hash FFFE9730
sample 53:
time = 37599
sample 19:
time = 1280
flags = 1
data = length 3, hash FFFED7CE
sample 54:
time = 39712
flags = 1
data = length 3, hash FFFECFEF
sample 55:
time = 39712
flags = 1
data = length 3, hash FFFECF7F
sample 56:
time = 39712
sample 20:
time = 1280
flags = 1
data = length 3, hash FFFED7E1
sample 57:
time = 41824
flags = 1
data = length 3, hash FFFED63D
sample 58:
time = 41874
flags = 1
data = length 3, hash FFFED73F
sample 59:
time = 41938
sample 21:
time = 1344
flags = 1
data = length 3, hash FFFED7AF
sample 60:
time = 44050
flags = 1
data = length 3, hash FFFED02F
sample 61:
time = 44050
flags = 1
data = length 3, hash FFFED73F
sample 62:
time = 44114
sample 22:
time = 1408
flags = 1
data = length 3, hash FFFED7D7
sample 63:
time = 46226
flags = 1
data = length 3, hash FFFED507
sample 64:
time = 46266
flags = 1
data = length 3, hash FFFED73F
sample 65:
time = 46330
sample 23:
time = 1472
flags = 1
data = length 3, hash FFFED7AF
sample 66:
time = 48442
flags = 1
data = length 3, hash FFFED02F
sample 67:
time = 48442
flags = 1
data = length 3, hash FFFED73F
sample 68:
time = 48506
sample 24:
time = 1536
flags = 1
data = length 3, hash FFFED79E
sample 69:
time = 50616
flags = 1
data = length 3, hash FFFED5A2
sample 70:
time = 50661
flags = 1
data = length 3, hash FFFED73F
sample 71:
time = 50725
sample 25:
time = 1600
flags = 1
data = length 3, hash FFFED771
sample 72:
time = 52835
flags = 1
data = length 3, hash FFFED02F
sample 73:
time = 52835
flags = 1
data = length 3, hash FFFED73F
sample 74:
time = 52899
sample 26:
time = 1664
flags = 1
data = length 3, hash FFFED7A3
sample 75:
time = 55009
flags = 1
data = length 3, hash FFFED63D
sample 76:
time = 55059
flags = 1
data = length 3, hash FFFED73F
sample 77:
time = 55123
sample 27:
time = 1728
flags = 1
data = length 3, hash FFFED771
sample 78:
time = 57233
flags = 1
data = length 3, hash FFFED02F
sample 79:
time = 57233
flags = 1
data = length 3, hash FFFED73F
sample 80:
time = 57297
sample 28:
time = 1792
flags = 1
data = length 3, hash FFFED751
sample 81:
time = 59405
flags = 1
data = length 3, hash FFFED313
sample 82:
time = 59435
flags = 1
data = length 3, hash FFFE9AF1
sample 83:
time = 59691
sample 29:
time = 2048
flags = 1
data = length 3, hash FFFED733
sample 84:
time = 61799
flags = 1
data = length 3, hash FFFECFEF
sample 85:
time = 61799
flags = 1
data = length 3, hash FFFECFEE
tracksEnded = true