diff --git a/libraries/common/src/main/java/androidx/media3/common/util/CodecSpecificDataUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/CodecSpecificDataUtil.java
index 44c42ff85e..f9a9881d84 100644
--- a/libraries/common/src/main/java/androidx/media3/common/util/CodecSpecificDataUtil.java
+++ b/libraries/common/src/main/java/androidx/media3/common/util/CodecSpecificDataUtil.java
@@ -137,6 +137,40 @@ public final class CodecSpecificDataUtil {
});
}
+ /**
+ * Returns initialization data for Dolby Vision according to Dolby
+ * Vision ISO MediaFormat (section 2.2) specification.
+ *
+ * @param profile The Dolby Vision codec profile.
+ * @param level The Dolby Vision codec level.
+ */
+ public static byte[] buildDolbyVisionInitializationData(int profile, int level) {
+ byte[] dolbyVisionCsd = new byte[24];
+ byte blCompatibilityId = 0x00;
+ // MD compression is not permitted for profile 7 and earlier. Only some devices
+ // support it from profile 8
+ byte mdCompression = 0x00;
+ if (profile == 8) {
+ blCompatibilityId = 0x04;
+ } else if (profile == 9) {
+ blCompatibilityId = 0x02;
+ mdCompression = 0x01;
+ }
+
+ dolbyVisionCsd[0] = 0x01; // dv_version_major
+ dolbyVisionCsd[1] = 0x00; // dv_version_minor
+ dolbyVisionCsd[2] = (byte) ((profile & 0x7f) << 1); // dv_profile
+ dolbyVisionCsd[2] = (byte) ((dolbyVisionCsd[2] | ((level >> 5) & 0x1)) & 0xff);
+ dolbyVisionCsd[3] = (byte) ((level & 0x1f) << 3); // dv_level
+ dolbyVisionCsd[3] = (byte) (dolbyVisionCsd[3] | (1 << 2)); // rpu_present_flag
+ dolbyVisionCsd[3] = (byte) (dolbyVisionCsd[3] | (0 << 1)); // el_present_flag
+ dolbyVisionCsd[3] = (byte) (dolbyVisionCsd[3] | 1); // bl_present_flag
+ dolbyVisionCsd[4] = (byte) (blCompatibilityId << 4); // dv_bl_signal_compatibility_id
+ dolbyVisionCsd[4] = (byte) (dolbyVisionCsd[4] | (mdCompression << 2)); // dv_md_compression
+ return dolbyVisionCsd;
+ }
+
/**
* Parses an MPEG-4 Visual configuration information, as defined in ISO/IEC14496-2.
*
@@ -266,6 +300,23 @@ public final class CodecSpecificDataUtil {
return Util.formatInvariant("s263.%d.%d", profile, level);
}
+ /**
+ * Builds a Dolby Vision codec string using profile and level.
+ *
+ *
Reference:
+ * href="https://professionalsupport.dolby.com/s/article/What-is-Dolby-Vision-Profile?language=en_US">
+ * Dolby Vision Profile and Level (section 2.3)
+ */
+ public static String buildDolbyVisionCodecString(int profile, int level) {
+ if (profile > 9) {
+ return Util.formatInvariant("dvh1.%02d.%02d", profile, level);
+ } else if (profile > 8) {
+ return Util.formatInvariant("dvav.%02d.%02d", profile, level);
+ } else {
+ return Util.formatInvariant("dvhe.%02d.%02d", profile, level);
+ }
+ }
+
/**
* Returns profile and level (as defined by {@link MediaCodecInfo.CodecProfileLevel})
* corresponding to the codec description string (as defined by RFC 6381) of the given format.
@@ -407,6 +458,83 @@ public final class CodecSpecificDataUtil {
return split;
}
+ /**
+ * Returns Dolby Vision level number corresponding to the level constant.
+ *
+ * @param levelConstant The Dolby Vision level constant.
+ * @return The Dolby Vision level number.
+ * @throws IllegalArgumentException if the level constant is not recognized.
+ */
+ public static int dolbyVisionConstantToLevelNumber(int levelConstant) {
+ switch (levelConstant) {
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelHd24:
+ return 1;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelHd30:
+ return 2;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelFhd24:
+ return 3;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelFhd30:
+ return 4;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelFhd60:
+ return 5;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelUhd24:
+ return 6;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelUhd30:
+ return 7;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelUhd48:
+ return 8;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelUhd60:
+ return 9;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevelUhd120:
+ return 10;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevel8k30:
+ return 11;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionLevel8k60:
+ return 12;
+ // TODO: b/179261323 - use framework constant for level 13.
+ case 0x1000:
+ return 13;
+ default:
+ throw new IllegalArgumentException("Unknown Dolby Vision level: " + levelConstant);
+ }
+ }
+
+ /**
+ * Returns Dolby Vision profile number corresponding to the profile constant.
+ *
+ * @param profileConstant The Dolby Vision profile constant.
+ * @return The Dolby Vision profile number.
+ * @throws IllegalArgumentException if the profile constant is not recognized.
+ */
+ public static int dolbyVisionConstantToProfileNumber(int profileConstant) {
+ switch (profileConstant) {
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvavPer:
+ return 0;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvavPen:
+ return 1;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheDer:
+ return 2;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheDen:
+ return 3;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheDtr:
+ return 4;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheStn:
+ return 5;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheDth:
+ return 6;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheDtb:
+ return 7;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheSt:
+ return 8;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvavSe:
+ return 9;
+ case MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvav110:
+ return 10;
+ default:
+ throw new IllegalArgumentException("Unknown Dolby Vision profile: " + profileConstant);
+ }
+ }
+
/**
* Finds the next occurrence of the NAL start code from a given index.
*
diff --git a/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java
index 5f91180945..a040a2cb49 100644
--- a/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java
+++ b/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java
@@ -337,8 +337,9 @@ public final class MediaFormatUtil {
}
/**
- * Returns a {@code Codecs string} of {@link MediaFormat}. In case of an H263 codec string, builds
- * and returns an RFC 6381 H263 codec string using profile and level.
+ * Returns a {@code Codecs string} of {@link MediaFormat}.
+ *
+ *
For H263 and Dolby Vision formats, builds a codec string using profile and level.
*/
@Nullable
@SuppressLint("InlinedApi") // Inlined MediaFormat keys.
@@ -350,6 +351,16 @@ public final class MediaFormatUtil {
return CodecSpecificDataUtil.buildH263CodecString(
mediaFormat.getInteger(MediaFormat.KEY_PROFILE),
mediaFormat.getInteger(MediaFormat.KEY_LEVEL));
+ } else if (Objects.equals(
+ mediaFormat.getString(MediaFormat.KEY_MIME), MimeTypes.VIDEO_DOLBY_VISION)
+ && mediaFormat.containsKey(MediaFormat.KEY_PROFILE)
+ && mediaFormat.containsKey(MediaFormat.KEY_LEVEL)) {
+ // Add Dolby Vision profile and level to codec string as per Dolby Vision ISO media format.
+ return CodecSpecificDataUtil.buildDolbyVisionCodecString(
+ CodecSpecificDataUtil.dolbyVisionConstantToProfileNumber(
+ mediaFormat.getInteger(MediaFormat.KEY_PROFILE)),
+ CodecSpecificDataUtil.dolbyVisionConstantToLevelNumber(
+ mediaFormat.getInteger(MediaFormat.KEY_LEVEL)));
} else {
return getString(mediaFormat, MediaFormat.KEY_CODECS_STRING, /* defaultValue= */ null);
}
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/AnnexBUtils.java b/libraries/muxer/src/main/java/androidx/media3/muxer/AnnexBUtils.java
index 153366e454..9f30a8bd4e 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/AnnexBUtils.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/AnnexBUtils.java
@@ -15,8 +15,11 @@
*/
package androidx.media3.muxer;
+import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkState;
+import static androidx.media3.muxer.Boxes.getDolbyVisionProfileAndLevel;
+import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes;
import com.google.common.collect.ImmutableList;
import java.nio.ByteBuffer;
@@ -105,7 +108,16 @@ import java.nio.ByteOrder;
* Returns whether the sample of the given MIME type will contain NAL units in Annex-B format
* (ISO/IEC 14496-10 Annex B, which uses start codes to delineate NAL units).
*/
- public static boolean doesSampleContainAnnexBNalUnits(String sampleMimeType) {
+ public static boolean doesSampleContainAnnexBNalUnits(Format format) {
+ String sampleMimeType = format.sampleMimeType;
+ checkNotNull(sampleMimeType);
+ if (sampleMimeType.equals(MimeTypes.VIDEO_DOLBY_VISION)) {
+ // Dolby vision with AV1 profile does not contain Nal units.
+ int profile = checkNotNull(getDolbyVisionProfileAndLevel(format)).first;
+ // Dolby vision with Profile 10 is equivalent to DolbyVisionProfileDvav110 of framework
+ // media codec constants.
+ return profile != 10;
+ }
return sampleMimeType.equals(MimeTypes.VIDEO_H264)
|| sampleMimeType.equals(MimeTypes.VIDEO_H265);
}
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java
index 12cb4c79bc..a654518e34 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java
@@ -32,11 +32,15 @@ import androidx.media3.common.ColorInfo;
import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.util.CodecSpecificDataUtil;
+import androidx.media3.common.util.Log;
+import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.Util;
+import androidx.media3.container.DolbyVisionConfig;
import androidx.media3.container.MdtaMetadataEntry;
import androidx.media3.container.Mp4LocationData;
import androidx.media3.container.NalUnitUtil;
import androidx.media3.muxer.FragmentedMp4Writer.SampleMetadata;
+import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -91,6 +95,8 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
*/
private static final int TRUN_BOX_NON_SYNC_SAMPLE_FLAGS = 0b00000001_00000001_00000000_00000000;
+ private static final String TAG = "Boxes";
+
private Boxes() {}
public static final ImmutableList XMP_UUID =
@@ -722,6 +728,8 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
return esdsBox(format);
case MimeTypes.VIDEO_VP9:
return vpcCBox(format);
+ case MimeTypes.VIDEO_DOLBY_VISION:
+ return doviSpecificBox(format);
default:
throw new IllegalArgumentException("Unsupported format: " + mimeType);
}
@@ -1547,6 +1555,34 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
return BoxUtils.wrapIntoBox("av1C", ByteBuffer.wrap(csd0));
}
+ /** Returns a dvcC/dvwC/dvvC vision box which will be included in dolby vision box. */
+ private static ByteBuffer doviBox(int profile, byte[] csd) {
+ checkArgument(csd.length > 0, "csd is empty for dovi box.");
+ if (profile <= 7) {
+ return BoxUtils.wrapIntoBox("dvcC", ByteBuffer.wrap(csd));
+ } else if (profile <= 10) {
+ return BoxUtils.wrapIntoBox("dvvC", ByteBuffer.wrap(csd));
+ } else if (profile <= 19) {
+ return BoxUtils.wrapIntoBox("dvwC", ByteBuffer.wrap(csd));
+ } else if (profile == 20) {
+ return BoxUtils.wrapIntoBox("dvcC", ByteBuffer.wrap(csd));
+ } else {
+ return BoxUtils.wrapIntoBox("dvwC", ByteBuffer.wrap(csd));
+ }
+ }
+
+ /** Returns a dolby vision box as per Dolby Vision ISO media format. */
+ private static ByteBuffer doviSpecificBox(Format format) {
+ checkArgument(
+ !format.initializationData.isEmpty(), "csd is not found in the format for dolby vision");
+ byte[] dolbyVisionCsd = Iterables.getLast(format.initializationData);
+ DolbyVisionConfig dolbyVisionConfig = getDolbyVisionConfig(format);
+ checkNotNull(dolbyVisionConfig, "Dolby vision codec is not supported.");
+ ByteBuffer avcHevcBox = dolbyVisionConfig.profile <= 8 ? hvcCBox(format) : avcCBox(format);
+ ByteBuffer dolbyBox = doviBox(dolbyVisionConfig.profile, dolbyVisionCsd);
+ return BoxUtils.concatenateBuffers(avcHevcBox, dolbyBox);
+ }
+
/** Returns the vpcC box as per VP Codec ISO Media File Format Binding v1.0. */
private static ByteBuffer vpcCBox(Format format) {
// For VP9, the CodecPrivate or vpcCBox data is packed into csd-0.
@@ -1690,6 +1726,45 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
return BoxUtils.wrapIntoBox("colr", contents);
}
+ @Nullable
+ private static DolbyVisionConfig getDolbyVisionConfig(Format format) {
+ @Nullable
+ DolbyVisionConfig dolbyVisionConfig =
+ DolbyVisionConfig.parse(
+ new ParsableByteArray(Iterables.getLast(format.initializationData)));
+ if (dolbyVisionConfig == null && format.codecs != null) {
+ Pair profileAndLevel = getDolbyVisionProfileAndLevel(format);
+ checkNotNull(profileAndLevel, "Dolby Vision profile and level is not found.");
+ byte[] dolbyVisionCsd =
+ CodecSpecificDataUtil.buildDolbyVisionInitializationData(
+ /* profile= */ profileAndLevel.first, /* level= */ profileAndLevel.second);
+ dolbyVisionConfig = DolbyVisionConfig.parse(new ParsableByteArray(dolbyVisionCsd));
+ }
+ return dolbyVisionConfig;
+ }
+
+ /** Returns codec specific fourcc for Dolby vision. */
+ private static String getDoviFourcc(Format format) {
+ @Nullable DolbyVisionConfig dolbyVisionConfig = getDolbyVisionConfig(format);
+ checkNotNull(
+ dolbyVisionConfig,
+ "Dolby Vision Initialization data is not found for format: %s" + format.sampleMimeType);
+ switch (dolbyVisionConfig.profile) {
+ case 5:
+ return "dvh1";
+ case 8:
+ return "hvc1";
+ case 9:
+ return "avc1";
+ default:
+ throw new IllegalArgumentException(
+ "Unsupported profile "
+ + dolbyVisionConfig.profile
+ + " for format: "
+ + format.sampleMimeType);
+ }
+ }
+
/** Returns codec specific fourcc. */
private static String codecSpecificFourcc(Format format) {
String mimeType = checkNotNull(format.sampleMimeType);
@@ -1725,6 +1800,8 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
return "mp4v-es";
case MimeTypes.VIDEO_VP9:
return "vp09";
+ case MimeTypes.VIDEO_DOLBY_VISION:
+ return getDoviFourcc(format);
default:
throw new IllegalArgumentException("Unsupported format: " + mimeType);
}
@@ -1943,4 +2020,19 @@ import org.checkerframework.checker.nullness.qual.PolyNull;
}
return minInputPtsUs != Long.MAX_VALUE ? minInputPtsUs : C.TIME_UNSET;
}
+
+ /** Returns profile and level of dolby vision */
+ @Nullable
+ /* package */ static Pair getDolbyVisionProfileAndLevel(Format format) {
+ checkNotNull(format.codecs, "Codec string is null for Dolby Vision format.");
+ List parts = Splitter.on('.').splitToList(format.codecs);
+ if (parts.size() < 3) {
+ // The codec has fewer parts than required by the Dolby Vision codec string format.
+ Log.w(TAG, "Invalid Dolby Vision codec string: " + format.codecs);
+ return null;
+ }
+ int profile = Integer.parseInt(parts.get(1));
+ int level = Integer.parseInt(parts.get(2));
+ return Pair.create(profile, level);
+ }
}
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java
index e7fed6c030..c64490531b 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java
@@ -49,6 +49,7 @@ import java.nio.ByteBuffer;
* H.265 (HEVC)
* VP9
* APV
+ * Dolby Vision
*
* Audio Codecs:
*
@@ -152,7 +153,8 @@ public final class FragmentedMp4Muxer implements AutoCloseable {
MimeTypes.VIDEO_H265,
MimeTypes.VIDEO_MP4V,
MimeTypes.VIDEO_VP9,
- MimeTypes.VIDEO_APV);
+ MimeTypes.VIDEO_APV,
+ MimeTypes.VIDEO_DOLBY_VISION);
/** A list of supported audio {@linkplain MimeTypes sample MIME types}. */
public static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES =
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Writer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Writer.java
index ae2f7752f0..33e4f0062c 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Writer.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Writer.java
@@ -352,7 +352,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
ImmutableList.Builder pendingSamplesByteBuffer = new ImmutableList.Builder<>();
ImmutableList.Builder pendingSamplesBufferInfoBuilder =
new ImmutableList.Builder<>();
- if (doesSampleContainAnnexBNalUnits(checkNotNull(track.format.sampleMimeType))) {
+ if (doesSampleContainAnnexBNalUnits(track.format)) {
while (!track.pendingSamplesByteBuffer.isEmpty()) {
ByteBuffer currentSampleByteBuffer = track.pendingSamplesByteBuffer.removeFirst();
currentSampleByteBuffer =
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java
index cbca31ae69..f710904007 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java
@@ -72,6 +72,7 @@ import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
* - H.265 (HEVC)
*
- VP9
*
- APV
+ *
- Dolby Vision
*
* Audio Codecs:
*
@@ -354,7 +355,8 @@ public final class Mp4Muxer implements AutoCloseable {
MimeTypes.VIDEO_H265,
MimeTypes.VIDEO_MP4V,
MimeTypes.VIDEO_VP9,
- MimeTypes.VIDEO_APV);
+ MimeTypes.VIDEO_APV,
+ MimeTypes.VIDEO_DOLBY_VISION);
/** A list of supported audio {@linkplain MimeTypes sample MIME types}. */
public static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES =
diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java
index 9d133a64f3..942e710506 100644
--- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java
+++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java
@@ -467,7 +467,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
// Convert the H.264/H.265 samples from Annex-B format (output by MediaCodec) to
// Avcc format (required by MP4 container).
- if (doesSampleContainAnnexBNalUnits(checkNotNull(track.format.sampleMimeType))) {
+ if (doesSampleContainAnnexBNalUnits(track.format)) {
currentSampleByteBuffer =
annexBToAvccConverter.process(currentSampleByteBuffer, linearByteBufferAllocator);
currentSampleBufferInfo =
diff --git a/libraries/muxer/src/test/java/androidx/media3/muxer/FragmentedMp4MuxerEndToEndTest.java b/libraries/muxer/src/test/java/androidx/media3/muxer/FragmentedMp4MuxerEndToEndTest.java
index 4124d15412..4d1e86ba59 100644
--- a/libraries/muxer/src/test/java/androidx/media3/muxer/FragmentedMp4MuxerEndToEndTest.java
+++ b/libraries/muxer/src/test/java/androidx/media3/muxer/FragmentedMp4MuxerEndToEndTest.java
@@ -63,6 +63,8 @@ public class FragmentedMp4MuxerEndToEndTest {
"bbb_800x640_768kbps_30fps_avc_pyramid_3b.mp4";
private static final String H264_WITH_FIRST_PTS_10_SEC =
"bbb_800x640_768kbps_30fps_avc_2b_firstpts_10_sec.mp4";
+ private static final String H264_DOLBY_VISION = "video_dovi_1920x1080_60fps_dvav_09.mp4";
+ private static final String H265_DOLBY_VISION = "sample_edit_list.mp4";
private static final String H265_HDR10_MP4 = "hdr10-720p.mp4";
private static final String H265_WITH_METADATA_TRACK_MP4 = "h265_with_metadata_track.mp4";
private static final String APV_MP4 = "sample_with_apvc.mp4";
@@ -88,6 +90,8 @@ public class FragmentedMp4MuxerEndToEndTest {
H264_WITH_NON_REFERENCE_B_FRAMES_MP4,
H264_WITH_PYRAMID_B_FRAMES_MP4,
H264_WITH_FIRST_PTS_10_SEC,
+ H264_DOLBY_VISION,
+ H265_DOLBY_VISION,
H265_HDR10_MP4,
H265_WITH_METADATA_TRACK_MP4,
APV_MP4,
diff --git a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java
index acfd5c6e7f..c6672320d3 100644
--- a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java
+++ b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java
@@ -52,6 +52,9 @@ public class Mp4MuxerEndToEndParameterizedTest {
"bbb_800x640_768kbps_30fps_avc_pyramid_3b.mp4";
private static final String H264_WITH_FIRST_PTS_10_SEC =
"bbb_800x640_768kbps_30fps_avc_2b_firstpts_10_sec.mp4";
+ private static final String H264_DOLBY_VISION = "video_dovi_1920x1080_60fps_dvav_09.mp4";
+ private static final String H265_DOLBY_VISION = "sample_edit_list.mp4";
+
private static final String H265_HDR10_MP4 = "hdr10-720p.mp4";
private static final String H265_WITH_METADATA_TRACK_MP4 = "h265_with_metadata_track.mp4";
private static final String APV_MP4 = "sample_with_apvc.mp4";
@@ -76,6 +79,8 @@ public class Mp4MuxerEndToEndParameterizedTest {
H264_WITH_NON_REFERENCE_B_FRAMES_MP4,
H264_WITH_PYRAMID_B_FRAMES_MP4,
H264_WITH_FIRST_PTS_10_SEC,
+ H264_DOLBY_VISION,
+ H265_DOLBY_VISION,
H265_HDR10_MP4,
H265_WITH_METADATA_TRACK_MP4,
APV_MP4,
diff --git a/libraries/test_data/src/test/assets/media/mp4/video_dovi_1920x1080_60fps_dvav_09.mp4 b/libraries/test_data/src/test/assets/media/mp4/video_dovi_1920x1080_60fps_dvav_09.mp4
new file mode 100644
index 0000000000..0c754d6de2
Binary files /dev/null and b/libraries/test_data/src/test/assets/media/mp4/video_dovi_1920x1080_60fps_dvav_09.mp4 differ
diff --git a/libraries/test_data/src/test/assets/media/mp4/video_dovi_3840x2160_30fps_dav1_10.mp4 b/libraries/test_data/src/test/assets/media/mp4/video_dovi_3840x2160_30fps_dav1_10.mp4
new file mode 100644
index 0000000000..aa0f7b25d7
Binary files /dev/null and b/libraries/test_data/src/test/assets/media/mp4/video_dovi_3840x2160_30fps_dav1_10.mp4 differ
diff --git a/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4.dump b/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4.dump
new file mode 100644
index 0000000000..2b5c39704f
--- /dev/null
+++ b/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4.dump
@@ -0,0 +1,1208 @@
+seekMap:
+ isSeekable = true
+ duration = 3135000
+ getPosition(0) = [[timeUs=-455000, position=400052], [timeUs=611666, position=411095]]
+ getPosition(1) = [[timeUs=-455000, position=400052], [timeUs=611666, position=411095]]
+ getPosition(1567500) = [[timeUs=611666, position=411095], [timeUs=1680000, position=429829]]
+ getPosition(3135000) = [[timeUs=1680000, position=429829]]
+numberOfTracks = 3
+track 0:
+ total output bytes = 3208515
+ sample count = 85
+ track duration = 3135000
+ format 0:
+ averageBitrate = 8187598
+ id = 1
+ containerMimeType = video/mp4
+ sampleMimeType = video/dolby-vision
+ codecs = dvhe.08.04
+ maxInputSize = 196379
+ maxNumReorderSamples = 2
+ width = 1920
+ height = 1080
+ frameRate = 27.11
+ maxSubLayers = 1
+ colorInfo:
+ colorSpace = 6
+ colorRange = 2
+ colorTransfer = 7
+ lumaBitdepth = 10
+ chromaBitdepth = 10
+ language = und
+ metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000]
+ initializationData:
+ data = length 97, hash 32FB3D18
+ data = length 24, hash A31E9935
+ sample 0:
+ time = -455000
+ flags = 1
+ data = length 78829, hash 9265686F
+ sample 1:
+ time = -321666
+ flags = 0
+ data = length 32262, hash 1AD10F61
+ sample 2:
+ time = -388333
+ flags = 0
+ data = length 18055, hash C6BED1E3
+ sample 3:
+ time = -188333
+ flags = 0
+ data = length 65604, hash AA006B06
+ sample 4:
+ time = -255000
+ flags = 0
+ data = length 25841, hash 5643AEFF
+ sample 5:
+ time = -55000
+ flags = 0
+ data = length 72552, hash 9535951C
+ sample 6:
+ time = -121666
+ flags = 0
+ data = length 23756, hash 4074D5AE
+ sample 7:
+ time = 78333
+ flags = 0
+ data = length 98274, hash 7BE5F53A
+ sample 8:
+ time = 11666
+ flags = 0
+ data = length 55804, hash D559D074
+ sample 9:
+ time = -21666
+ flags = 0
+ data = length 12955, hash 35EE397F
+ sample 10:
+ time = 45000
+ flags = 0
+ data = length 12066, hash 31FB52BD
+ sample 11:
+ time = 211666
+ flags = 0
+ data = length 86506, hash 2FA2334C
+ sample 12:
+ time = 145000
+ flags = 0
+ data = length 35691, hash 37C2A1B3
+ sample 13:
+ time = 111666
+ flags = 0
+ data = length 9029, hash D49A1FBC
+ sample 14:
+ time = 178333
+ flags = 0
+ data = length 12198, hash BA7F090B
+ sample 15:
+ time = 345000
+ flags = 0
+ data = length 99669, hash 69FD95FB
+ sample 16:
+ time = 278333
+ flags = 0
+ data = length 35931, hash 7F52D49D
+ sample 17:
+ time = 245000
+ flags = 0
+ data = length 13955, hash 520B5A6A
+ sample 18:
+ time = 311666
+ flags = 0
+ data = length 12407, hash 5326719B
+ sample 19:
+ time = 478333
+ flags = 0
+ data = length 89991, hash A4198F94
+ sample 20:
+ time = 411666
+ flags = 0
+ data = length 25706, hash F2A4B2A4
+ sample 21:
+ time = 378333
+ flags = 0
+ data = length 11924, hash 508042C8
+ sample 22:
+ time = 445000
+ flags = 0
+ data = length 14949, hash 212C7161
+ sample 23:
+ time = 611666
+ flags = 1
+ data = length 196349, hash 484B3706
+ sample 24:
+ time = 545000
+ flags = 0
+ data = length 36093, hash 9964470A
+ sample 25:
+ time = 511666
+ flags = 0
+ data = length 9196, hash 124A821F
+ sample 26:
+ time = 578333
+ flags = 0
+ data = length 11337, hash 2A61C44F
+ sample 27:
+ time = 745000
+ flags = 0
+ data = length 89197, hash E331760E
+ sample 28:
+ time = 678333
+ flags = 0
+ data = length 27802, hash 280175A2
+ sample 29:
+ time = 645000
+ flags = 0
+ data = length 9295, hash 1CC71F4D
+ sample 30:
+ time = 711666
+ flags = 0
+ data = length 11844, hash 595DBFFA
+ sample 31:
+ time = 878333
+ flags = 0
+ data = length 78369, hash 958807CA
+ sample 32:
+ time = 811666
+ flags = 0
+ data = length 28320, hash 8B5DAC6A
+ sample 33:
+ time = 778333
+ flags = 0
+ data = length 13845, hash 868C5F96
+ sample 34:
+ time = 845000
+ flags = 0
+ data = length 13734, hash 2BF28058
+ sample 35:
+ time = 1011666
+ flags = 0
+ data = length 60140, hash 4DCE6D29
+ sample 36:
+ time = 945000
+ flags = 0
+ data = length 28024, hash 2808AC27
+ sample 37:
+ time = 911666
+ flags = 0
+ data = length 14865, hash DA936298
+ sample 38:
+ time = 978333
+ flags = 0
+ data = length 15631, hash F11D2528
+ sample 39:
+ time = 1145000
+ flags = 0
+ data = length 59293, hash 1C3296CD
+ sample 40:
+ time = 1078333
+ flags = 0
+ data = length 27545, hash 189E13B8
+ sample 41:
+ time = 1045000
+ flags = 0
+ data = length 14959, hash A47356EF
+ sample 42:
+ time = 1111666
+ flags = 0
+ data = length 15621, hash C391E893
+ sample 43:
+ time = 1278333
+ flags = 0
+ data = length 66112, hash 54A454C4
+ sample 44:
+ time = 1211666
+ flags = 0
+ data = length 33610, hash 4C3F57F2
+ sample 45:
+ time = 1178333
+ flags = 0
+ data = length 13205, hash EC181CA7
+ sample 46:
+ time = 1245000
+ flags = 0
+ data = length 18525, hash 20D8FE9D
+ sample 47:
+ time = 1411666
+ flags = 0
+ data = length 63613, hash B807DB7E
+ sample 48:
+ time = 1345000
+ flags = 0
+ data = length 40816, hash 2D023C8F
+ sample 49:
+ time = 1311666
+ flags = 0
+ data = length 17728, hash B07033B9
+ sample 50:
+ time = 1378333
+ flags = 0
+ data = length 13105, hash 4E3B7245
+ sample 51:
+ time = 1546666
+ flags = 0
+ data = length 54500, hash 88F3013F
+ sample 52:
+ time = 1478333
+ flags = 0
+ data = length 34711, hash 9918D286
+ sample 53:
+ time = 1445000
+ flags = 0
+ data = length 14764, hash CF9044AB
+ sample 54:
+ time = 1513333
+ flags = 0
+ data = length 16517, hash BA27C997
+ sample 55:
+ time = 1680000
+ flags = 1
+ data = length 143217, hash A7D06C3F
+ sample 56:
+ time = 1613333
+ flags = 0
+ data = length 32967, hash E490EDD3
+ sample 57:
+ time = 1580000
+ flags = 0
+ data = length 17445, hash 5F91C2B8
+ sample 58:
+ time = 1646666
+ flags = 0
+ data = length 14638, hash 775110FE
+ sample 59:
+ time = 1813333
+ flags = 0
+ data = length 67665, hash A9A21D87
+ sample 60:
+ time = 1746666
+ flags = 0
+ data = length 32392, hash 7E790D61
+ sample 61:
+ time = 1713333
+ flags = 0
+ data = length 10589, hash 6EB324E3
+ sample 62:
+ time = 1780000
+ flags = 0
+ data = length 18023, hash 29D03684
+ sample 63:
+ time = 1946666
+ flags = 0
+ data = length 67946, hash 8135C195
+ sample 64:
+ time = 1880000
+ flags = 0
+ data = length 41030, hash B6A9208
+ sample 65:
+ time = 1846666
+ flags = 0
+ data = length 15110, hash BF682221
+ sample 66:
+ time = 1913333
+ flags = 0
+ data = length 17245, hash 2BAFA805
+ sample 67:
+ time = 2080000
+ flags = 0
+ data = length 57455, hash 2754BFA0
+ sample 68:
+ time = 2013333
+ flags = 0
+ data = length 37067, hash CCE6C30F
+ sample 69:
+ time = 1980000
+ flags = 0
+ data = length 14098, hash 60A5760F
+ sample 70:
+ time = 2046666
+ flags = 0
+ data = length 20864, hash 94450211
+ sample 71:
+ time = 2213333
+ flags = 0
+ data = length 62871, hash BA53494F
+ sample 72:
+ time = 2146666
+ flags = 0
+ data = length 38596, hash 420335AC
+ sample 73:
+ time = 2113333
+ flags = 0
+ data = length 17584, hash 2E024B02
+ sample 74:
+ time = 2180000
+ flags = 0
+ data = length 18521, hash 7381819A
+ sample 75:
+ time = 2346666
+ flags = 0
+ data = length 54835, hash F45163BF
+ sample 76:
+ time = 2280000
+ flags = 0
+ data = length 29346, hash A57C757F
+ sample 77:
+ time = 2246666
+ flags = 0
+ data = length 15815, hash 1B194C31
+ sample 78:
+ time = 2313333
+ flags = 0
+ data = length 20390, hash A162AAD0
+ sample 79:
+ time = 2480000
+ flags = 0
+ data = length 64262, hash 875514C7
+ sample 80:
+ time = 2413333
+ flags = 0
+ data = length 39953, hash 3884739A
+ sample 81:
+ time = 2380000
+ flags = 0
+ data = length 23136, hash 8AF1C1AD
+ sample 82:
+ time = 2446666
+ flags = 0
+ data = length 26792, hash 3157758F
+ sample 83:
+ time = 2613333
+ flags = 0
+ data = length 62711, hash EF9AC8F5
+ sample 84:
+ time = 2546666
+ flags = 536870912
+ data = length 33333, hash 567D33D6
+track 1:
+ total output bytes = 3208515
+ sample count = 85
+ track duration = 3135000
+ format 0:
+ averageBitrate = 8187598
+ id = 2
+ containerMimeType = video/mp4
+ sampleMimeType = video/hevc
+ codecs = hvc1.2.4.L120.B0
+ maxInputSize = 196379
+ maxNumReorderSamples = 2
+ width = 1920
+ height = 1080
+ frameRate = 27.11
+ maxSubLayers = 1
+ colorInfo:
+ colorSpace = 6
+ colorRange = 2
+ colorTransfer = 7
+ lumaBitdepth = 10
+ chromaBitdepth = 10
+ language = und
+ metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000]
+ initializationData:
+ data = length 97, hash 32FB3D18
+ sample 0:
+ time = -455000
+ flags = 1
+ data = length 78829, hash 9265686F
+ sample 1:
+ time = -321666
+ flags = 0
+ data = length 32262, hash 1AD10F61
+ sample 2:
+ time = -388333
+ flags = 0
+ data = length 18055, hash C6BED1E3
+ sample 3:
+ time = -188333
+ flags = 0
+ data = length 65604, hash AA006B06
+ sample 4:
+ time = -255000
+ flags = 0
+ data = length 25841, hash 5643AEFF
+ sample 5:
+ time = -55000
+ flags = 0
+ data = length 72552, hash 9535951C
+ sample 6:
+ time = -121666
+ flags = 0
+ data = length 23756, hash 4074D5AE
+ sample 7:
+ time = 78333
+ flags = 0
+ data = length 98274, hash 7BE5F53A
+ sample 8:
+ time = 11666
+ flags = 0
+ data = length 55804, hash D559D074
+ sample 9:
+ time = -21666
+ flags = 0
+ data = length 12955, hash 35EE397F
+ sample 10:
+ time = 45000
+ flags = 0
+ data = length 12066, hash 31FB52BD
+ sample 11:
+ time = 211666
+ flags = 0
+ data = length 86506, hash 2FA2334C
+ sample 12:
+ time = 145000
+ flags = 0
+ data = length 35691, hash 37C2A1B3
+ sample 13:
+ time = 111666
+ flags = 0
+ data = length 9029, hash D49A1FBC
+ sample 14:
+ time = 178333
+ flags = 0
+ data = length 12198, hash BA7F090B
+ sample 15:
+ time = 345000
+ flags = 0
+ data = length 99669, hash 69FD95FB
+ sample 16:
+ time = 278333
+ flags = 0
+ data = length 35931, hash 7F52D49D
+ sample 17:
+ time = 245000
+ flags = 0
+ data = length 13955, hash 520B5A6A
+ sample 18:
+ time = 311666
+ flags = 0
+ data = length 12407, hash 5326719B
+ sample 19:
+ time = 478333
+ flags = 0
+ data = length 89991, hash A4198F94
+ sample 20:
+ time = 411666
+ flags = 0
+ data = length 25706, hash F2A4B2A4
+ sample 21:
+ time = 378333
+ flags = 0
+ data = length 11924, hash 508042C8
+ sample 22:
+ time = 445000
+ flags = 0
+ data = length 14949, hash 212C7161
+ sample 23:
+ time = 611666
+ flags = 1
+ data = length 196349, hash 484B3706
+ sample 24:
+ time = 545000
+ flags = 0
+ data = length 36093, hash 9964470A
+ sample 25:
+ time = 511666
+ flags = 0
+ data = length 9196, hash 124A821F
+ sample 26:
+ time = 578333
+ flags = 0
+ data = length 11337, hash 2A61C44F
+ sample 27:
+ time = 745000
+ flags = 0
+ data = length 89197, hash E331760E
+ sample 28:
+ time = 678333
+ flags = 0
+ data = length 27802, hash 280175A2
+ sample 29:
+ time = 645000
+ flags = 0
+ data = length 9295, hash 1CC71F4D
+ sample 30:
+ time = 711666
+ flags = 0
+ data = length 11844, hash 595DBFFA
+ sample 31:
+ time = 878333
+ flags = 0
+ data = length 78369, hash 958807CA
+ sample 32:
+ time = 811666
+ flags = 0
+ data = length 28320, hash 8B5DAC6A
+ sample 33:
+ time = 778333
+ flags = 0
+ data = length 13845, hash 868C5F96
+ sample 34:
+ time = 845000
+ flags = 0
+ data = length 13734, hash 2BF28058
+ sample 35:
+ time = 1011666
+ flags = 0
+ data = length 60140, hash 4DCE6D29
+ sample 36:
+ time = 945000
+ flags = 0
+ data = length 28024, hash 2808AC27
+ sample 37:
+ time = 911666
+ flags = 0
+ data = length 14865, hash DA936298
+ sample 38:
+ time = 978333
+ flags = 0
+ data = length 15631, hash F11D2528
+ sample 39:
+ time = 1145000
+ flags = 0
+ data = length 59293, hash 1C3296CD
+ sample 40:
+ time = 1078333
+ flags = 0
+ data = length 27545, hash 189E13B8
+ sample 41:
+ time = 1045000
+ flags = 0
+ data = length 14959, hash A47356EF
+ sample 42:
+ time = 1111666
+ flags = 0
+ data = length 15621, hash C391E893
+ sample 43:
+ time = 1278333
+ flags = 0
+ data = length 66112, hash 54A454C4
+ sample 44:
+ time = 1211666
+ flags = 0
+ data = length 33610, hash 4C3F57F2
+ sample 45:
+ time = 1178333
+ flags = 0
+ data = length 13205, hash EC181CA7
+ sample 46:
+ time = 1245000
+ flags = 0
+ data = length 18525, hash 20D8FE9D
+ sample 47:
+ time = 1411666
+ flags = 0
+ data = length 63613, hash B807DB7E
+ sample 48:
+ time = 1345000
+ flags = 0
+ data = length 40816, hash 2D023C8F
+ sample 49:
+ time = 1311666
+ flags = 0
+ data = length 17728, hash B07033B9
+ sample 50:
+ time = 1378333
+ flags = 0
+ data = length 13105, hash 4E3B7245
+ sample 51:
+ time = 1546666
+ flags = 0
+ data = length 54500, hash 88F3013F
+ sample 52:
+ time = 1478333
+ flags = 0
+ data = length 34711, hash 9918D286
+ sample 53:
+ time = 1445000
+ flags = 0
+ data = length 14764, hash CF9044AB
+ sample 54:
+ time = 1513333
+ flags = 0
+ data = length 16517, hash BA27C997
+ sample 55:
+ time = 1680000
+ flags = 1
+ data = length 143217, hash A7D06C3F
+ sample 56:
+ time = 1613333
+ flags = 0
+ data = length 32967, hash E490EDD3
+ sample 57:
+ time = 1580000
+ flags = 0
+ data = length 17445, hash 5F91C2B8
+ sample 58:
+ time = 1646666
+ flags = 0
+ data = length 14638, hash 775110FE
+ sample 59:
+ time = 1813333
+ flags = 0
+ data = length 67665, hash A9A21D87
+ sample 60:
+ time = 1746666
+ flags = 0
+ data = length 32392, hash 7E790D61
+ sample 61:
+ time = 1713333
+ flags = 0
+ data = length 10589, hash 6EB324E3
+ sample 62:
+ time = 1780000
+ flags = 0
+ data = length 18023, hash 29D03684
+ sample 63:
+ time = 1946666
+ flags = 0
+ data = length 67946, hash 8135C195
+ sample 64:
+ time = 1880000
+ flags = 0
+ data = length 41030, hash B6A9208
+ sample 65:
+ time = 1846666
+ flags = 0
+ data = length 15110, hash BF682221
+ sample 66:
+ time = 1913333
+ flags = 0
+ data = length 17245, hash 2BAFA805
+ sample 67:
+ time = 2080000
+ flags = 0
+ data = length 57455, hash 2754BFA0
+ sample 68:
+ time = 2013333
+ flags = 0
+ data = length 37067, hash CCE6C30F
+ sample 69:
+ time = 1980000
+ flags = 0
+ data = length 14098, hash 60A5760F
+ sample 70:
+ time = 2046666
+ flags = 0
+ data = length 20864, hash 94450211
+ sample 71:
+ time = 2213333
+ flags = 0
+ data = length 62871, hash BA53494F
+ sample 72:
+ time = 2146666
+ flags = 0
+ data = length 38596, hash 420335AC
+ sample 73:
+ time = 2113333
+ flags = 0
+ data = length 17584, hash 2E024B02
+ sample 74:
+ time = 2180000
+ flags = 0
+ data = length 18521, hash 7381819A
+ sample 75:
+ time = 2346666
+ flags = 0
+ data = length 54835, hash F45163BF
+ sample 76:
+ time = 2280000
+ flags = 0
+ data = length 29346, hash A57C757F
+ sample 77:
+ time = 2246666
+ flags = 0
+ data = length 15815, hash 1B194C31
+ sample 78:
+ time = 2313333
+ flags = 0
+ data = length 20390, hash A162AAD0
+ sample 79:
+ time = 2480000
+ flags = 0
+ data = length 64262, hash 875514C7
+ sample 80:
+ time = 2413333
+ flags = 0
+ data = length 39953, hash 3884739A
+ sample 81:
+ time = 2380000
+ flags = 0
+ data = length 23136, hash 8AF1C1AD
+ sample 82:
+ time = 2446666
+ flags = 0
+ data = length 26792, hash 3157758F
+ sample 83:
+ time = 2613333
+ flags = 0
+ data = length 62711, hash EF9AC8F5
+ sample 84:
+ time = 2546666
+ flags = 536870912
+ data = length 33333, hash 567D33D6
+track 2:
+ total output bytes = 45765
+ sample count = 112
+ track duration = 2601700
+ format 0:
+ averageBitrate = 140725
+ peakBitrate = 192000
+ id = 3
+ containerMimeType = video/mp4
+ sampleMimeType = audio/mp4a-latm
+ codecs = mp4a.40.2
+ maxInputSize = 832
+ channelCount = 2
+ sampleRate = 44100
+ language = und
+ metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000]
+ initializationData:
+ data = length 2, hash 5FF
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 802, hash DE7F20AC
+ sample 1:
+ time = 23229
+ flags = 1
+ data = length 457, hash 3F6EF91
+ sample 2:
+ time = 46458
+ flags = 1
+ data = length 439, hash 9EFEF547
+ sample 3:
+ time = 69687
+ flags = 1
+ data = length 425, hash 9E1A2B66
+ sample 4:
+ time = 92916
+ flags = 1
+ data = length 420, hash 7AA38F34
+ sample 5:
+ time = 116145
+ flags = 1
+ data = length 399, hash 919F7E1C
+ sample 6:
+ time = 139375
+ flags = 1
+ data = length 394, hash 4EB03DBE
+ sample 7:
+ time = 162604
+ flags = 1
+ data = length 392, hash C027E340
+ sample 8:
+ time = 185833
+ flags = 1
+ data = length 389, hash F5CA0E30
+ sample 9:
+ time = 209062
+ flags = 1
+ data = length 406, hash C4D75949
+ sample 10:
+ time = 232291
+ flags = 1
+ data = length 418, hash A00CE696
+ sample 11:
+ time = 255520
+ flags = 1
+ data = length 398, hash F05C17A5
+ sample 12:
+ time = 278750
+ flags = 1
+ data = length 399, hash DF5BEB79
+ sample 13:
+ time = 301979
+ flags = 1
+ data = length 391, hash A7717052
+ sample 14:
+ time = 325208
+ flags = 1
+ data = length 413, hash CD16EEE8
+ sample 15:
+ time = 348437
+ flags = 1
+ data = length 417, hash AB8F24B7
+ sample 16:
+ time = 371666
+ flags = 1
+ data = length 420, hash EB187AD9
+ sample 17:
+ time = 394895
+ flags = 1
+ data = length 404, hash C7E2028A
+ sample 18:
+ time = 418125
+ flags = 1
+ data = length 427, hash 960C2672
+ sample 19:
+ time = 441354
+ flags = 1
+ data = length 419, hash 333F12D8
+ sample 20:
+ time = 464583
+ flags = 1
+ data = length 409, hash 14611ACA
+ sample 21:
+ time = 487812
+ flags = 1
+ data = length 397, hash FF7C175F
+ sample 22:
+ time = 511041
+ flags = 1
+ data = length 397, hash 3C41B7F
+ sample 23:
+ time = 534270
+ flags = 1
+ data = length 407, hash E5FD065C
+ sample 24:
+ time = 557500
+ flags = 1
+ data = length 402, hash 4B054010
+ sample 25:
+ time = 580729
+ flags = 1
+ data = length 402, hash A831296A
+ sample 26:
+ time = 603958
+ flags = 1
+ data = length 414, hash A140A593
+ sample 27:
+ time = 627187
+ flags = 1
+ data = length 416, hash 1812B419
+ sample 28:
+ time = 650416
+ flags = 1
+ data = length 399, hash 8365C231
+ sample 29:
+ time = 673645
+ flags = 1
+ data = length 385, hash D661688B
+ sample 30:
+ time = 696875
+ flags = 1
+ data = length 403, hash BC9E5E2E
+ sample 31:
+ time = 720104
+ flags = 1
+ data = length 398, hash 59804AE8
+ sample 32:
+ time = 743333
+ flags = 1
+ data = length 406, hash 3A42B5B7
+ sample 33:
+ time = 766562
+ flags = 1
+ data = length 414, hash 53FA9880
+ sample 34:
+ time = 789791
+ flags = 1
+ data = length 398, hash 8D3ADD23
+ sample 35:
+ time = 813020
+ flags = 1
+ data = length 425, hash C9ADA235
+ sample 36:
+ time = 836250
+ flags = 1
+ data = length 408, hash 3A4EFC47
+ sample 37:
+ time = 859479
+ flags = 1
+ data = length 414, hash 6FED5E60
+ sample 38:
+ time = 882708
+ flags = 1
+ data = length 427, hash 42AC5664
+ sample 39:
+ time = 905937
+ flags = 1
+ data = length 429, hash 62F3725D
+ sample 40:
+ time = 929166
+ flags = 1
+ data = length 403, hash 6C11E259
+ sample 41:
+ time = 952395
+ flags = 1
+ data = length 421, hash 4EF805F6
+ sample 42:
+ time = 975625
+ flags = 1
+ data = length 404, hash 2094740F
+ sample 43:
+ time = 998854
+ flags = 1
+ data = length 426, hash FCF2A593
+ sample 44:
+ time = 1022083
+ flags = 1
+ data = length 423, hash DB09D7F0
+ sample 45:
+ time = 1045312
+ flags = 1
+ data = length 411, hash A4CB44DB
+ sample 46:
+ time = 1068541
+ flags = 1
+ data = length 404, hash 4959B833
+ sample 47:
+ time = 1091770
+ flags = 1
+ data = length 403, hash B5C8DFA1
+ sample 48:
+ time = 1115000
+ flags = 1
+ data = length 422, hash ABE9358F
+ sample 49:
+ time = 1138229
+ flags = 1
+ data = length 418, hash C1914F50
+ sample 50:
+ time = 1161458
+ flags = 1
+ data = length 421, hash 4453B916
+ sample 51:
+ time = 1184687
+ flags = 1
+ data = length 400, hash 73452AD3
+ sample 52:
+ time = 1207916
+ flags = 1
+ data = length 400, hash F094F7B
+ sample 53:
+ time = 1231145
+ flags = 1
+ data = length 410, hash EC5D2BC2
+ sample 54:
+ time = 1254375
+ flags = 1
+ data = length 391, hash 9DC6D32
+ sample 55:
+ time = 1277604
+ flags = 1
+ data = length 361, hash 6612AF76
+ sample 56:
+ time = 1300833
+ flags = 1
+ data = length 391, hash 4B59EFBD
+ sample 57:
+ time = 1324062
+ flags = 1
+ data = length 390, hash 8CB3956F
+ sample 58:
+ time = 1347291
+ flags = 1
+ data = length 388, hash F9B691B9
+ sample 59:
+ time = 1370520
+ flags = 1
+ data = length 399, hash 280948A3
+ sample 60:
+ time = 1393750
+ flags = 1
+ data = length 390, hash 929628B2
+ sample 61:
+ time = 1416979
+ flags = 1
+ data = length 387, hash 56291FF5
+ sample 62:
+ time = 1440208
+ flags = 1
+ data = length 446, hash 2A7FE5FE
+ sample 63:
+ time = 1463437
+ flags = 1
+ data = length 436, hash D872A8A
+ sample 64:
+ time = 1486666
+ flags = 1
+ data = length 394, hash EA791960
+ sample 65:
+ time = 1509895
+ flags = 1
+ data = length 417, hash BEEC2ED0
+ sample 66:
+ time = 1533125
+ flags = 1
+ data = length 442, hash FDFFC29F
+ sample 67:
+ time = 1556354
+ flags = 1
+ data = length 416, hash 2F2ED36F
+ sample 68:
+ time = 1579583
+ flags = 1
+ data = length 396, hash 1CFA7982
+ sample 69:
+ time = 1602812
+ flags = 1
+ data = length 395, hash 2998BEF2
+ sample 70:
+ time = 1626041
+ flags = 1
+ data = length 389, hash AB8EAB86
+ sample 71:
+ time = 1649270
+ flags = 1
+ data = length 404, hash AC927E7
+ sample 72:
+ time = 1672500
+ flags = 1
+ data = length 418, hash 60370BB0
+ sample 73:
+ time = 1695729
+ flags = 1
+ data = length 393, hash 608345FA
+ sample 74:
+ time = 1718958
+ flags = 1
+ data = length 402, hash D478A3DE
+ sample 75:
+ time = 1742187
+ flags = 1
+ data = length 404, hash 98A170D8
+ sample 76:
+ time = 1765416
+ flags = 1
+ data = length 397, hash FE8F519C
+ sample 77:
+ time = 1788645
+ flags = 1
+ data = length 386, hash 4FD184BE
+ sample 78:
+ time = 1811875
+ flags = 1
+ data = length 377, hash 76FBE38F
+ sample 79:
+ time = 1835104
+ flags = 1
+ data = length 409, hash 92C677A9
+ sample 80:
+ time = 1858333
+ flags = 1
+ data = length 402, hash 42CFE9E2
+ sample 81:
+ time = 1881562
+ flags = 1
+ data = length 390, hash A5BF0232
+ sample 82:
+ time = 1904791
+ flags = 1
+ data = length 388, hash 55F742C6
+ sample 83:
+ time = 1928020
+ flags = 1
+ data = length 377, hash 84F8DCDD
+ sample 84:
+ time = 1951250
+ flags = 1
+ data = length 391, hash E20DB9EB
+ sample 85:
+ time = 1974479
+ flags = 1
+ data = length 398, hash 2B8A6B07
+ sample 86:
+ time = 1997708
+ flags = 1
+ data = length 381, hash 8E227E10
+ sample 87:
+ time = 2020937
+ flags = 1
+ data = length 393, hash 1C5EE4DA
+ sample 88:
+ time = 2044166
+ flags = 1
+ data = length 393, hash D37FAB94
+ sample 89:
+ time = 2067395
+ flags = 1
+ data = length 380, hash 61D9B8F1
+ sample 90:
+ time = 2090625
+ flags = 1
+ data = length 395, hash BB9069D0
+ sample 91:
+ time = 2113854
+ flags = 1
+ data = length 379, hash 27A4C8AB
+ sample 92:
+ time = 2137083
+ flags = 1
+ data = length 403, hash 2F93ACAE
+ sample 93:
+ time = 2160312
+ flags = 1
+ data = length 415, hash 51099155
+ sample 94:
+ time = 2183541
+ flags = 1
+ data = length 400, hash EC019A99
+ sample 95:
+ time = 2206770
+ flags = 1
+ data = length 401, hash F42E02C7
+ sample 96:
+ time = 2230000
+ flags = 1
+ data = length 400, hash C8E29F0A
+ sample 97:
+ time = 2253229
+ flags = 1
+ data = length 408, hash B388110C
+ sample 98:
+ time = 2276458
+ flags = 1
+ data = length 406, hash FCFBEFD9
+ sample 99:
+ time = 2299687
+ flags = 1
+ data = length 411, hash 9C60D439
+ sample 100:
+ time = 2322916
+ flags = 1
+ data = length 414, hash 8EECCBD9
+ sample 101:
+ time = 2346145
+ flags = 1
+ data = length 393, hash 9B1317BC
+ sample 102:
+ time = 2369375
+ flags = 1
+ data = length 405, hash 4CBBCFBF
+ sample 103:
+ time = 2392604
+ flags = 1
+ data = length 412, hash A8C3BE09
+ sample 104:
+ time = 2415833
+ flags = 1
+ data = length 409, hash CDDB880D
+ sample 105:
+ time = 2439062
+ flags = 1
+ data = length 423, hash 9F87A5D
+ sample 106:
+ time = 2462291
+ flags = 1
+ data = length 399, hash 6C7043B7
+ sample 107:
+ time = 2485520
+ flags = 1
+ data = length 400, hash 297E775C
+ sample 108:
+ time = 2508750
+ flags = 1
+ data = length 397, hash 5732E5A2
+ sample 109:
+ time = 2531979
+ flags = 1
+ data = length 398, hash 127D1EF3
+ sample 110:
+ time = 2555208
+ flags = 1
+ data = length 424, hash BF76C0EC
+ sample 111:
+ time = 2578437
+ flags = 536870913
+ data = length 417, hash 761190B8
+tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4_fragmented.dump b/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4_fragmented.dump
new file mode 100644
index 0000000000..d1e1676889
--- /dev/null
+++ b/libraries/test_data/src/test/assets/muxerdumps/sample_edit_list.mp4_fragmented.dump
@@ -0,0 +1,1192 @@
+seekMap:
+ isSeekable = false
+ duration = UNSET TIME
+ getPosition(0) = [[timeUs=0, position=1909]]
+numberOfTracks = 3
+track 0:
+ total output bytes = 3208515
+ sample count = 85
+ format 0:
+ id = 1
+ containerMimeType = video/mp4
+ sampleMimeType = video/dolby-vision
+ codecs = dvhe.08.04
+ maxNumReorderSamples = 2
+ width = 1920
+ height = 1080
+ maxSubLayers = 1
+ colorInfo:
+ colorSpace = 6
+ colorRange = 2
+ colorTransfer = 7
+ lumaBitdepth = 10
+ chromaBitdepth = 10
+ language = und
+ initializationData:
+ data = length 97, hash 32FB3D18
+ data = length 24, hash A31E9935
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 78829, hash 9265686F
+ sample 1:
+ time = 133333
+ flags = 0
+ data = length 32262, hash 1AD10F61
+ sample 2:
+ time = 66666
+ flags = 0
+ data = length 18055, hash C6BED1E3
+ sample 3:
+ time = 266666
+ flags = 0
+ data = length 65604, hash AA006B06
+ sample 4:
+ time = 200000
+ flags = 0
+ data = length 25841, hash 5643AEFF
+ sample 5:
+ time = 400000
+ flags = 0
+ data = length 72552, hash 9535951C
+ sample 6:
+ time = 333333
+ flags = 0
+ data = length 23756, hash 4074D5AE
+ sample 7:
+ time = 533333
+ flags = 0
+ data = length 98274, hash 7BE5F53A
+ sample 8:
+ time = 466666
+ flags = 0
+ data = length 55804, hash D559D074
+ sample 9:
+ time = 433333
+ flags = 0
+ data = length 12955, hash 35EE397F
+ sample 10:
+ time = 500000
+ flags = 0
+ data = length 12066, hash 31FB52BD
+ sample 11:
+ time = 666666
+ flags = 0
+ data = length 86506, hash 2FA2334C
+ sample 12:
+ time = 600000
+ flags = 0
+ data = length 35691, hash 37C2A1B3
+ sample 13:
+ time = 566666
+ flags = 0
+ data = length 9029, hash D49A1FBC
+ sample 14:
+ time = 633333
+ flags = 0
+ data = length 12198, hash BA7F090B
+ sample 15:
+ time = 800000
+ flags = 0
+ data = length 99669, hash 69FD95FB
+ sample 16:
+ time = 733333
+ flags = 0
+ data = length 35931, hash 7F52D49D
+ sample 17:
+ time = 700000
+ flags = 0
+ data = length 13955, hash 520B5A6A
+ sample 18:
+ time = 766666
+ flags = 0
+ data = length 12407, hash 5326719B
+ sample 19:
+ time = 933333
+ flags = 0
+ data = length 89991, hash A4198F94
+ sample 20:
+ time = 866666
+ flags = 0
+ data = length 25706, hash F2A4B2A4
+ sample 21:
+ time = 833333
+ flags = 0
+ data = length 11924, hash 508042C8
+ sample 22:
+ time = 900000
+ flags = 0
+ data = length 14949, hash 212C7161
+ sample 23:
+ time = 1066666
+ flags = 1
+ data = length 196349, hash 484B3706
+ sample 24:
+ time = 1000000
+ flags = 0
+ data = length 36093, hash 9964470A
+ sample 25:
+ time = 966666
+ flags = 0
+ data = length 9196, hash 124A821F
+ sample 26:
+ time = 1033333
+ flags = 0
+ data = length 11337, hash 2A61C44F
+ sample 27:
+ time = 1200000
+ flags = 0
+ data = length 89197, hash E331760E
+ sample 28:
+ time = 1133333
+ flags = 0
+ data = length 27802, hash 280175A2
+ sample 29:
+ time = 1100000
+ flags = 0
+ data = length 9295, hash 1CC71F4D
+ sample 30:
+ time = 1166666
+ flags = 0
+ data = length 11844, hash 595DBFFA
+ sample 31:
+ time = 1333333
+ flags = 0
+ data = length 78369, hash 958807CA
+ sample 32:
+ time = 1266666
+ flags = 0
+ data = length 28320, hash 8B5DAC6A
+ sample 33:
+ time = 1233333
+ flags = 0
+ data = length 13845, hash 868C5F96
+ sample 34:
+ time = 1300000
+ flags = 0
+ data = length 13734, hash 2BF28058
+ sample 35:
+ time = 1466666
+ flags = 0
+ data = length 60140, hash 4DCE6D29
+ sample 36:
+ time = 1400000
+ flags = 0
+ data = length 28024, hash 2808AC27
+ sample 37:
+ time = 1366666
+ flags = 0
+ data = length 14865, hash DA936298
+ sample 38:
+ time = 1433333
+ flags = 0
+ data = length 15631, hash F11D2528
+ sample 39:
+ time = 1600000
+ flags = 0
+ data = length 59293, hash 1C3296CD
+ sample 40:
+ time = 1533333
+ flags = 0
+ data = length 27545, hash 189E13B8
+ sample 41:
+ time = 1500000
+ flags = 0
+ data = length 14959, hash A47356EF
+ sample 42:
+ time = 1566666
+ flags = 0
+ data = length 15621, hash C391E893
+ sample 43:
+ time = 1733333
+ flags = 0
+ data = length 66112, hash 54A454C4
+ sample 44:
+ time = 1666666
+ flags = 0
+ data = length 33610, hash 4C3F57F2
+ sample 45:
+ time = 1633333
+ flags = 0
+ data = length 13205, hash EC181CA7
+ sample 46:
+ time = 1700000
+ flags = 0
+ data = length 18525, hash 20D8FE9D
+ sample 47:
+ time = 1866666
+ flags = 0
+ data = length 63613, hash B807DB7E
+ sample 48:
+ time = 1800000
+ flags = 0
+ data = length 40816, hash 2D023C8F
+ sample 49:
+ time = 1766666
+ flags = 0
+ data = length 17728, hash B07033B9
+ sample 50:
+ time = 1833333
+ flags = 0
+ data = length 13105, hash 4E3B7245
+ sample 51:
+ time = 2001666
+ flags = 0
+ data = length 54500, hash 88F3013F
+ sample 52:
+ time = 1933333
+ flags = 0
+ data = length 34711, hash 9918D286
+ sample 53:
+ time = 1900000
+ flags = 0
+ data = length 14764, hash CF9044AB
+ sample 54:
+ time = 1968333
+ flags = 0
+ data = length 16517, hash BA27C997
+ sample 55:
+ time = 2135000
+ flags = 1
+ data = length 143217, hash A7D06C3F
+ sample 56:
+ time = 2068333
+ flags = 0
+ data = length 32967, hash E490EDD3
+ sample 57:
+ time = 2035000
+ flags = 0
+ data = length 17445, hash 5F91C2B8
+ sample 58:
+ time = 2101666
+ flags = 0
+ data = length 14638, hash 775110FE
+ sample 59:
+ time = 2268333
+ flags = 0
+ data = length 67665, hash A9A21D87
+ sample 60:
+ time = 2201666
+ flags = 0
+ data = length 32392, hash 7E790D61
+ sample 61:
+ time = 2168333
+ flags = 0
+ data = length 10589, hash 6EB324E3
+ sample 62:
+ time = 2235000
+ flags = 0
+ data = length 18023, hash 29D03684
+ sample 63:
+ time = 2401666
+ flags = 0
+ data = length 67946, hash 8135C195
+ sample 64:
+ time = 2335000
+ flags = 0
+ data = length 41030, hash B6A9208
+ sample 65:
+ time = 2301666
+ flags = 0
+ data = length 15110, hash BF682221
+ sample 66:
+ time = 2368333
+ flags = 0
+ data = length 17245, hash 2BAFA805
+ sample 67:
+ time = 2535000
+ flags = 0
+ data = length 57455, hash 2754BFA0
+ sample 68:
+ time = 2468333
+ flags = 0
+ data = length 37067, hash CCE6C30F
+ sample 69:
+ time = 2435000
+ flags = 0
+ data = length 14098, hash 60A5760F
+ sample 70:
+ time = 2501666
+ flags = 0
+ data = length 20864, hash 94450211
+ sample 71:
+ time = 2668333
+ flags = 0
+ data = length 62871, hash BA53494F
+ sample 72:
+ time = 2601666
+ flags = 0
+ data = length 38596, hash 420335AC
+ sample 73:
+ time = 2568333
+ flags = 0
+ data = length 17584, hash 2E024B02
+ sample 74:
+ time = 2635000
+ flags = 0
+ data = length 18521, hash 7381819A
+ sample 75:
+ time = 2801666
+ flags = 0
+ data = length 54835, hash F45163BF
+ sample 76:
+ time = 2735000
+ flags = 0
+ data = length 29346, hash A57C757F
+ sample 77:
+ time = 2701666
+ flags = 0
+ data = length 15815, hash 1B194C31
+ sample 78:
+ time = 2768333
+ flags = 0
+ data = length 20390, hash A162AAD0
+ sample 79:
+ time = 2935000
+ flags = 0
+ data = length 64262, hash 875514C7
+ sample 80:
+ time = 2868333
+ flags = 0
+ data = length 39953, hash 3884739A
+ sample 81:
+ time = 2835000
+ flags = 0
+ data = length 23136, hash 8AF1C1AD
+ sample 82:
+ time = 2901666
+ flags = 0
+ data = length 26792, hash 3157758F
+ sample 83:
+ time = 3068333
+ flags = 0
+ data = length 62711, hash EF9AC8F5
+ sample 84:
+ time = 3001666
+ flags = 0
+ data = length 33333, hash 567D33D6
+track 1:
+ total output bytes = 3208515
+ sample count = 85
+ format 0:
+ id = 2
+ containerMimeType = video/mp4
+ sampleMimeType = video/hevc
+ codecs = hvc1.2.4.L120.B0
+ maxNumReorderSamples = 2
+ width = 1920
+ height = 1080
+ maxSubLayers = 1
+ colorInfo:
+ colorSpace = 6
+ colorRange = 2
+ colorTransfer = 7
+ lumaBitdepth = 10
+ chromaBitdepth = 10
+ language = und
+ initializationData:
+ data = length 97, hash 32FB3D18
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 78829, hash 9265686F
+ sample 1:
+ time = 133333
+ flags = 0
+ data = length 32262, hash 1AD10F61
+ sample 2:
+ time = 66666
+ flags = 0
+ data = length 18055, hash C6BED1E3
+ sample 3:
+ time = 266666
+ flags = 0
+ data = length 65604, hash AA006B06
+ sample 4:
+ time = 200000
+ flags = 0
+ data = length 25841, hash 5643AEFF
+ sample 5:
+ time = 400000
+ flags = 0
+ data = length 72552, hash 9535951C
+ sample 6:
+ time = 333333
+ flags = 0
+ data = length 23756, hash 4074D5AE
+ sample 7:
+ time = 533333
+ flags = 0
+ data = length 98274, hash 7BE5F53A
+ sample 8:
+ time = 466666
+ flags = 0
+ data = length 55804, hash D559D074
+ sample 9:
+ time = 433333
+ flags = 0
+ data = length 12955, hash 35EE397F
+ sample 10:
+ time = 500000
+ flags = 0
+ data = length 12066, hash 31FB52BD
+ sample 11:
+ time = 666666
+ flags = 0
+ data = length 86506, hash 2FA2334C
+ sample 12:
+ time = 600000
+ flags = 0
+ data = length 35691, hash 37C2A1B3
+ sample 13:
+ time = 566666
+ flags = 0
+ data = length 9029, hash D49A1FBC
+ sample 14:
+ time = 633333
+ flags = 0
+ data = length 12198, hash BA7F090B
+ sample 15:
+ time = 800000
+ flags = 0
+ data = length 99669, hash 69FD95FB
+ sample 16:
+ time = 733333
+ flags = 0
+ data = length 35931, hash 7F52D49D
+ sample 17:
+ time = 700000
+ flags = 0
+ data = length 13955, hash 520B5A6A
+ sample 18:
+ time = 766666
+ flags = 0
+ data = length 12407, hash 5326719B
+ sample 19:
+ time = 933333
+ flags = 0
+ data = length 89991, hash A4198F94
+ sample 20:
+ time = 866666
+ flags = 0
+ data = length 25706, hash F2A4B2A4
+ sample 21:
+ time = 833333
+ flags = 0
+ data = length 11924, hash 508042C8
+ sample 22:
+ time = 900000
+ flags = 0
+ data = length 14949, hash 212C7161
+ sample 23:
+ time = 1066666
+ flags = 1
+ data = length 196349, hash 484B3706
+ sample 24:
+ time = 1000000
+ flags = 0
+ data = length 36093, hash 9964470A
+ sample 25:
+ time = 966666
+ flags = 0
+ data = length 9196, hash 124A821F
+ sample 26:
+ time = 1033333
+ flags = 0
+ data = length 11337, hash 2A61C44F
+ sample 27:
+ time = 1200000
+ flags = 0
+ data = length 89197, hash E331760E
+ sample 28:
+ time = 1133333
+ flags = 0
+ data = length 27802, hash 280175A2
+ sample 29:
+ time = 1100000
+ flags = 0
+ data = length 9295, hash 1CC71F4D
+ sample 30:
+ time = 1166666
+ flags = 0
+ data = length 11844, hash 595DBFFA
+ sample 31:
+ time = 1333333
+ flags = 0
+ data = length 78369, hash 958807CA
+ sample 32:
+ time = 1266666
+ flags = 0
+ data = length 28320, hash 8B5DAC6A
+ sample 33:
+ time = 1233333
+ flags = 0
+ data = length 13845, hash 868C5F96
+ sample 34:
+ time = 1300000
+ flags = 0
+ data = length 13734, hash 2BF28058
+ sample 35:
+ time = 1466666
+ flags = 0
+ data = length 60140, hash 4DCE6D29
+ sample 36:
+ time = 1400000
+ flags = 0
+ data = length 28024, hash 2808AC27
+ sample 37:
+ time = 1366666
+ flags = 0
+ data = length 14865, hash DA936298
+ sample 38:
+ time = 1433333
+ flags = 0
+ data = length 15631, hash F11D2528
+ sample 39:
+ time = 1600000
+ flags = 0
+ data = length 59293, hash 1C3296CD
+ sample 40:
+ time = 1533333
+ flags = 0
+ data = length 27545, hash 189E13B8
+ sample 41:
+ time = 1500000
+ flags = 0
+ data = length 14959, hash A47356EF
+ sample 42:
+ time = 1566666
+ flags = 0
+ data = length 15621, hash C391E893
+ sample 43:
+ time = 1733333
+ flags = 0
+ data = length 66112, hash 54A454C4
+ sample 44:
+ time = 1666666
+ flags = 0
+ data = length 33610, hash 4C3F57F2
+ sample 45:
+ time = 1633333
+ flags = 0
+ data = length 13205, hash EC181CA7
+ sample 46:
+ time = 1700000
+ flags = 0
+ data = length 18525, hash 20D8FE9D
+ sample 47:
+ time = 1866666
+ flags = 0
+ data = length 63613, hash B807DB7E
+ sample 48:
+ time = 1800000
+ flags = 0
+ data = length 40816, hash 2D023C8F
+ sample 49:
+ time = 1766666
+ flags = 0
+ data = length 17728, hash B07033B9
+ sample 50:
+ time = 1833333
+ flags = 0
+ data = length 13105, hash 4E3B7245
+ sample 51:
+ time = 2001666
+ flags = 0
+ data = length 54500, hash 88F3013F
+ sample 52:
+ time = 1933333
+ flags = 0
+ data = length 34711, hash 9918D286
+ sample 53:
+ time = 1900000
+ flags = 0
+ data = length 14764, hash CF9044AB
+ sample 54:
+ time = 1968333
+ flags = 0
+ data = length 16517, hash BA27C997
+ sample 55:
+ time = 2135000
+ flags = 1
+ data = length 143217, hash A7D06C3F
+ sample 56:
+ time = 2068333
+ flags = 0
+ data = length 32967, hash E490EDD3
+ sample 57:
+ time = 2035000
+ flags = 0
+ data = length 17445, hash 5F91C2B8
+ sample 58:
+ time = 2101666
+ flags = 0
+ data = length 14638, hash 775110FE
+ sample 59:
+ time = 2268333
+ flags = 0
+ data = length 67665, hash A9A21D87
+ sample 60:
+ time = 2201666
+ flags = 0
+ data = length 32392, hash 7E790D61
+ sample 61:
+ time = 2168333
+ flags = 0
+ data = length 10589, hash 6EB324E3
+ sample 62:
+ time = 2235000
+ flags = 0
+ data = length 18023, hash 29D03684
+ sample 63:
+ time = 2401666
+ flags = 0
+ data = length 67946, hash 8135C195
+ sample 64:
+ time = 2335000
+ flags = 0
+ data = length 41030, hash B6A9208
+ sample 65:
+ time = 2301666
+ flags = 0
+ data = length 15110, hash BF682221
+ sample 66:
+ time = 2368333
+ flags = 0
+ data = length 17245, hash 2BAFA805
+ sample 67:
+ time = 2535000
+ flags = 0
+ data = length 57455, hash 2754BFA0
+ sample 68:
+ time = 2468333
+ flags = 0
+ data = length 37067, hash CCE6C30F
+ sample 69:
+ time = 2435000
+ flags = 0
+ data = length 14098, hash 60A5760F
+ sample 70:
+ time = 2501666
+ flags = 0
+ data = length 20864, hash 94450211
+ sample 71:
+ time = 2668333
+ flags = 0
+ data = length 62871, hash BA53494F
+ sample 72:
+ time = 2601666
+ flags = 0
+ data = length 38596, hash 420335AC
+ sample 73:
+ time = 2568333
+ flags = 0
+ data = length 17584, hash 2E024B02
+ sample 74:
+ time = 2635000
+ flags = 0
+ data = length 18521, hash 7381819A
+ sample 75:
+ time = 2801666
+ flags = 0
+ data = length 54835, hash F45163BF
+ sample 76:
+ time = 2735000
+ flags = 0
+ data = length 29346, hash A57C757F
+ sample 77:
+ time = 2701666
+ flags = 0
+ data = length 15815, hash 1B194C31
+ sample 78:
+ time = 2768333
+ flags = 0
+ data = length 20390, hash A162AAD0
+ sample 79:
+ time = 2935000
+ flags = 0
+ data = length 64262, hash 875514C7
+ sample 80:
+ time = 2868333
+ flags = 0
+ data = length 39953, hash 3884739A
+ sample 81:
+ time = 2835000
+ flags = 0
+ data = length 23136, hash 8AF1C1AD
+ sample 82:
+ time = 2901666
+ flags = 0
+ data = length 26792, hash 3157758F
+ sample 83:
+ time = 3068333
+ flags = 0
+ data = length 62711, hash EF9AC8F5
+ sample 84:
+ time = 3001666
+ flags = 0
+ data = length 33333, hash 567D33D6
+track 2:
+ total output bytes = 45765
+ sample count = 112
+ format 0:
+ averageBitrate = 192000
+ peakBitrate = 192000
+ id = 3
+ containerMimeType = video/mp4
+ sampleMimeType = audio/mp4a-latm
+ codecs = mp4a.40.2
+ channelCount = 2
+ sampleRate = 44100
+ language = und
+ initializationData:
+ data = length 2, hash 5FF
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 802, hash DE7F20AC
+ sample 1:
+ time = 23229
+ flags = 1
+ data = length 457, hash 3F6EF91
+ sample 2:
+ time = 46458
+ flags = 1
+ data = length 439, hash 9EFEF547
+ sample 3:
+ time = 69687
+ flags = 1
+ data = length 425, hash 9E1A2B66
+ sample 4:
+ time = 92916
+ flags = 1
+ data = length 420, hash 7AA38F34
+ sample 5:
+ time = 116145
+ flags = 1
+ data = length 399, hash 919F7E1C
+ sample 6:
+ time = 139375
+ flags = 1
+ data = length 394, hash 4EB03DBE
+ sample 7:
+ time = 162604
+ flags = 1
+ data = length 392, hash C027E340
+ sample 8:
+ time = 185833
+ flags = 1
+ data = length 389, hash F5CA0E30
+ sample 9:
+ time = 209062
+ flags = 1
+ data = length 406, hash C4D75949
+ sample 10:
+ time = 232291
+ flags = 1
+ data = length 418, hash A00CE696
+ sample 11:
+ time = 255520
+ flags = 1
+ data = length 398, hash F05C17A5
+ sample 12:
+ time = 278750
+ flags = 1
+ data = length 399, hash DF5BEB79
+ sample 13:
+ time = 301979
+ flags = 1
+ data = length 391, hash A7717052
+ sample 14:
+ time = 325208
+ flags = 1
+ data = length 413, hash CD16EEE8
+ sample 15:
+ time = 348437
+ flags = 1
+ data = length 417, hash AB8F24B7
+ sample 16:
+ time = 371666
+ flags = 1
+ data = length 420, hash EB187AD9
+ sample 17:
+ time = 394895
+ flags = 1
+ data = length 404, hash C7E2028A
+ sample 18:
+ time = 418125
+ flags = 1
+ data = length 427, hash 960C2672
+ sample 19:
+ time = 441354
+ flags = 1
+ data = length 419, hash 333F12D8
+ sample 20:
+ time = 464583
+ flags = 1
+ data = length 409, hash 14611ACA
+ sample 21:
+ time = 487812
+ flags = 1
+ data = length 397, hash FF7C175F
+ sample 22:
+ time = 511041
+ flags = 1
+ data = length 397, hash 3C41B7F
+ sample 23:
+ time = 534270
+ flags = 1
+ data = length 407, hash E5FD065C
+ sample 24:
+ time = 557500
+ flags = 1
+ data = length 402, hash 4B054010
+ sample 25:
+ time = 580729
+ flags = 1
+ data = length 402, hash A831296A
+ sample 26:
+ time = 603958
+ flags = 1
+ data = length 414, hash A140A593
+ sample 27:
+ time = 627187
+ flags = 1
+ data = length 416, hash 1812B419
+ sample 28:
+ time = 650416
+ flags = 1
+ data = length 399, hash 8365C231
+ sample 29:
+ time = 673645
+ flags = 1
+ data = length 385, hash D661688B
+ sample 30:
+ time = 696875
+ flags = 1
+ data = length 403, hash BC9E5E2E
+ sample 31:
+ time = 720104
+ flags = 1
+ data = length 398, hash 59804AE8
+ sample 32:
+ time = 743333
+ flags = 1
+ data = length 406, hash 3A42B5B7
+ sample 33:
+ time = 766562
+ flags = 1
+ data = length 414, hash 53FA9880
+ sample 34:
+ time = 789791
+ flags = 1
+ data = length 398, hash 8D3ADD23
+ sample 35:
+ time = 813020
+ flags = 1
+ data = length 425, hash C9ADA235
+ sample 36:
+ time = 836250
+ flags = 1
+ data = length 408, hash 3A4EFC47
+ sample 37:
+ time = 859479
+ flags = 1
+ data = length 414, hash 6FED5E60
+ sample 38:
+ time = 882708
+ flags = 1
+ data = length 427, hash 42AC5664
+ sample 39:
+ time = 905937
+ flags = 1
+ data = length 429, hash 62F3725D
+ sample 40:
+ time = 929166
+ flags = 1
+ data = length 403, hash 6C11E259
+ sample 41:
+ time = 952395
+ flags = 1
+ data = length 421, hash 4EF805F6
+ sample 42:
+ time = 975625
+ flags = 1
+ data = length 404, hash 2094740F
+ sample 43:
+ time = 998854
+ flags = 1
+ data = length 426, hash FCF2A593
+ sample 44:
+ time = 1022083
+ flags = 1
+ data = length 423, hash DB09D7F0
+ sample 45:
+ time = 1045312
+ flags = 1
+ data = length 411, hash A4CB44DB
+ sample 46:
+ time = 1068541
+ flags = 1
+ data = length 404, hash 4959B833
+ sample 47:
+ time = 1091770
+ flags = 1
+ data = length 403, hash B5C8DFA1
+ sample 48:
+ time = 1115000
+ flags = 1
+ data = length 422, hash ABE9358F
+ sample 49:
+ time = 1138229
+ flags = 1
+ data = length 418, hash C1914F50
+ sample 50:
+ time = 1161458
+ flags = 1
+ data = length 421, hash 4453B916
+ sample 51:
+ time = 1184687
+ flags = 1
+ data = length 400, hash 73452AD3
+ sample 52:
+ time = 1207916
+ flags = 1
+ data = length 400, hash F094F7B
+ sample 53:
+ time = 1231145
+ flags = 1
+ data = length 410, hash EC5D2BC2
+ sample 54:
+ time = 1254375
+ flags = 1
+ data = length 391, hash 9DC6D32
+ sample 55:
+ time = 1277604
+ flags = 1
+ data = length 361, hash 6612AF76
+ sample 56:
+ time = 1300833
+ flags = 1
+ data = length 391, hash 4B59EFBD
+ sample 57:
+ time = 1324062
+ flags = 1
+ data = length 390, hash 8CB3956F
+ sample 58:
+ time = 1347291
+ flags = 1
+ data = length 388, hash F9B691B9
+ sample 59:
+ time = 1370520
+ flags = 1
+ data = length 399, hash 280948A3
+ sample 60:
+ time = 1393750
+ flags = 1
+ data = length 390, hash 929628B2
+ sample 61:
+ time = 1416979
+ flags = 1
+ data = length 387, hash 56291FF5
+ sample 62:
+ time = 1440208
+ flags = 1
+ data = length 446, hash 2A7FE5FE
+ sample 63:
+ time = 1463437
+ flags = 1
+ data = length 436, hash D872A8A
+ sample 64:
+ time = 1486666
+ flags = 1
+ data = length 394, hash EA791960
+ sample 65:
+ time = 1509895
+ flags = 1
+ data = length 417, hash BEEC2ED0
+ sample 66:
+ time = 1533125
+ flags = 1
+ data = length 442, hash FDFFC29F
+ sample 67:
+ time = 1556354
+ flags = 1
+ data = length 416, hash 2F2ED36F
+ sample 68:
+ time = 1579583
+ flags = 1
+ data = length 396, hash 1CFA7982
+ sample 69:
+ time = 1602812
+ flags = 1
+ data = length 395, hash 2998BEF2
+ sample 70:
+ time = 1626041
+ flags = 1
+ data = length 389, hash AB8EAB86
+ sample 71:
+ time = 1649270
+ flags = 1
+ data = length 404, hash AC927E7
+ sample 72:
+ time = 1672500
+ flags = 1
+ data = length 418, hash 60370BB0
+ sample 73:
+ time = 1695729
+ flags = 1
+ data = length 393, hash 608345FA
+ sample 74:
+ time = 1718958
+ flags = 1
+ data = length 402, hash D478A3DE
+ sample 75:
+ time = 1742187
+ flags = 1
+ data = length 404, hash 98A170D8
+ sample 76:
+ time = 1765416
+ flags = 1
+ data = length 397, hash FE8F519C
+ sample 77:
+ time = 1788645
+ flags = 1
+ data = length 386, hash 4FD184BE
+ sample 78:
+ time = 1811875
+ flags = 1
+ data = length 377, hash 76FBE38F
+ sample 79:
+ time = 1835104
+ flags = 1
+ data = length 409, hash 92C677A9
+ sample 80:
+ time = 1858333
+ flags = 1
+ data = length 402, hash 42CFE9E2
+ sample 81:
+ time = 1881562
+ flags = 1
+ data = length 390, hash A5BF0232
+ sample 82:
+ time = 1904791
+ flags = 1
+ data = length 388, hash 55F742C6
+ sample 83:
+ time = 1928020
+ flags = 1
+ data = length 377, hash 84F8DCDD
+ sample 84:
+ time = 1951250
+ flags = 1
+ data = length 391, hash E20DB9EB
+ sample 85:
+ time = 1974479
+ flags = 1
+ data = length 398, hash 2B8A6B07
+ sample 86:
+ time = 1997708
+ flags = 1
+ data = length 381, hash 8E227E10
+ sample 87:
+ time = 2020937
+ flags = 1
+ data = length 393, hash 1C5EE4DA
+ sample 88:
+ time = 2044166
+ flags = 1
+ data = length 393, hash D37FAB94
+ sample 89:
+ time = 2067395
+ flags = 1
+ data = length 380, hash 61D9B8F1
+ sample 90:
+ time = 2090625
+ flags = 1
+ data = length 395, hash BB9069D0
+ sample 91:
+ time = 2113854
+ flags = 1
+ data = length 379, hash 27A4C8AB
+ sample 92:
+ time = 2137083
+ flags = 1
+ data = length 403, hash 2F93ACAE
+ sample 93:
+ time = 2160312
+ flags = 1
+ data = length 415, hash 51099155
+ sample 94:
+ time = 2183541
+ flags = 1
+ data = length 400, hash EC019A99
+ sample 95:
+ time = 2206770
+ flags = 1
+ data = length 401, hash F42E02C7
+ sample 96:
+ time = 2230000
+ flags = 1
+ data = length 400, hash C8E29F0A
+ sample 97:
+ time = 2253229
+ flags = 1
+ data = length 408, hash B388110C
+ sample 98:
+ time = 2276458
+ flags = 1
+ data = length 406, hash FCFBEFD9
+ sample 99:
+ time = 2299687
+ flags = 1
+ data = length 411, hash 9C60D439
+ sample 100:
+ time = 2322916
+ flags = 1
+ data = length 414, hash 8EECCBD9
+ sample 101:
+ time = 2346145
+ flags = 1
+ data = length 393, hash 9B1317BC
+ sample 102:
+ time = 2369375
+ flags = 1
+ data = length 405, hash 4CBBCFBF
+ sample 103:
+ time = 2392604
+ flags = 1
+ data = length 412, hash A8C3BE09
+ sample 104:
+ time = 2415833
+ flags = 1
+ data = length 409, hash CDDB880D
+ sample 105:
+ time = 2439062
+ flags = 1
+ data = length 423, hash 9F87A5D
+ sample 106:
+ time = 2462291
+ flags = 1
+ data = length 399, hash 6C7043B7
+ sample 107:
+ time = 2485520
+ flags = 1
+ data = length 400, hash 297E775C
+ sample 108:
+ time = 2508750
+ flags = 1
+ data = length 397, hash 5732E5A2
+ sample 109:
+ time = 2531979
+ flags = 1
+ data = length 398, hash 127D1EF3
+ sample 110:
+ time = 2555208
+ flags = 1
+ data = length 424, hash BF76C0EC
+ sample 111:
+ time = 2578437
+ flags = 1
+ data = length 417, hash 761190B8
+tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4.dump b/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4.dump
new file mode 100644
index 0000000000..09fa73d3eb
--- /dev/null
+++ b/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4.dump
@@ -0,0 +1,672 @@
+seekMap:
+ isSeekable = true
+ duration = 1284200
+ getPosition(0) = [[timeUs=0, position=400052]]
+ getPosition(1) = [[timeUs=0, position=400052]]
+ getPosition(642100) = [[timeUs=0, position=400052]]
+ getPosition(1284200) = [[timeUs=0, position=400052]]
+numberOfTracks = 2
+track 0:
+ total output bytes = 3324667
+ sample count = 77
+ track duration = 1284200
+ format 0:
+ averageBitrate = 20711404
+ id = 1
+ containerMimeType = video/mp4
+ sampleMimeType = video/dolby-vision
+ codecs = dvav.09.05
+ maxInputSize = 781952
+ maxNumReorderSamples = 3
+ width = 1920
+ height = 1080
+ frameRate = 59.96
+ colorInfo:
+ lumaBitdepth = 8
+ chromaBitdepth = 8
+ language = und
+ metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000]
+ initializationData:
+ data = length 41, hash CD082D34
+ data = length 8, hash 9481C0CD
+ data = length 24, hash 20B6EE9B
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 781922, hash EAC5ED5A
+ sample 1:
+ time = 83388
+ flags = 0
+ data = length 232985, hash D45F1B0A
+ sample 2:
+ time = 50033
+ flags = 0
+ data = length 11283, hash 4871C6EB
+ sample 3:
+ time = 33355
+ flags = 0
+ data = length 6441, hash 3F9B8083
+ sample 4:
+ time = 16677
+ flags = 0
+ data = length 4525, hash 96F38A16
+ sample 5:
+ time = 66711
+ flags = 0
+ data = length 4081, hash 9A9DE7BD
+ sample 6:
+ time = 216811
+ flags = 0
+ data = length 187842, hash 5422A68E
+ sample 7:
+ time = 150100
+ flags = 0
+ data = length 18122, hash 3FE383BF
+ sample 8:
+ time = 116744
+ flags = 0
+ data = length 10966, hash B66E17B7
+ sample 9:
+ time = 100066
+ flags = 0
+ data = length 3691, hash F0493245
+ sample 10:
+ time = 133422
+ flags = 0
+ data = length 5209, hash 66D450E3
+ sample 11:
+ time = 183455
+ flags = 0
+ data = length 8887, hash 8F62FF72
+ sample 12:
+ time = 166777
+ flags = 0
+ data = length 4421, hash 6F5A2760
+ sample 13:
+ time = 200133
+ flags = 0
+ data = length 4358, hash 819890AF
+ sample 14:
+ time = 333555
+ flags = 0
+ data = length 158508, hash 29421FCA
+ sample 15:
+ time = 283522
+ flags = 0
+ data = length 23465, hash D85A9C2D
+ sample 16:
+ time = 250166
+ flags = 0
+ data = length 11247, hash 78AD566F
+ sample 17:
+ time = 233488
+ flags = 0
+ data = length 4795, hash F176D1A0
+ sample 18:
+ time = 266844
+ flags = 0
+ data = length 5490, hash E03766E6
+ sample 19:
+ time = 316877
+ flags = 0
+ data = length 6721, hash 3043796
+ sample 20:
+ time = 300200
+ flags = 0
+ data = length 6060, hash DE8104BD
+ sample 21:
+ time = 466977
+ flags = 0
+ data = length 195120, hash 8FD2B747
+ sample 22:
+ time = 400266
+ flags = 0
+ data = length 24836, hash C5968564
+ sample 23:
+ time = 366911
+ flags = 0
+ data = length 9890, hash 77347FA9
+ sample 24:
+ time = 350233
+ flags = 0
+ data = length 4362, hash 87FFBB13
+ sample 25:
+ time = 383588
+ flags = 0
+ data = length 4885, hash 45316A9E
+ sample 26:
+ time = 433622
+ flags = 0
+ data = length 9400, hash B3303C68
+ sample 27:
+ time = 416944
+ flags = 0
+ data = length 5342, hash BDC7B122
+ sample 28:
+ time = 450300
+ flags = 0
+ data = length 4136, hash 3961B8BD
+ sample 29:
+ time = 550366
+ flags = 0
+ data = length 189773, hash 1ED63831
+ sample 30:
+ time = 517011
+ flags = 0
+ data = length 10883, hash 39B8EBAF
+ sample 31:
+ time = 500333
+ flags = 0
+ data = length 7259, hash E5048978
+ sample 32:
+ time = 483655
+ flags = 0
+ data = length 4858, hash 16B83C06
+ sample 33:
+ time = 533688
+ flags = 0
+ data = length 5611, hash 6AA28014
+ sample 34:
+ time = 633755
+ flags = 0
+ data = length 226650, hash 84F709AB
+ sample 35:
+ time = 600400
+ flags = 0
+ data = length 10378, hash 34DFFE44
+ sample 36:
+ time = 583722
+ flags = 0
+ data = length 8627, hash 7C06E5C6
+ sample 37:
+ time = 567044
+ flags = 0
+ data = length 6675, hash A031BF31
+ sample 38:
+ time = 617077
+ flags = 0
+ data = length 6097, hash 69DCD00C
+ sample 39:
+ time = 700466
+ flags = 0
+ data = length 187498, hash C9F64D34
+ sample 40:
+ time = 667111
+ flags = 0
+ data = length 8801, hash DADE42B2
+ sample 41:
+ time = 650433
+ flags = 0
+ data = length 5722, hash 58A3AB0E
+ sample 42:
+ time = 683788
+ flags = 0
+ data = length 4173, hash 7D6DA063
+ sample 43:
+ time = 767177
+ flags = 0
+ data = length 183855, hash 996A0D0B
+ sample 44:
+ time = 733822
+ flags = 0
+ data = length 7942, hash 4B02B7FC
+ sample 45:
+ time = 717144
+ flags = 0
+ data = length 5209, hash 692EE1FC
+ sample 46:
+ time = 750500
+ flags = 0
+ data = length 4518, hash 9B71E0F1
+ sample 47:
+ time = 900600
+ flags = 0
+ data = length 171861, hash B873F987
+ sample 48:
+ time = 833888
+ flags = 0
+ data = length 21001, hash 5B0D727A
+ sample 49:
+ time = 800533
+ flags = 0
+ data = length 9532, hash 6932E709
+ sample 50:
+ time = 783855
+ flags = 0
+ data = length 4211, hash F13B567D
+ sample 51:
+ time = 817211
+ flags = 0
+ data = length 4920, hash E21E3458
+ sample 52:
+ time = 867244
+ flags = 0
+ data = length 9167, hash F2EC1662
+ sample 53:
+ time = 850566
+ flags = 0
+ data = length 4212, hash 5976451D
+ sample 54:
+ time = 883922
+ flags = 0
+ data = length 4286, hash 1B2B6FB5
+ sample 55:
+ time = 1034022
+ flags = 0
+ data = length 144185, hash 97A28C82
+ sample 56:
+ time = 967311
+ flags = 0
+ data = length 20741, hash 6374F2D6
+ sample 57:
+ time = 933955
+ flags = 0
+ data = length 8603, hash 188497E7
+ sample 58:
+ time = 917277
+ flags = 0
+ data = length 3727, hash 8385995D
+ sample 59:
+ time = 950633
+ flags = 0
+ data = length 4415, hash 84E1074
+ sample 60:
+ time = 1000666
+ flags = 0
+ data = length 9101, hash DB81A03
+ sample 61:
+ time = 983988
+ flags = 0
+ data = length 4531, hash 605DDD0A
+ sample 62:
+ time = 1017344
+ flags = 0
+ data = length 4201, hash 3919361A
+ sample 63:
+ time = 1134088
+ flags = 0
+ data = length 100876, hash 1BD95B61
+ sample 64:
+ time = 1084055
+ flags = 0
+ data = length 15681, hash FC769391
+ sample 65:
+ time = 1067377
+ flags = 0
+ data = length 6817, hash 8CF14B05
+ sample 66:
+ time = 1050700
+ flags = 0
+ data = length 3927, hash 5BE4D2FC
+ sample 67:
+ time = 1117411
+ flags = 0
+ data = length 5589, hash 1A76E43B
+ sample 68:
+ time = 1100733
+ flags = 0
+ data = length 4350, hash 98211199
+ sample 69:
+ time = 1217477
+ flags = 0
+ data = length 51089, hash 35EC3C41
+ sample 70:
+ time = 1184122
+ flags = 0
+ data = length 14567, hash B15DBDBC
+ sample 71:
+ time = 1167444
+ flags = 0
+ data = length 7552, hash AE195424
+ sample 72:
+ time = 1150766
+ flags = 0
+ data = length 4193, hash 35AB5623
+ sample 73:
+ time = 1200800
+ flags = 0
+ data = length 5423, hash 24FFCED
+ sample 74:
+ time = 1267511
+ flags = 0
+ data = length 16168, hash D6C052C2
+ sample 75:
+ time = 1250833
+ flags = 0
+ data = length 9809, hash D833D9F8
+ sample 76:
+ time = 1234155
+ flags = 536870912
+ data = length 6413, hash 6E770E44
+track 1:
+ total output bytes = 3324667
+ sample count = 77
+ track duration = 1284200
+ format 0:
+ averageBitrate = 20711404
+ id = 2
+ containerMimeType = video/mp4
+ sampleMimeType = video/avc
+ codecs = avc1.64002A
+ maxInputSize = 781952
+ maxNumReorderSamples = 3
+ width = 1920
+ height = 1080
+ frameRate = 59.96
+ colorInfo:
+ lumaBitdepth = 8
+ chromaBitdepth = 8
+ language = und
+ metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000]
+ initializationData:
+ data = length 41, hash CD082D34
+ data = length 8, hash 9481C0CD
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 781922, hash EAC5ED5A
+ sample 1:
+ time = 83388
+ flags = 0
+ data = length 232985, hash D45F1B0A
+ sample 2:
+ time = 50033
+ flags = 0
+ data = length 11283, hash 4871C6EB
+ sample 3:
+ time = 33355
+ flags = 0
+ data = length 6441, hash 3F9B8083
+ sample 4:
+ time = 16677
+ flags = 0
+ data = length 4525, hash 96F38A16
+ sample 5:
+ time = 66711
+ flags = 0
+ data = length 4081, hash 9A9DE7BD
+ sample 6:
+ time = 216811
+ flags = 0
+ data = length 187842, hash 5422A68E
+ sample 7:
+ time = 150100
+ flags = 0
+ data = length 18122, hash 3FE383BF
+ sample 8:
+ time = 116744
+ flags = 0
+ data = length 10966, hash B66E17B7
+ sample 9:
+ time = 100066
+ flags = 0
+ data = length 3691, hash F0493245
+ sample 10:
+ time = 133422
+ flags = 0
+ data = length 5209, hash 66D450E3
+ sample 11:
+ time = 183455
+ flags = 0
+ data = length 8887, hash 8F62FF72
+ sample 12:
+ time = 166777
+ flags = 0
+ data = length 4421, hash 6F5A2760
+ sample 13:
+ time = 200133
+ flags = 0
+ data = length 4358, hash 819890AF
+ sample 14:
+ time = 333555
+ flags = 0
+ data = length 158508, hash 29421FCA
+ sample 15:
+ time = 283522
+ flags = 0
+ data = length 23465, hash D85A9C2D
+ sample 16:
+ time = 250166
+ flags = 0
+ data = length 11247, hash 78AD566F
+ sample 17:
+ time = 233488
+ flags = 0
+ data = length 4795, hash F176D1A0
+ sample 18:
+ time = 266844
+ flags = 0
+ data = length 5490, hash E03766E6
+ sample 19:
+ time = 316877
+ flags = 0
+ data = length 6721, hash 3043796
+ sample 20:
+ time = 300200
+ flags = 0
+ data = length 6060, hash DE8104BD
+ sample 21:
+ time = 466977
+ flags = 0
+ data = length 195120, hash 8FD2B747
+ sample 22:
+ time = 400266
+ flags = 0
+ data = length 24836, hash C5968564
+ sample 23:
+ time = 366911
+ flags = 0
+ data = length 9890, hash 77347FA9
+ sample 24:
+ time = 350233
+ flags = 0
+ data = length 4362, hash 87FFBB13
+ sample 25:
+ time = 383588
+ flags = 0
+ data = length 4885, hash 45316A9E
+ sample 26:
+ time = 433622
+ flags = 0
+ data = length 9400, hash B3303C68
+ sample 27:
+ time = 416944
+ flags = 0
+ data = length 5342, hash BDC7B122
+ sample 28:
+ time = 450300
+ flags = 0
+ data = length 4136, hash 3961B8BD
+ sample 29:
+ time = 550366
+ flags = 0
+ data = length 189773, hash 1ED63831
+ sample 30:
+ time = 517011
+ flags = 0
+ data = length 10883, hash 39B8EBAF
+ sample 31:
+ time = 500333
+ flags = 0
+ data = length 7259, hash E5048978
+ sample 32:
+ time = 483655
+ flags = 0
+ data = length 4858, hash 16B83C06
+ sample 33:
+ time = 533688
+ flags = 0
+ data = length 5611, hash 6AA28014
+ sample 34:
+ time = 633755
+ flags = 0
+ data = length 226650, hash 84F709AB
+ sample 35:
+ time = 600400
+ flags = 0
+ data = length 10378, hash 34DFFE44
+ sample 36:
+ time = 583722
+ flags = 0
+ data = length 8627, hash 7C06E5C6
+ sample 37:
+ time = 567044
+ flags = 0
+ data = length 6675, hash A031BF31
+ sample 38:
+ time = 617077
+ flags = 0
+ data = length 6097, hash 69DCD00C
+ sample 39:
+ time = 700466
+ flags = 0
+ data = length 187498, hash C9F64D34
+ sample 40:
+ time = 667111
+ flags = 0
+ data = length 8801, hash DADE42B2
+ sample 41:
+ time = 650433
+ flags = 0
+ data = length 5722, hash 58A3AB0E
+ sample 42:
+ time = 683788
+ flags = 0
+ data = length 4173, hash 7D6DA063
+ sample 43:
+ time = 767177
+ flags = 0
+ data = length 183855, hash 996A0D0B
+ sample 44:
+ time = 733822
+ flags = 0
+ data = length 7942, hash 4B02B7FC
+ sample 45:
+ time = 717144
+ flags = 0
+ data = length 5209, hash 692EE1FC
+ sample 46:
+ time = 750500
+ flags = 0
+ data = length 4518, hash 9B71E0F1
+ sample 47:
+ time = 900600
+ flags = 0
+ data = length 171861, hash B873F987
+ sample 48:
+ time = 833888
+ flags = 0
+ data = length 21001, hash 5B0D727A
+ sample 49:
+ time = 800533
+ flags = 0
+ data = length 9532, hash 6932E709
+ sample 50:
+ time = 783855
+ flags = 0
+ data = length 4211, hash F13B567D
+ sample 51:
+ time = 817211
+ flags = 0
+ data = length 4920, hash E21E3458
+ sample 52:
+ time = 867244
+ flags = 0
+ data = length 9167, hash F2EC1662
+ sample 53:
+ time = 850566
+ flags = 0
+ data = length 4212, hash 5976451D
+ sample 54:
+ time = 883922
+ flags = 0
+ data = length 4286, hash 1B2B6FB5
+ sample 55:
+ time = 1034022
+ flags = 0
+ data = length 144185, hash 97A28C82
+ sample 56:
+ time = 967311
+ flags = 0
+ data = length 20741, hash 6374F2D6
+ sample 57:
+ time = 933955
+ flags = 0
+ data = length 8603, hash 188497E7
+ sample 58:
+ time = 917277
+ flags = 0
+ data = length 3727, hash 8385995D
+ sample 59:
+ time = 950633
+ flags = 0
+ data = length 4415, hash 84E1074
+ sample 60:
+ time = 1000666
+ flags = 0
+ data = length 9101, hash DB81A03
+ sample 61:
+ time = 983988
+ flags = 0
+ data = length 4531, hash 605DDD0A
+ sample 62:
+ time = 1017344
+ flags = 0
+ data = length 4201, hash 3919361A
+ sample 63:
+ time = 1134088
+ flags = 0
+ data = length 100876, hash 1BD95B61
+ sample 64:
+ time = 1084055
+ flags = 0
+ data = length 15681, hash FC769391
+ sample 65:
+ time = 1067377
+ flags = 0
+ data = length 6817, hash 8CF14B05
+ sample 66:
+ time = 1050700
+ flags = 0
+ data = length 3927, hash 5BE4D2FC
+ sample 67:
+ time = 1117411
+ flags = 0
+ data = length 5589, hash 1A76E43B
+ sample 68:
+ time = 1100733
+ flags = 0
+ data = length 4350, hash 98211199
+ sample 69:
+ time = 1217477
+ flags = 0
+ data = length 51089, hash 35EC3C41
+ sample 70:
+ time = 1184122
+ flags = 0
+ data = length 14567, hash B15DBDBC
+ sample 71:
+ time = 1167444
+ flags = 0
+ data = length 7552, hash AE195424
+ sample 72:
+ time = 1150766
+ flags = 0
+ data = length 4193, hash 35AB5623
+ sample 73:
+ time = 1200800
+ flags = 0
+ data = length 5423, hash 24FFCED
+ sample 74:
+ time = 1267511
+ flags = 0
+ data = length 16168, hash D6C052C2
+ sample 75:
+ time = 1250833
+ flags = 0
+ data = length 9809, hash D833D9F8
+ sample 76:
+ time = 1234155
+ flags = 536870912
+ data = length 6413, hash 6E770E44
+tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4_fragmented.dump b/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4_fragmented.dump
new file mode 100644
index 0000000000..c38ebab68e
--- /dev/null
+++ b/libraries/test_data/src/test/assets/muxerdumps/video_dovi_1920x1080_60fps_dvav_09.mp4_fragmented.dump
@@ -0,0 +1,659 @@
+seekMap:
+ isSeekable = false
+ duration = UNSET TIME
+ getPosition(0) = [[timeUs=0, position=1284]]
+numberOfTracks = 2
+track 0:
+ total output bytes = 3324667
+ sample count = 77
+ format 0:
+ id = 1
+ containerMimeType = video/mp4
+ sampleMimeType = video/dolby-vision
+ codecs = dvav.09.05
+ maxNumReorderSamples = 3
+ width = 1920
+ height = 1080
+ colorInfo:
+ lumaBitdepth = 8
+ chromaBitdepth = 8
+ language = und
+ initializationData:
+ data = length 41, hash CD082D34
+ data = length 8, hash 9481C0CD
+ data = length 24, hash 20B6EE9B
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 781922, hash EAC5ED5A
+ sample 1:
+ time = 83388
+ flags = 0
+ data = length 232985, hash D45F1B0A
+ sample 2:
+ time = 50033
+ flags = 0
+ data = length 11283, hash 4871C6EB
+ sample 3:
+ time = 33355
+ flags = 0
+ data = length 6441, hash 3F9B8083
+ sample 4:
+ time = 16677
+ flags = 0
+ data = length 4525, hash 96F38A16
+ sample 5:
+ time = 66711
+ flags = 0
+ data = length 4081, hash 9A9DE7BD
+ sample 6:
+ time = 216811
+ flags = 0
+ data = length 187842, hash 5422A68E
+ sample 7:
+ time = 150100
+ flags = 0
+ data = length 18122, hash 3FE383BF
+ sample 8:
+ time = 116744
+ flags = 0
+ data = length 10966, hash B66E17B7
+ sample 9:
+ time = 100066
+ flags = 0
+ data = length 3691, hash F0493245
+ sample 10:
+ time = 133422
+ flags = 0
+ data = length 5209, hash 66D450E3
+ sample 11:
+ time = 183455
+ flags = 0
+ data = length 8887, hash 8F62FF72
+ sample 12:
+ time = 166777
+ flags = 0
+ data = length 4421, hash 6F5A2760
+ sample 13:
+ time = 200133
+ flags = 0
+ data = length 4358, hash 819890AF
+ sample 14:
+ time = 333555
+ flags = 0
+ data = length 158508, hash 29421FCA
+ sample 15:
+ time = 283522
+ flags = 0
+ data = length 23465, hash D85A9C2D
+ sample 16:
+ time = 250166
+ flags = 0
+ data = length 11247, hash 78AD566F
+ sample 17:
+ time = 233488
+ flags = 0
+ data = length 4795, hash F176D1A0
+ sample 18:
+ time = 266844
+ flags = 0
+ data = length 5490, hash E03766E6
+ sample 19:
+ time = 316877
+ flags = 0
+ data = length 6721, hash 3043796
+ sample 20:
+ time = 300200
+ flags = 0
+ data = length 6060, hash DE8104BD
+ sample 21:
+ time = 466977
+ flags = 0
+ data = length 195120, hash 8FD2B747
+ sample 22:
+ time = 400266
+ flags = 0
+ data = length 24836, hash C5968564
+ sample 23:
+ time = 366911
+ flags = 0
+ data = length 9890, hash 77347FA9
+ sample 24:
+ time = 350233
+ flags = 0
+ data = length 4362, hash 87FFBB13
+ sample 25:
+ time = 383588
+ flags = 0
+ data = length 4885, hash 45316A9E
+ sample 26:
+ time = 433622
+ flags = 0
+ data = length 9400, hash B3303C68
+ sample 27:
+ time = 416944
+ flags = 0
+ data = length 5342, hash BDC7B122
+ sample 28:
+ time = 450300
+ flags = 0
+ data = length 4136, hash 3961B8BD
+ sample 29:
+ time = 550366
+ flags = 0
+ data = length 189773, hash 1ED63831
+ sample 30:
+ time = 517011
+ flags = 0
+ data = length 10883, hash 39B8EBAF
+ sample 31:
+ time = 500333
+ flags = 0
+ data = length 7259, hash E5048978
+ sample 32:
+ time = 483655
+ flags = 0
+ data = length 4858, hash 16B83C06
+ sample 33:
+ time = 533688
+ flags = 0
+ data = length 5611, hash 6AA28014
+ sample 34:
+ time = 633755
+ flags = 0
+ data = length 226650, hash 84F709AB
+ sample 35:
+ time = 600400
+ flags = 0
+ data = length 10378, hash 34DFFE44
+ sample 36:
+ time = 583722
+ flags = 0
+ data = length 8627, hash 7C06E5C6
+ sample 37:
+ time = 567044
+ flags = 0
+ data = length 6675, hash A031BF31
+ sample 38:
+ time = 617077
+ flags = 0
+ data = length 6097, hash 69DCD00C
+ sample 39:
+ time = 700466
+ flags = 0
+ data = length 187498, hash C9F64D34
+ sample 40:
+ time = 667111
+ flags = 0
+ data = length 8801, hash DADE42B2
+ sample 41:
+ time = 650433
+ flags = 0
+ data = length 5722, hash 58A3AB0E
+ sample 42:
+ time = 683788
+ flags = 0
+ data = length 4173, hash 7D6DA063
+ sample 43:
+ time = 767177
+ flags = 0
+ data = length 183855, hash 996A0D0B
+ sample 44:
+ time = 733822
+ flags = 0
+ data = length 7942, hash 4B02B7FC
+ sample 45:
+ time = 717144
+ flags = 0
+ data = length 5209, hash 692EE1FC
+ sample 46:
+ time = 750500
+ flags = 0
+ data = length 4518, hash 9B71E0F1
+ sample 47:
+ time = 900600
+ flags = 0
+ data = length 171861, hash B873F987
+ sample 48:
+ time = 833888
+ flags = 0
+ data = length 21001, hash 5B0D727A
+ sample 49:
+ time = 800533
+ flags = 0
+ data = length 9532, hash 6932E709
+ sample 50:
+ time = 783855
+ flags = 0
+ data = length 4211, hash F13B567D
+ sample 51:
+ time = 817211
+ flags = 0
+ data = length 4920, hash E21E3458
+ sample 52:
+ time = 867244
+ flags = 0
+ data = length 9167, hash F2EC1662
+ sample 53:
+ time = 850566
+ flags = 0
+ data = length 4212, hash 5976451D
+ sample 54:
+ time = 883922
+ flags = 0
+ data = length 4286, hash 1B2B6FB5
+ sample 55:
+ time = 1034022
+ flags = 0
+ data = length 144185, hash 97A28C82
+ sample 56:
+ time = 967311
+ flags = 0
+ data = length 20741, hash 6374F2D6
+ sample 57:
+ time = 933955
+ flags = 0
+ data = length 8603, hash 188497E7
+ sample 58:
+ time = 917277
+ flags = 0
+ data = length 3727, hash 8385995D
+ sample 59:
+ time = 950633
+ flags = 0
+ data = length 4415, hash 84E1074
+ sample 60:
+ time = 1000666
+ flags = 0
+ data = length 9101, hash DB81A03
+ sample 61:
+ time = 983988
+ flags = 0
+ data = length 4531, hash 605DDD0A
+ sample 62:
+ time = 1017344
+ flags = 0
+ data = length 4201, hash 3919361A
+ sample 63:
+ time = 1134088
+ flags = 0
+ data = length 100876, hash 1BD95B61
+ sample 64:
+ time = 1084055
+ flags = 0
+ data = length 15681, hash FC769391
+ sample 65:
+ time = 1067377
+ flags = 0
+ data = length 6817, hash 8CF14B05
+ sample 66:
+ time = 1050700
+ flags = 0
+ data = length 3927, hash 5BE4D2FC
+ sample 67:
+ time = 1117411
+ flags = 0
+ data = length 5589, hash 1A76E43B
+ sample 68:
+ time = 1100733
+ flags = 0
+ data = length 4350, hash 98211199
+ sample 69:
+ time = 1217477
+ flags = 0
+ data = length 51089, hash 35EC3C41
+ sample 70:
+ time = 1184122
+ flags = 0
+ data = length 14567, hash B15DBDBC
+ sample 71:
+ time = 1167444
+ flags = 0
+ data = length 7552, hash AE195424
+ sample 72:
+ time = 1150766
+ flags = 0
+ data = length 4193, hash 35AB5623
+ sample 73:
+ time = 1200800
+ flags = 0
+ data = length 5423, hash 24FFCED
+ sample 74:
+ time = 1267511
+ flags = 0
+ data = length 16168, hash D6C052C2
+ sample 75:
+ time = 1250833
+ flags = 0
+ data = length 9809, hash D833D9F8
+ sample 76:
+ time = 1234155
+ flags = 0
+ data = length 6413, hash 6E770E44
+track 1:
+ total output bytes = 3324667
+ sample count = 77
+ format 0:
+ id = 2
+ containerMimeType = video/mp4
+ sampleMimeType = video/avc
+ codecs = avc1.64002A
+ maxNumReorderSamples = 3
+ width = 1920
+ height = 1080
+ colorInfo:
+ lumaBitdepth = 8
+ chromaBitdepth = 8
+ language = und
+ initializationData:
+ data = length 41, hash CD082D34
+ data = length 8, hash 9481C0CD
+ sample 0:
+ time = 0
+ flags = 1
+ data = length 781922, hash EAC5ED5A
+ sample 1:
+ time = 83388
+ flags = 0
+ data = length 232985, hash D45F1B0A
+ sample 2:
+ time = 50033
+ flags = 0
+ data = length 11283, hash 4871C6EB
+ sample 3:
+ time = 33355
+ flags = 0
+ data = length 6441, hash 3F9B8083
+ sample 4:
+ time = 16677
+ flags = 0
+ data = length 4525, hash 96F38A16
+ sample 5:
+ time = 66711
+ flags = 0
+ data = length 4081, hash 9A9DE7BD
+ sample 6:
+ time = 216811
+ flags = 0
+ data = length 187842, hash 5422A68E
+ sample 7:
+ time = 150100
+ flags = 0
+ data = length 18122, hash 3FE383BF
+ sample 8:
+ time = 116744
+ flags = 0
+ data = length 10966, hash B66E17B7
+ sample 9:
+ time = 100066
+ flags = 0
+ data = length 3691, hash F0493245
+ sample 10:
+ time = 133422
+ flags = 0
+ data = length 5209, hash 66D450E3
+ sample 11:
+ time = 183455
+ flags = 0
+ data = length 8887, hash 8F62FF72
+ sample 12:
+ time = 166777
+ flags = 0
+ data = length 4421, hash 6F5A2760
+ sample 13:
+ time = 200133
+ flags = 0
+ data = length 4358, hash 819890AF
+ sample 14:
+ time = 333555
+ flags = 0
+ data = length 158508, hash 29421FCA
+ sample 15:
+ time = 283522
+ flags = 0
+ data = length 23465, hash D85A9C2D
+ sample 16:
+ time = 250166
+ flags = 0
+ data = length 11247, hash 78AD566F
+ sample 17:
+ time = 233488
+ flags = 0
+ data = length 4795, hash F176D1A0
+ sample 18:
+ time = 266844
+ flags = 0
+ data = length 5490, hash E03766E6
+ sample 19:
+ time = 316877
+ flags = 0
+ data = length 6721, hash 3043796
+ sample 20:
+ time = 300200
+ flags = 0
+ data = length 6060, hash DE8104BD
+ sample 21:
+ time = 466977
+ flags = 0
+ data = length 195120, hash 8FD2B747
+ sample 22:
+ time = 400266
+ flags = 0
+ data = length 24836, hash C5968564
+ sample 23:
+ time = 366911
+ flags = 0
+ data = length 9890, hash 77347FA9
+ sample 24:
+ time = 350233
+ flags = 0
+ data = length 4362, hash 87FFBB13
+ sample 25:
+ time = 383588
+ flags = 0
+ data = length 4885, hash 45316A9E
+ sample 26:
+ time = 433622
+ flags = 0
+ data = length 9400, hash B3303C68
+ sample 27:
+ time = 416944
+ flags = 0
+ data = length 5342, hash BDC7B122
+ sample 28:
+ time = 450300
+ flags = 0
+ data = length 4136, hash 3961B8BD
+ sample 29:
+ time = 550366
+ flags = 0
+ data = length 189773, hash 1ED63831
+ sample 30:
+ time = 517011
+ flags = 0
+ data = length 10883, hash 39B8EBAF
+ sample 31:
+ time = 500333
+ flags = 0
+ data = length 7259, hash E5048978
+ sample 32:
+ time = 483655
+ flags = 0
+ data = length 4858, hash 16B83C06
+ sample 33:
+ time = 533688
+ flags = 0
+ data = length 5611, hash 6AA28014
+ sample 34:
+ time = 633755
+ flags = 0
+ data = length 226650, hash 84F709AB
+ sample 35:
+ time = 600400
+ flags = 0
+ data = length 10378, hash 34DFFE44
+ sample 36:
+ time = 583722
+ flags = 0
+ data = length 8627, hash 7C06E5C6
+ sample 37:
+ time = 567044
+ flags = 0
+ data = length 6675, hash A031BF31
+ sample 38:
+ time = 617077
+ flags = 0
+ data = length 6097, hash 69DCD00C
+ sample 39:
+ time = 700466
+ flags = 0
+ data = length 187498, hash C9F64D34
+ sample 40:
+ time = 667111
+ flags = 0
+ data = length 8801, hash DADE42B2
+ sample 41:
+ time = 650433
+ flags = 0
+ data = length 5722, hash 58A3AB0E
+ sample 42:
+ time = 683788
+ flags = 0
+ data = length 4173, hash 7D6DA063
+ sample 43:
+ time = 767177
+ flags = 0
+ data = length 183855, hash 996A0D0B
+ sample 44:
+ time = 733822
+ flags = 0
+ data = length 7942, hash 4B02B7FC
+ sample 45:
+ time = 717144
+ flags = 0
+ data = length 5209, hash 692EE1FC
+ sample 46:
+ time = 750500
+ flags = 0
+ data = length 4518, hash 9B71E0F1
+ sample 47:
+ time = 900600
+ flags = 0
+ data = length 171861, hash B873F987
+ sample 48:
+ time = 833888
+ flags = 0
+ data = length 21001, hash 5B0D727A
+ sample 49:
+ time = 800533
+ flags = 0
+ data = length 9532, hash 6932E709
+ sample 50:
+ time = 783855
+ flags = 0
+ data = length 4211, hash F13B567D
+ sample 51:
+ time = 817211
+ flags = 0
+ data = length 4920, hash E21E3458
+ sample 52:
+ time = 867244
+ flags = 0
+ data = length 9167, hash F2EC1662
+ sample 53:
+ time = 850566
+ flags = 0
+ data = length 4212, hash 5976451D
+ sample 54:
+ time = 883922
+ flags = 0
+ data = length 4286, hash 1B2B6FB5
+ sample 55:
+ time = 1034022
+ flags = 0
+ data = length 144185, hash 97A28C82
+ sample 56:
+ time = 967311
+ flags = 0
+ data = length 20741, hash 6374F2D6
+ sample 57:
+ time = 933955
+ flags = 0
+ data = length 8603, hash 188497E7
+ sample 58:
+ time = 917277
+ flags = 0
+ data = length 3727, hash 8385995D
+ sample 59:
+ time = 950633
+ flags = 0
+ data = length 4415, hash 84E1074
+ sample 60:
+ time = 1000666
+ flags = 0
+ data = length 9101, hash DB81A03
+ sample 61:
+ time = 983988
+ flags = 0
+ data = length 4531, hash 605DDD0A
+ sample 62:
+ time = 1017344
+ flags = 0
+ data = length 4201, hash 3919361A
+ sample 63:
+ time = 1134088
+ flags = 0
+ data = length 100876, hash 1BD95B61
+ sample 64:
+ time = 1084055
+ flags = 0
+ data = length 15681, hash FC769391
+ sample 65:
+ time = 1067377
+ flags = 0
+ data = length 6817, hash 8CF14B05
+ sample 66:
+ time = 1050700
+ flags = 0
+ data = length 3927, hash 5BE4D2FC
+ sample 67:
+ time = 1117411
+ flags = 0
+ data = length 5589, hash 1A76E43B
+ sample 68:
+ time = 1100733
+ flags = 0
+ data = length 4350, hash 98211199
+ sample 69:
+ time = 1217477
+ flags = 0
+ data = length 51089, hash 35EC3C41
+ sample 70:
+ time = 1184122
+ flags = 0
+ data = length 14567, hash B15DBDBC
+ sample 71:
+ time = 1167444
+ flags = 0
+ data = length 7552, hash AE195424
+ sample 72:
+ time = 1150766
+ flags = 0
+ data = length 4193, hash 35AB5623
+ sample 73:
+ time = 1200800
+ flags = 0
+ data = length 5423, hash 24FFCED
+ sample 74:
+ time = 1267511
+ flags = 0
+ data = length 16168, hash D6C052C2
+ sample 75:
+ time = 1250833
+ flags = 0
+ data = length 9809, hash D833D9F8
+ sample 76:
+ time = 1234155
+ flags = 0
+ data = length 6413, hash 6E770E44
+tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/dolbyVision-hdr.MOV/transmuxed_with_inappmuxer.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/dolbyVision-hdr.MOV/transmuxed_with_inappmuxer.dump
index 2ffe315288..34fcc2bc3b 100644
--- a/libraries/test_data/src/test/assets/transformerdumps/mp4/dolbyVision-hdr.MOV/transmuxed_with_inappmuxer.dump
+++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/dolbyVision-hdr.MOV/transmuxed_with_inappmuxer.dump
@@ -14,8 +14,8 @@ track 0:
averageBitrate = 2690171
id = 1
containerMimeType = video/mp4
- sampleMimeType = video/hevc
- codecs = hvc1.2.4.L93.B0
+ sampleMimeType = video/dolby-vision
+ codecs = dvhe.08.02
maxInputSize = 30755
maxNumReorderSamples = 2
width = 1280
@@ -33,6 +33,7 @@ track 0:
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=35.000000, mdta: key=com.apple.quicktime.location.ISO6709, value=+51.5334-000.1255+026.756/, mdta: key=com.apple.quicktime.software, value=16.4.1, mdta: key=com.apple.quicktime.creationdate, value=2023-05-09T12:41:46+0100, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 14 Pro, Mp4Timestamp: creation time=3000000000, modification time=4000000000, timescale=10000]
initializationData:
data = length 97, hash 71D67547
+ data = length 24, hash D98F4125
sample 0:
time = 0
flags = 1
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java
index 42488deb5b..dc51cf3532 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java
+++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java
@@ -556,12 +556,8 @@ public class TransformerEndToEndTest {
.build()
.run(testId, editedMediaItem);
- // Rarely, MediaCodec decoders output frames in the wrong order.
- // When the MediaCodec encoder sees frames in the wrong order, fewer output frames are produced.
- // Use a tolerance when comparing frame counts. See b/343476417#comment5.
assertThat(result.exportResult.videoFrameCount)
- .isWithin(2)
- .of(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S.videoFrameCount);
+ .isEqualTo(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S.videoFrameCount);
assertThat(new File(result.filePath).length()).isGreaterThan(0);
}
@@ -587,12 +583,8 @@ public class TransformerEndToEndTest {
.build()
.run(testId, editedMediaItem);
- // Rarely, MediaCodec decoders output frames in the wrong order.
- // When the MediaCodec encoder sees frames in the wrong order, fewer output frames are produced.
- // Use a tolerance when comparing frame counts. See b/343476417#comment5.
assertThat(result.exportResult.videoFrameCount)
- .isWithin(2)
- .of(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S.videoFrameCount);
+ .isEqualTo(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S.videoFrameCount);
assertThat(new File(result.filePath).length()).isGreaterThan(0);
}
@@ -1837,7 +1829,7 @@ public class TransformerEndToEndTest {
}
@Test
- public void dolbyVisionVideo_noEffects_withInAppMuxer_transmuxesToHevc() throws Exception {
+ public void dolbyVisionVideo_noEffects_withInAppMuxer_transmuxesSuccessfully() throws Exception {
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_DOLBY_VISION_HDR.uri)))
.setRemoveAudio(true)
@@ -1855,9 +1847,13 @@ public class TransformerEndToEndTest {
MediaExtractorCompat mediaExtractor = new MediaExtractorCompat(context);
mediaExtractor.setDataSource(Uri.parse(result.filePath), /* offset= */ 0);
- checkState(mediaExtractor.getTrackCount() == 1);
+ checkState(mediaExtractor.getTrackCount() == 2);
MediaFormat mediaFormat = mediaExtractor.getTrackFormat(/* trackIndex= */ 0);
Format format = createFormatFromMediaFormat(mediaFormat);
+ assertThat(format.sampleMimeType).isEqualTo(MimeTypes.VIDEO_DOLBY_VISION);
+ // HEVC track is compatibility track of dolby vision codec.
+ mediaFormat = mediaExtractor.getTrackFormat(/* trackIndex= */ 1);
+ format = createFormatFromMediaFormat(mediaFormat);
assertThat(format.sampleMimeType).isEqualTo(MimeTypes.VIDEO_H265);
assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED);
}