mediabunny 1.24.7 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles/mediabunny.cjs +132 -12
- package/dist/bundles/mediabunny.min.cjs +7 -7
- package/dist/bundles/mediabunny.min.mjs +7 -7
- package/dist/bundles/mediabunny.mjs +132 -12
- package/dist/mediabunny.d.ts +30 -0
- package/dist/modules/src/adts/adts-demuxer.d.ts.map +1 -1
- package/dist/modules/src/adts/adts-demuxer.js +6 -0
- package/dist/modules/src/codec-data.d.ts +1 -1
- package/dist/modules/src/codec-data.d.ts.map +1 -1
- package/dist/modules/src/conversion.d.ts +1 -1
- package/dist/modules/src/conversion.d.ts.map +1 -1
- package/dist/modules/src/conversion.js +5 -3
- package/dist/modules/src/demuxer.d.ts +1 -1
- package/dist/modules/src/demuxer.d.ts.map +1 -1
- package/dist/modules/src/flac/flac-demuxer.d.ts +1 -1
- package/dist/modules/src/flac/flac-demuxer.d.ts.map +1 -1
- package/dist/modules/src/flac/flac-demuxer.js +6 -0
- package/dist/modules/src/flac/flac-muxer.d.ts +1 -1
- package/dist/modules/src/flac/flac-muxer.d.ts.map +1 -1
- package/dist/modules/src/flac/flac-muxer.js +1 -1
- package/dist/modules/src/id3.d.ts +1 -1
- package/dist/modules/src/id3.d.ts.map +1 -1
- package/dist/modules/src/index.d.ts +1 -1
- package/dist/modules/src/index.d.ts.map +1 -1
- package/dist/modules/src/index.js +1 -1
- package/dist/modules/src/input-track.d.ts +4 -0
- package/dist/modules/src/input-track.d.ts.map +1 -1
- package/dist/modules/src/input-track.js +4 -0
- package/dist/modules/src/input.d.ts +1 -1
- package/dist/modules/src/isobmff/isobmff-boxes.d.ts.map +1 -1
- package/dist/modules/src/isobmff/isobmff-boxes.js +6 -2
- package/dist/modules/src/isobmff/isobmff-demuxer.d.ts +2 -1
- package/dist/modules/src/isobmff/isobmff-demuxer.d.ts.map +1 -1
- package/dist/modules/src/isobmff/isobmff-demuxer.js +13 -5
- package/dist/modules/src/isobmff/isobmff-reader.d.ts +1 -1
- package/dist/modules/src/isobmff/isobmff-reader.d.ts.map +1 -1
- package/dist/modules/src/isobmff/isobmff-reader.js +1 -1
- package/dist/modules/src/matroska/ebml.d.ts +4 -0
- package/dist/modules/src/matroska/ebml.d.ts.map +1 -1
- package/dist/modules/src/matroska/ebml.js +4 -0
- package/dist/modules/src/matroska/matroska-demuxer.d.ts +2 -2
- package/dist/modules/src/matroska/matroska-demuxer.d.ts.map +1 -1
- package/dist/modules/src/matroska/matroska-demuxer.js +49 -4
- package/dist/modules/src/matroska/matroska-muxer.d.ts.map +1 -1
- package/dist/modules/src/matroska/matroska-muxer.js +19 -1
- package/dist/modules/src/{tags.d.ts → metadata.d.ts} +28 -1
- package/dist/modules/src/metadata.d.ts.map +1 -0
- package/dist/modules/src/{tags.js → metadata.js} +31 -0
- package/dist/modules/src/mp3/mp3-demuxer.d.ts +1 -1
- package/dist/modules/src/mp3/mp3-demuxer.d.ts.map +1 -1
- package/dist/modules/src/mp3/mp3-demuxer.js +6 -0
- package/dist/modules/src/mp3/mp3-muxer.js +1 -1
- package/dist/modules/src/ogg/ogg-demuxer.d.ts +1 -1
- package/dist/modules/src/ogg/ogg-demuxer.d.ts.map +1 -1
- package/dist/modules/src/ogg/ogg-demuxer.js +6 -0
- package/dist/modules/src/output.d.ts +3 -1
- package/dist/modules/src/output.d.ts.map +1 -1
- package/dist/modules/src/output.js +4 -1
- package/dist/modules/src/tsconfig.tsbuildinfo +1 -1
- package/dist/modules/src/wave/wave-demuxer.d.ts +1 -1
- package/dist/modules/src/wave/wave-demuxer.d.ts.map +1 -1
- package/dist/modules/src/wave/wave-demuxer.js +6 -0
- package/dist/modules/src/wave/wave-muxer.js +1 -1
- package/package.json +1 -1
- package/src/adts/adts-demuxer.ts +7 -0
- package/src/codec-data.ts +1 -1
- package/src/conversion.ts +5 -3
- package/src/demuxer.ts +1 -1
- package/src/flac/flac-demuxer.ts +7 -1
- package/src/flac/flac-muxer.ts +1 -1
- package/src/id3.ts +1 -1
- package/src/index.ts +2 -1
- package/src/input-track.ts +7 -0
- package/src/isobmff/isobmff-boxes.ts +7 -2
- package/src/isobmff/isobmff-demuxer.ts +16 -5
- package/src/isobmff/isobmff-reader.ts +1 -1
- package/src/matroska/ebml.ts +4 -0
- package/src/matroska/matroska-demuxer.ts +41 -5
- package/src/matroska/matroska-muxer.ts +19 -1
- package/src/{tags.ts → metadata.ts} +59 -0
- package/src/mp3/mp3-demuxer.ts +7 -1
- package/src/mp3/mp3-muxer.ts +1 -1
- package/src/ogg/ogg-demuxer.ts +7 -1
- package/src/output.ts +6 -1
- package/src/wave/wave-demuxer.ts +7 -1
- package/src/wave/wave-muxer.ts +1 -1
- package/dist/modules/src/tags.d.ts.map +0 -1
|
@@ -723,7 +723,7 @@ var Mediabunny = (() => {
|
|
|
723
723
|
return typeof x === "number" && !Number.isNaN(x);
|
|
724
724
|
};
|
|
725
725
|
|
|
726
|
-
// src/
|
|
726
|
+
// src/metadata.ts
|
|
727
727
|
var RichImageData = class {
|
|
728
728
|
/** Creates a new {@link RichImageData}. */
|
|
729
729
|
constructor(data, mimeType) {
|
|
@@ -836,6 +836,37 @@ var Mediabunny = (() => {
|
|
|
836
836
|
var metadataTagsAreEmpty = (tags) => {
|
|
837
837
|
return tags.title === void 0 && tags.description === void 0 && tags.artist === void 0 && tags.album === void 0 && tags.albumArtist === void 0 && tags.trackNumber === void 0 && tags.tracksTotal === void 0 && tags.discNumber === void 0 && tags.discsTotal === void 0 && tags.genre === void 0 && tags.date === void 0 && tags.lyrics === void 0 && (!tags.images || tags.images.length === 0) && tags.comment === void 0 && (tags.raw === void 0 || Object.keys(tags.raw).length === 0);
|
|
838
838
|
};
|
|
839
|
+
var DEFAULT_TRACK_DISPOSITION = {
|
|
840
|
+
default: true,
|
|
841
|
+
forced: false,
|
|
842
|
+
original: false,
|
|
843
|
+
commentary: false,
|
|
844
|
+
hearingImpaired: false,
|
|
845
|
+
visuallyImpaired: false
|
|
846
|
+
};
|
|
847
|
+
var validateTrackDisposition = (disposition) => {
|
|
848
|
+
if (!disposition || typeof disposition !== "object") {
|
|
849
|
+
throw new TypeError("disposition must be an object.");
|
|
850
|
+
}
|
|
851
|
+
if (disposition.default !== void 0 && typeof disposition.default !== "boolean") {
|
|
852
|
+
throw new TypeError("disposition.default must be a boolean.");
|
|
853
|
+
}
|
|
854
|
+
if (disposition.forced !== void 0 && typeof disposition.forced !== "boolean") {
|
|
855
|
+
throw new TypeError("disposition.forced must be a boolean.");
|
|
856
|
+
}
|
|
857
|
+
if (disposition.original !== void 0 && typeof disposition.original !== "boolean") {
|
|
858
|
+
throw new TypeError("disposition.original must be a boolean.");
|
|
859
|
+
}
|
|
860
|
+
if (disposition.commentary !== void 0 && typeof disposition.commentary !== "boolean") {
|
|
861
|
+
throw new TypeError("disposition.commentary must be a boolean.");
|
|
862
|
+
}
|
|
863
|
+
if (disposition.hearingImpaired !== void 0 && typeof disposition.hearingImpaired !== "boolean") {
|
|
864
|
+
throw new TypeError("disposition.hearingImpaired must be a boolean.");
|
|
865
|
+
}
|
|
866
|
+
if (disposition.visuallyImpaired !== void 0 && typeof disposition.visuallyImpaired !== "boolean") {
|
|
867
|
+
throw new TypeError("disposition.visuallyImpaired must be a boolean.");
|
|
868
|
+
}
|
|
869
|
+
};
|
|
839
870
|
|
|
840
871
|
// src/codec.ts
|
|
841
872
|
var VIDEO_CODECS = [
|
|
@@ -6254,6 +6285,10 @@ var Mediabunny = (() => {
|
|
|
6254
6285
|
get timeResolution() {
|
|
6255
6286
|
return this._backing.getTimeResolution();
|
|
6256
6287
|
}
|
|
6288
|
+
/** The track's disposition, i.e. information about its intended usage. */
|
|
6289
|
+
get disposition() {
|
|
6290
|
+
return this._backing.getDisposition();
|
|
6291
|
+
}
|
|
6257
6292
|
/**
|
|
6258
6293
|
* Returns the start timestamp of the first packet of this track, in seconds. While often near zero, this value
|
|
6259
6294
|
* may be positive or even negative. A negative starting timestamp means the track's timing has been offset. Samples
|
|
@@ -6608,6 +6643,7 @@ var Mediabunny = (() => {
|
|
|
6608
6643
|
if (!moovSlice) break;
|
|
6609
6644
|
this.moovSlice = moovSlice;
|
|
6610
6645
|
this.readContiguousBoxes(this.moovSlice);
|
|
6646
|
+
this.tracks.sort((a, b) => Number(b.disposition.default) - Number(a.disposition.default));
|
|
6611
6647
|
for (const track of this.tracks) {
|
|
6612
6648
|
const previousSegmentDurationsInSeconds = track.editListPreviousSegmentDurations / this.movieTimescale;
|
|
6613
6649
|
track.editListOffset -= Math.round(previousSegmentDurationsInSeconds * track.timescale);
|
|
@@ -6854,6 +6890,9 @@ var Mediabunny = (() => {
|
|
|
6854
6890
|
id: -1,
|
|
6855
6891
|
demuxer: this,
|
|
6856
6892
|
inputTrack: null,
|
|
6893
|
+
disposition: {
|
|
6894
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
6895
|
+
},
|
|
6857
6896
|
info: null,
|
|
6858
6897
|
timescale: -1,
|
|
6859
6898
|
durationInMovieTimescale: -1,
|
|
@@ -6895,10 +6934,8 @@ var Mediabunny = (() => {
|
|
|
6895
6934
|
}
|
|
6896
6935
|
const version = readU8(slice);
|
|
6897
6936
|
const flags = readU24Be(slice);
|
|
6898
|
-
const trackEnabled = (flags & 1)
|
|
6899
|
-
|
|
6900
|
-
break;
|
|
6901
|
-
}
|
|
6937
|
+
const trackEnabled = !!(flags & 1);
|
|
6938
|
+
track.disposition.default = trackEnabled;
|
|
6902
6939
|
if (version === 0) {
|
|
6903
6940
|
slice.skip(8);
|
|
6904
6941
|
track.id = readU32Be(slice);
|
|
@@ -8374,6 +8411,9 @@ var Mediabunny = (() => {
|
|
|
8374
8411
|
getTimeResolution() {
|
|
8375
8412
|
return this.internalTrack.timescale;
|
|
8376
8413
|
}
|
|
8414
|
+
getDisposition() {
|
|
8415
|
+
return this.internalTrack.disposition;
|
|
8416
|
+
}
|
|
8377
8417
|
async computeDuration() {
|
|
8378
8418
|
const lastPacket = await this.getPacket(Infinity, { metadataOnly: true });
|
|
8379
8419
|
return (lastPacket?.timestamp ?? 0) + (lastPacket?.duration ?? 0);
|
|
@@ -9597,7 +9637,7 @@ var Mediabunny = (() => {
|
|
|
9597
9637
|
this.currentSegment.timestampScale = 1e6;
|
|
9598
9638
|
this.currentSegment.timestampFactor = 1e9 / 1e6;
|
|
9599
9639
|
}
|
|
9600
|
-
this.currentSegment.tracks.sort((a, b) => Number(b.
|
|
9640
|
+
this.currentSegment.tracks.sort((a, b) => Number(b.disposition.default) - Number(a.disposition.default));
|
|
9601
9641
|
const idToTrack = new Map(this.currentSegment.tracks.map((x) => [x.id, x]));
|
|
9602
9642
|
for (const cuePoint of this.currentSegment.cuePoints) {
|
|
9603
9643
|
const track = idToTrack.get(cuePoint.trackId);
|
|
@@ -9944,7 +9984,9 @@ var Mediabunny = (() => {
|
|
|
9944
9984
|
demuxer: this,
|
|
9945
9985
|
clusterPositionCache: [],
|
|
9946
9986
|
cuePoints: [],
|
|
9947
|
-
|
|
9987
|
+
disposition: {
|
|
9988
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
9989
|
+
},
|
|
9948
9990
|
inputTrack: null,
|
|
9949
9991
|
codecId: null,
|
|
9950
9992
|
codecPrivate: null,
|
|
@@ -10088,7 +10130,42 @@ var Mediabunny = (() => {
|
|
|
10088
10130
|
case 136 /* FlagDefault */:
|
|
10089
10131
|
{
|
|
10090
10132
|
if (!this.currentTrack) break;
|
|
10091
|
-
this.currentTrack.
|
|
10133
|
+
this.currentTrack.disposition.default = !!readUnsignedInt(slice, size);
|
|
10134
|
+
}
|
|
10135
|
+
;
|
|
10136
|
+
break;
|
|
10137
|
+
case 21930 /* FlagForced */:
|
|
10138
|
+
{
|
|
10139
|
+
if (!this.currentTrack) break;
|
|
10140
|
+
this.currentTrack.disposition.forced = !!readUnsignedInt(slice, size);
|
|
10141
|
+
}
|
|
10142
|
+
;
|
|
10143
|
+
break;
|
|
10144
|
+
case 21934 /* FlagOriginal */:
|
|
10145
|
+
{
|
|
10146
|
+
if (!this.currentTrack) break;
|
|
10147
|
+
this.currentTrack.disposition.original = !!readUnsignedInt(slice, size);
|
|
10148
|
+
}
|
|
10149
|
+
;
|
|
10150
|
+
break;
|
|
10151
|
+
case 21931 /* FlagHearingImpaired */:
|
|
10152
|
+
{
|
|
10153
|
+
if (!this.currentTrack) break;
|
|
10154
|
+
this.currentTrack.disposition.hearingImpaired = !!readUnsignedInt(slice, size);
|
|
10155
|
+
}
|
|
10156
|
+
;
|
|
10157
|
+
break;
|
|
10158
|
+
case 21932 /* FlagVisualImpaired */:
|
|
10159
|
+
{
|
|
10160
|
+
if (!this.currentTrack) break;
|
|
10161
|
+
this.currentTrack.disposition.visuallyImpaired = !!readUnsignedInt(slice, size);
|
|
10162
|
+
}
|
|
10163
|
+
;
|
|
10164
|
+
break;
|
|
10165
|
+
case 21935 /* FlagCommentary */:
|
|
10166
|
+
{
|
|
10167
|
+
if (!this.currentTrack) break;
|
|
10168
|
+
this.currentTrack.disposition.commentary = !!readUnsignedInt(slice, size);
|
|
10092
10169
|
}
|
|
10093
10170
|
;
|
|
10094
10171
|
break;
|
|
@@ -10811,6 +10888,9 @@ var Mediabunny = (() => {
|
|
|
10811
10888
|
getTimeResolution() {
|
|
10812
10889
|
return this.internalTrack.segment.timestampFactor;
|
|
10813
10890
|
}
|
|
10891
|
+
getDisposition() {
|
|
10892
|
+
return this.internalTrack.disposition;
|
|
10893
|
+
}
|
|
10814
10894
|
async getFirstPacket(options) {
|
|
10815
10895
|
return this.performClusterLookup(
|
|
10816
10896
|
null,
|
|
@@ -12588,6 +12668,11 @@ var Mediabunny = (() => {
|
|
|
12588
12668
|
assert(this.demuxer.firstFrameHeader);
|
|
12589
12669
|
return this.demuxer.firstFrameHeader.sampleRate;
|
|
12590
12670
|
}
|
|
12671
|
+
getDisposition() {
|
|
12672
|
+
return {
|
|
12673
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
12674
|
+
};
|
|
12675
|
+
}
|
|
12591
12676
|
async getDecoderConfig() {
|
|
12592
12677
|
assert(this.demuxer.firstFrameHeader);
|
|
12593
12678
|
return {
|
|
@@ -13105,6 +13190,11 @@ var Mediabunny = (() => {
|
|
|
13105
13190
|
getLanguageCode() {
|
|
13106
13191
|
return UNDETERMINED_LANGUAGE;
|
|
13107
13192
|
}
|
|
13193
|
+
getDisposition() {
|
|
13194
|
+
return {
|
|
13195
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
13196
|
+
};
|
|
13197
|
+
}
|
|
13108
13198
|
async getFirstTimestamp() {
|
|
13109
13199
|
return 0;
|
|
13110
13200
|
}
|
|
@@ -13845,6 +13935,11 @@ var Mediabunny = (() => {
|
|
|
13845
13935
|
getLanguageCode() {
|
|
13846
13936
|
return UNDETERMINED_LANGUAGE;
|
|
13847
13937
|
}
|
|
13938
|
+
getDisposition() {
|
|
13939
|
+
return {
|
|
13940
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
13941
|
+
};
|
|
13942
|
+
}
|
|
13848
13943
|
async getFirstTimestamp() {
|
|
13849
13944
|
return 0;
|
|
13850
13945
|
}
|
|
@@ -14100,6 +14195,11 @@ var Mediabunny = (() => {
|
|
|
14100
14195
|
assert(sampleRate !== void 0);
|
|
14101
14196
|
return sampleRate;
|
|
14102
14197
|
}
|
|
14198
|
+
getDisposition() {
|
|
14199
|
+
return {
|
|
14200
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
14201
|
+
};
|
|
14202
|
+
}
|
|
14103
14203
|
async getDecoderConfig() {
|
|
14104
14204
|
assert(this.demuxer.firstFrameHeader);
|
|
14105
14205
|
const bytes2 = new Uint8Array(3);
|
|
@@ -14680,6 +14780,11 @@ var Mediabunny = (() => {
|
|
|
14680
14780
|
assert(this.demuxer.audioInfo);
|
|
14681
14781
|
return this.demuxer.audioInfo.sampleRate;
|
|
14682
14782
|
}
|
|
14783
|
+
getDisposition() {
|
|
14784
|
+
return {
|
|
14785
|
+
...DEFAULT_TRACK_DISPOSITION
|
|
14786
|
+
};
|
|
14787
|
+
}
|
|
14683
14788
|
async getFirstTimestamp() {
|
|
14684
14789
|
return 0;
|
|
14685
14790
|
}
|
|
@@ -17090,7 +17195,11 @@ var Mediabunny = (() => {
|
|
|
17090
17195
|
} else {
|
|
17091
17196
|
matrix = IDENTITY_MATRIX;
|
|
17092
17197
|
}
|
|
17093
|
-
|
|
17198
|
+
let flags = 2;
|
|
17199
|
+
if (trackData.track.metadata.disposition?.default !== false) {
|
|
17200
|
+
flags |= 1;
|
|
17201
|
+
}
|
|
17202
|
+
return fullBox("tkhd", +needsU64, flags, [
|
|
17094
17203
|
u32OrU64(creationTime),
|
|
17095
17204
|
// Creation time
|
|
17096
17205
|
u32OrU64(creationTime),
|
|
@@ -19802,6 +19911,12 @@ var Mediabunny = (() => {
|
|
|
19802
19911
|
{ id: 215 /* TrackNumber */, data: trackData.track.id },
|
|
19803
19912
|
{ id: 29637 /* TrackUID */, data: trackData.track.id },
|
|
19804
19913
|
{ id: 131 /* TrackType */, data: TRACK_TYPE_MAP[trackData.type] },
|
|
19914
|
+
trackData.track.metadata.disposition?.default === false ? { id: 136 /* FlagDefault */, data: 0 } : null,
|
|
19915
|
+
trackData.track.metadata.disposition?.forced ? { id: 21930 /* FlagForced */, data: 1 } : null,
|
|
19916
|
+
trackData.track.metadata.disposition?.hearingImpaired ? { id: 21931 /* FlagHearingImpaired */, data: 1 } : null,
|
|
19917
|
+
trackData.track.metadata.disposition?.visuallyImpaired ? { id: 21932 /* FlagVisualImpaired */, data: 1 } : null,
|
|
19918
|
+
trackData.track.metadata.disposition?.original ? { id: 21934 /* FlagOriginal */, data: 1 } : null,
|
|
19919
|
+
trackData.track.metadata.disposition?.commentary ? { id: 21935 /* FlagCommentary */, data: 1 } : null,
|
|
19805
19920
|
{ id: 156 /* FlagLacing */, data: 0 },
|
|
19806
19921
|
{ id: 2274716 /* Language */, data: trackData.track.metadata.languageCode ?? UNDETERMINED_LANGUAGE },
|
|
19807
19922
|
{ id: 134 /* CodecID */, data: codecId },
|
|
@@ -23823,6 +23938,9 @@ ${cue.notes ?? ""}`;
|
|
|
23823
23938
|
if (metadata.name !== void 0 && typeof metadata.name !== "string") {
|
|
23824
23939
|
throw new TypeError("metadata.name, when provided, must be a string.");
|
|
23825
23940
|
}
|
|
23941
|
+
if (metadata.disposition !== void 0) {
|
|
23942
|
+
validateTrackDisposition(metadata.disposition);
|
|
23943
|
+
}
|
|
23826
23944
|
if (metadata.maximumPacketCount !== void 0 && (!Number.isInteger(metadata.maximumPacketCount) || metadata.maximumPacketCount < 0)) {
|
|
23827
23945
|
throw new TypeError("metadata.maximumPacketCount, when provided, must be a non-negative integer.");
|
|
23828
23946
|
}
|
|
@@ -24730,9 +24848,10 @@ The @mediabunny/mp3-encoder extension package provides support for encoding MP3.
|
|
|
24730
24848
|
}
|
|
24731
24849
|
this.output.addVideoTrack(videoSource, {
|
|
24732
24850
|
frameRate: trackOptions.frameRate,
|
|
24733
|
-
//
|
|
24851
|
+
// TODO: This condition can be removed when all demuxers properly homogenize to BCP47 in v2
|
|
24734
24852
|
languageCode: isIso639Dash2LanguageCode(track.languageCode) ? track.languageCode : void 0,
|
|
24735
24853
|
name: track.name ?? void 0,
|
|
24854
|
+
disposition: track.disposition,
|
|
24736
24855
|
rotation: needsRerender ? 0 : totalRotation
|
|
24737
24856
|
// Rerendering will bake the rotation into the output
|
|
24738
24857
|
});
|
|
@@ -24896,9 +25015,10 @@ The @mediabunny/mp3-encoder extension package provides support for encoding MP3.
|
|
|
24896
25015
|
}
|
|
24897
25016
|
}
|
|
24898
25017
|
this.output.addAudioTrack(audioSource, {
|
|
24899
|
-
//
|
|
25018
|
+
// TODO: This condition can be removed when all demuxers properly homogenize to BCP47 in v2
|
|
24900
25019
|
languageCode: isIso639Dash2LanguageCode(track.languageCode) ? track.languageCode : void 0,
|
|
24901
|
-
name: track.name ?? void 0
|
|
25020
|
+
name: track.name ?? void 0,
|
|
25021
|
+
disposition: track.disposition
|
|
24902
25022
|
});
|
|
24903
25023
|
this._addedCounts.audio++;
|
|
24904
25024
|
this._totalTrackCount++;
|