MP4: Parse alternate_group and expose it in Format.metadata

Issue: androidx/media#2242
PiperOrigin-RevId: 740794206
This commit is contained in:
ibaker 2025-03-26 09:19:17 -07:00 committed by Copybara-Service
parent 96bb777484
commit 0d60c5bf25
237 changed files with 401 additions and 191 deletions

View File

@ -11,6 +11,9 @@
variable bitrate metadata when falling back to constant bitrate seeking
due to `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)`
([#2194](https://github.com/androidx/media/issues/2194)).
* MP4: Parse `alternate_group` from the `tkhd` box and expose it as an
`Mp4AlternateGroupData` entry in each track's `Format.metadata`
([#2242](https://github.com/androidx/media/issues/2242)).
* DataSource:
* Audio:
* Allow constant power upmixing/downmixing in DefaultAudioMixer.

View File

@ -0,0 +1,54 @@
/*
* Copyright 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.media3.container;
import androidx.annotation.Nullable;
import androidx.media3.common.Metadata;
import androidx.media3.common.util.UnstableApi;
/** Stores MP4 {@code alternate_group} info parsed from a {@code tkhd} box. */
@UnstableApi
public final class Mp4AlternateGroupData implements Metadata.Entry {
public final int alternateGroup;
public Mp4AlternateGroupData(int alternateGroup) {
this.alternateGroup = alternateGroup;
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Mp4AlternateGroupData)) {
return false;
}
Mp4AlternateGroupData other = (Mp4AlternateGroupData) obj;
return alternateGroup == other.alternateGroup;
}
@Override
public int hashCode() {
return alternateGroup;
}
@Override
public String toString() {
return "Mp4AlternateGroup: " + alternateGroup;
}
}

View File

@ -37,6 +37,7 @@ import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
import androidx.media3.container.DolbyVisionConfig;
import androidx.media3.container.Mp4AlternateGroupData;
import androidx.media3.container.Mp4Box;
import androidx.media3.container.Mp4Box.LeafBox;
import androidx.media3.container.Mp4LocationData;
@ -380,21 +381,38 @@ public final class BoxParser {
}
}
}
return stsdData.format == null
? null
: new Track(
tkhdData.id,
trackType,
mdhdData.timescale,
movieTimescale,
durationUs,
mdhdData.mediaDurationUs,
stsdData.format,
stsdData.requiredSampleTransformation,
stsdData.trackEncryptionBoxes,
stsdData.nalUnitLengthFieldLength,
editListDurations,
editListMediaTimes);
if (stsdData.format == null) {
return null;
}
Format format;
if (tkhdData.alternateGroup != 0) {
Mp4AlternateGroupData alternateGroupEntry =
new Mp4AlternateGroupData(tkhdData.alternateGroup);
format =
stsdData
.format
.buildUpon()
.setMetadata(
stsdData.format.metadata != null
? stsdData.format.metadata.copyWithAppendedEntries(alternateGroupEntry)
: new Metadata(alternateGroupEntry))
.build();
} else {
format = stsdData.format;
}
return new Track(
tkhdData.id,
trackType,
mdhdData.timescale,
movieTimescale,
durationUs,
mdhdData.mediaDurationUs,
format,
stsdData.requiredSampleTransformation,
stsdData.trackEncryptionBoxes,
stsdData.nalUnitLengthFieldLength,
editListDurations,
editListMediaTimes);
}
/**
@ -913,7 +931,9 @@ public final class BoxParser {
}
}
tkhd.skipBytes(16);
tkhd.skipBytes(10);
int alternateGroup = tkhd.readUnsignedShort();
tkhd.skipBytes(4);
int a00 = tkhd.readInt();
int a01 = tkhd.readInt();
tkhd.skipBytes(4);
@ -933,7 +953,7 @@ public final class BoxParser {
rotationDegrees = 0;
}
return new TkhdData(trackId, duration, rotationDegrees);
return new TkhdData(trackId, duration, alternateGroup, rotationDegrees);
}
/**
@ -2543,11 +2563,13 @@ public final class BoxParser {
private final int id;
private final long duration;
private final int alternateGroup;
private final int rotationDegrees;
public TkhdData(int id, long duration, int rotationDegrees) {
public TkhdData(int id, long duration, int alternateGroup, int rotationDegrees) {
this.id = id;
this.duration = duration;
this.alternateGroup = alternateGroup;
this.rotationDegrees = rotationDegrees;
}
}

View File

@ -84,13 +84,22 @@ import com.google.common.collect.ImmutableList;
private MetadataUtil() {}
/** Updates a {@link Format.Builder} to include metadata from the provided sources. */
/**
* Updates a {@link Format.Builder} to include metadata from the provided sources.
*
* @param trackType The {@link C.TrackType} of the track.
* @param mdtaMetadata The {@link Metadata} from the {@code mdta} box if present, otherwise null.
* @param formatBuilder A {@link Format.Builder} to append the metadata too.
* @param existingMetadata The {@link Format#metadata} from {@code formatBuilder}.
* @param additionalMetadata Additional metadata to append.
*/
public static void setFormatMetadata(
int trackType,
@C.TrackType int trackType,
@Nullable Metadata mdtaMetadata,
Format.Builder formatBuilder,
@Nullable Metadata existingMetadata,
@NullableType Metadata... additionalMetadata) {
Metadata formatMetadata = new Metadata();
Metadata formatMetadata = existingMetadata != null ? existingMetadata : new Metadata();
if (mdtaMetadata != null) {
for (int i = 0; i < mdtaMetadata.length(); i++) {

View File

@ -775,6 +775,7 @@ public final class Mp4Extractor implements Extractor, SeekMap {
track.type,
mdtaMetadata,
formatBuilder,
track.format.metadata,
slowMotionMetadataEntries.isEmpty() ? null : new Metadata(slowMotionMetadataEntries),
udtaMetadata,
mvhdMetadata);

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3790610215, modification time=3790610215, timescale=30000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -162,7 +162,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
metadata = entries=[Mp4AlternateGroup: 1, TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 96000
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 192000
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 256000
flags = 536870913

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 96000
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 192000
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 256000
flags = 536870913

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -20,7 +20,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3664419241, modification time=3664419241, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 96000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 192000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 256000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 96000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 192000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 256000
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -19,6 +19,7 @@ track 0:
channelCount = 6
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3661132875, modification time=3661132875, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 240000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 480000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 720000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 240000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 480000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 720000
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 2
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 426666
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 426666
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 426666
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 426666
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -18,7 +18,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
metadata = entries=[Mp4AlternateGroup: 2, Mp4Timestamp: creation time=3785281997, modification time=3785281997, timescale=600]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 426666
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 426666
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 426666
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 426666
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -17,6 +17,7 @@ track 0:
channelCount = 21
sampleRate = 48000
language = und
metadata = entries=[Mp4AlternateGroup: 2]
sample 0:
time = 0
flags = 1

View File

@ -153,6 +153,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -153,6 +153,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -153,6 +153,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -153,6 +153,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

View File

@ -161,6 +161,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[Mp4AlternateGroup: 1]
initializationData:
data = length 5, hash 2B7623A
sample 0:

Some files were not shown because too many files have changed in this diff Show More