From 6d2059080ba0c48529a6eab4023be3b275ee60a4 Mon Sep 17 00:00:00 2001 From: Rohit Singh Date: Thu, 26 Oct 2023 15:09:04 +0200 Subject: [PATCH] - changes according to review comments - add test data and dumps --- .../main/java/androidx/media3/common/C.java | 72 --- .../java/androidx/media3/common/Format.java | 72 --- .../androidx/media3/extractor/mp4/Atom.java | 25 - .../media3/extractor/mp4/AtomParsers.java | 62 +- .../mp4/FragmentedMp4ExtractorTest.java | 32 + .../extractor/mp4/Mp4ExtractorTest.java | 24 + .../mp4/sample_mhm1_bl_cicp1.mp4.0.dump | 211 +++++++ .../mp4/sample_mhm1_bl_cicp1.mp4.1.dump | 211 +++++++ .../mp4/sample_mhm1_bl_cicp1.mp4.2.dump | 115 ++++ .../mp4/sample_mhm1_bl_cicp1.mp4.3.dump | 115 ++++ ...mple_mhm1_bl_cicp1.mp4.unknown_length.dump | 211 +++++++ ...sample_mhm1_bl_cicp1_fragmented.mp4.0.dump | 206 ++++++ ...l_cicp1_fragmented.mp4.unknown_length.dump | 206 ++++++ .../sample_mhm1_bl_configchange.mp4.0.dump | 595 ++++++++++++++++++ .../sample_mhm1_bl_configchange.mp4.1.dump | 407 ++++++++++++ .../sample_mhm1_bl_configchange.mp4.2.dump | 215 +++++++ .../sample_mhm1_bl_configchange.mp4.3.dump | 107 ++++ ...m1_bl_configchange.mp4.unknown_length.dump | 595 ++++++++++++++++++ ...mhm1_bl_configchange_fragmented.mp4.0.dump | 590 +++++++++++++++++ ...gchange_fragmented.mp4.unknown_length.dump | 590 +++++++++++++++++ .../mp4/sample_mhm1_lcbl_cicp1.mp4.0.dump | 212 +++++++ .../mp4/sample_mhm1_lcbl_cicp1.mp4.1.dump | 212 +++++++ .../mp4/sample_mhm1_lcbl_cicp1.mp4.2.dump | 116 ++++ .../mp4/sample_mhm1_lcbl_cicp1.mp4.3.dump | 116 ++++ ...le_mhm1_lcbl_cicp1.mp4.unknown_length.dump | 212 +++++++ ...mple_mhm1_lcbl_cicp1_fragmented.mp4.0.dump | 207 ++++++ ...l_cicp1_fragmented.mp4.unknown_length.dump | 207 ++++++ .../sample_mhm1_lcbl_configchange.mp4.0.dump | 595 ++++++++++++++++++ .../sample_mhm1_lcbl_configchange.mp4.1.dump | 407 ++++++++++++ .../sample_mhm1_lcbl_configchange.mp4.2.dump | 215 +++++++ .../sample_mhm1_lcbl_configchange.mp4.3.dump | 107 ++++ ..._lcbl_configchange.mp4.unknown_length.dump | 595 ++++++++++++++++++ ...m1_lcbl_configchange_fragmented.mp4.0.dump | 591 +++++++++++++++++ ...gchange_fragmented.mp4.unknown_length.dump | 591 +++++++++++++++++ .../mp4/sample_mpegh_mha1.mp4.0.dump | 1 + .../mp4/sample_mpegh_mha1.mp4.1.dump | 1 + .../mp4/sample_mpegh_mha1.mp4.2.dump | 1 + .../mp4/sample_mpegh_mha1.mp4.3.dump | 1 + .../sample_mpegh_mha1.mp4.unknown_length.dump | 1 + .../mp4/sample_mpegh_mhm1.mp4.0.dump | 2 + .../mp4/sample_mpegh_mhm1.mp4.1.dump | 2 + .../mp4/sample_mpegh_mhm1.mp4.2.dump | 2 + .../mp4/sample_mpegh_mhm1.mp4.3.dump | 2 + .../sample_mpegh_mhm1.mp4.unknown_length.dump | 2 + .../assets/media/mp4/sample_mhm1_bl_cicp1.mp4 | Bin 0 -> 4996 bytes .../mp4/sample_mhm1_bl_cicp1_fragmented.mp4 | Bin 0 -> 5288 bytes .../media/mp4/sample_mhm1_bl_configchange.mp4 | Bin 0 -> 129565 bytes ...sample_mhm1_bl_configchange_fragmented.mp4 | Bin 0 -> 130585 bytes .../media/mp4/sample_mhm1_lcbl_cicp1.mp4 | Bin 0 -> 5031 bytes .../mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4 | Bin 0 -> 5323 bytes .../mp4/sample_mhm1_lcbl_configchange.mp4 | Bin 0 -> 257620 bytes ...mple_mhm1_lcbl_configchange_fragmented.mp4 | Bin 0 -> 130598 bytes 52 files changed, 8850 insertions(+), 209 deletions(-) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1_fragmented.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange_fragmented.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_cicp1.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange.mp4 create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4 diff --git a/libraries/common/src/main/java/androidx/media3/common/C.java b/libraries/common/src/main/java/androidx/media3/common/C.java index f1264fb560..df6736b80a 100644 --- a/libraries/common/src/main/java/androidx/media3/common/C.java +++ b/libraries/common/src/main/java/androidx/media3/common/C.java @@ -1,28 +1,3 @@ -/*************************************************************************** - -Fraunhofer hereby grants to Google free of charge a worldwide, perpetual, -irrevocable, non-exclusive copyright license with the right to sublicense -through multiple tiers to use, copy, distribute, modify and create -derivative works of the Software Patches for Exoplayer in source code form -and/or object code versions of the software. For the avoidance of doubt, -this license does not include any license to any Fraunhofer patents or any -third-party patents. Since the license is granted without any charge, -Fraunhofer provides the Software Patches for Exoplayer, in accordance with -the laws of the Federal Republic of Germany, on an “as is” basis, WITHOUT -WARRANTIES or conditions of any kind, either express or implied, including, -without limitation, any warranties or conditions of title, non-infringement, -merchantability, or fitness for a particular purpose. - -For the purpose of clarity, the provision of the Software Patches for -Exoplayer by Fraunhofer and the use of the same by Google shall be subject -solely to the license stated above. - -This file was originally licensed under the Apache 2.0 license (see license -note below). Fraunhofer has modified this files and provides its copyright -in the modifications to Google under the above terms, which shall not be -considered a contribution under the Apache 2.0 license. - -***************************************************************************/ /* * Copyright (C) 2016 The Android Open Source Project * @@ -1633,51 +1608,4 @@ public final class C { int mediaDrmErrorCode) { return Util.getErrorCodeForMediaDrmErrorCode(mediaDrmErrorCode); } - - @Documented - @Retention(RetentionPolicy.SOURCE) - @IntDef({ - Format.NO_VALUE, - MPEGH_PROFILE_MAIN_L1, - MPEGH_PROFILE_MAIN_L2, - MPEGH_PROFILE_MAIN_L3, - MPEGH_PROFILE_MAIN_L4, - MPEGH_PROFILE_MAIN_L5, - MPEGH_PROFILE_HIGH_L1, - MPEGH_PROFILE_HIGH_L2, - MPEGH_PROFILE_HIGH_L3, - MPEGH_PROFILE_HIGH_L4, - MPEGH_PROFILE_HIGH_L5, - MPEGH_PROFILE_LC_L1, - MPEGH_PROFILE_LC_L2, - MPEGH_PROFILE_LC_L3, - MPEGH_PROFILE_LC_L4, - MPEGH_PROFILE_LC_L5, - MPEGH_PROFILE_BL_L1, - MPEGH_PROFILE_BL_L2, - MPEGH_PROFILE_BL_L3, - MPEGH_PROFILE_BL_L4, - MPEGH_PROFILE_BL_L5 - }) - public @interface MpeghProfileLevelIndication {} - public static final int MPEGH_PROFILE_MAIN_L1 = 1; - public static final int MPEGH_PROFILE_MAIN_L2 = 2; - public static final int MPEGH_PROFILE_MAIN_L3 = 3; - public static final int MPEGH_PROFILE_MAIN_L4 = 4; - public static final int MPEGH_PROFILE_MAIN_L5 = 5; - public static final int MPEGH_PROFILE_HIGH_L1 = 6; - public static final int MPEGH_PROFILE_HIGH_L2 = 7; - public static final int MPEGH_PROFILE_HIGH_L3 = 8; - public static final int MPEGH_PROFILE_HIGH_L4 = 9; - public static final int MPEGH_PROFILE_HIGH_L5 = 10; - public static final int MPEGH_PROFILE_LC_L1 = 11; - public static final int MPEGH_PROFILE_LC_L2 = 12; - public static final int MPEGH_PROFILE_LC_L3 = 13; - public static final int MPEGH_PROFILE_LC_L4 = 14; - public static final int MPEGH_PROFILE_LC_L5 = 15; - public static final int MPEGH_PROFILE_BL_L1 = 16; - public static final int MPEGH_PROFILE_BL_L2 = 17; - public static final int MPEGH_PROFILE_BL_L3 = 18; - public static final int MPEGH_PROFILE_BL_L4 = 19; - public static final int MPEGH_PROFILE_BL_L5 = 20; } diff --git a/libraries/common/src/main/java/androidx/media3/common/Format.java b/libraries/common/src/main/java/androidx/media3/common/Format.java index df3d2a080b..5795a1437b 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Format.java +++ b/libraries/common/src/main/java/androidx/media3/common/Format.java @@ -1,28 +1,3 @@ -/*************************************************************************** - -Fraunhofer hereby grants to Google free of charge a worldwide, perpetual, -irrevocable, non-exclusive copyright license with the right to sublicense -through multiple tiers to use, copy, distribute, modify and create -derivative works of the Software Patches for Exoplayer in source code form -and/or object code versions of the software. For the avoidance of doubt, -this license does not include any license to any Fraunhofer patents or any -third-party patents. Since the license is granted without any charge, -Fraunhofer provides the Software Patches for Exoplayer, in accordance with -the laws of the Federal Republic of Germany, on an “as is” basis, WITHOUT -WARRANTIES or conditions of any kind, either express or implied, including, -without limitation, any warranties or conditions of title, non-infringement, -merchantability, or fitness for a particular purpose. - -For the purpose of clarity, the provision of the Software Patches for -Exoplayer by Fraunhofer and the use of the same by Google shall be subject -solely to the license stated above. - -This file was originally licensed under the Apache 2.0 license (see license -note below). Fraunhofer has modified this files and provides its copyright -in the modifications to Google under the above terms, which shall not be -considered a contribution under the Apache 2.0 license. - -***************************************************************************/ /* * Copyright (C) 2016 The Android Open Source Project * @@ -201,10 +176,6 @@ public final class Format implements Bundleable { private int encoderDelay; private int encoderPadding; - @C.MpeghProfileLevelIndication private int mpeghProfileLevelIndication; - private int mpeghReferenceChannelLayout; - @Nullable @C.MpeghProfileLevelIndication private int[] mpeghCompatibleProfileLevelSet; - // Text specific. private int accessibilityChannel; @@ -236,8 +207,6 @@ public final class Format implements Bundleable { channelCount = NO_VALUE; sampleRate = NO_VALUE; pcmEncoding = NO_VALUE; - mpeghProfileLevelIndication = NO_VALUE; - mpeghReferenceChannelLayout = NO_VALUE; // Text specific. accessibilityChannel = NO_VALUE; cueReplacementBehavior = CUE_REPLACEMENT_BEHAVIOR_MERGE; @@ -286,9 +255,6 @@ public final class Format implements Bundleable { this.pcmEncoding = format.pcmEncoding; this.encoderDelay = format.encoderDelay; this.encoderPadding = format.encoderPadding; - this.mpeghReferenceChannelLayout = format.mpeghReferenceChannelLayout; - this.mpeghProfileLevelIndication = format.mpeghProfileLevelIndication; - this.mpeghCompatibleProfileLevelSet = format.mpeghCompatibleProfileLevelSet; // Text specific. this.accessibilityChannel = format.accessibilityChannel; this.cueReplacementBehavior = format.cueReplacementBehavior; @@ -656,19 +622,6 @@ public final class Format implements Bundleable { return this; } - public Builder setMpeghProfileLevelIndication(@C.MpeghProfileLevelIndication int mpeghProfileLevelIndication) { - this.mpeghProfileLevelIndication = mpeghProfileLevelIndication; - return this; - } - public Builder setMpeghReferenceChannelLayout(int mpeghReferenceChannelLayout) { - this.mpeghReferenceChannelLayout = mpeghReferenceChannelLayout; - return this; - } - public Builder setMpeghCompatibleProfileLevelSet(@Nullable @C.MpeghProfileLevelIndication int[] mpeghCompatibleProfileLevelSet) { - this.mpeghCompatibleProfileLevelSet = mpeghCompatibleProfileLevelSet; - return this; - } - // Text specific. /** @@ -942,10 +895,6 @@ public final class Format implements Bundleable { */ @UnstableApi public final int encoderPadding; - @C.MpeghProfileLevelIndication public final int mpeghProfileLevelIndication; - public final int mpeghReferenceChannelLayout; - @Nullable @C.MpeghProfileLevelIndication public final int[] mpeghCompatibleProfileLevelSet; - // Text specific. /** The Accessibility channel, or {@link #NO_VALUE} if not known or applicable. */ @@ -1016,9 +965,6 @@ public final class Format implements Bundleable { pcmEncoding = builder.pcmEncoding; encoderDelay = builder.encoderDelay == NO_VALUE ? 0 : builder.encoderDelay; encoderPadding = builder.encoderPadding == NO_VALUE ? 0 : builder.encoderPadding; - mpeghProfileLevelIndication = builder.mpeghProfileLevelIndication; - mpeghReferenceChannelLayout = builder.mpeghReferenceChannelLayout; - mpeghCompatibleProfileLevelSet = builder.mpeghCompatibleProfileLevelSet; // Text specific. accessibilityChannel = builder.accessibilityChannel; cueReplacementBehavior = builder.cueReplacementBehavior; @@ -1192,9 +1138,6 @@ public final class Format implements Bundleable { result = 31 * result + pcmEncoding; result = 31 * result + encoderDelay; result = 31 * result + encoderPadding; - result = 31 * result + mpeghProfileLevelIndication; - result = 31 * result + mpeghReferenceChannelLayout; - // [Omitted] mpeghCompatibleProfileLevelSet. // Text specific. result = 31 * result + accessibilityChannel; // Image specific. @@ -1235,9 +1178,6 @@ public final class Format implements Bundleable { && pcmEncoding == other.pcmEncoding && encoderDelay == other.encoderDelay && encoderPadding == other.encoderPadding - && mpeghReferenceChannelLayout == other.mpeghReferenceChannelLayout - && mpeghProfileLevelIndication == other.mpeghProfileLevelIndication - && Util.areEqual(mpeghCompatibleProfileLevelSet, other.mpeghCompatibleProfileLevelSet) && accessibilityChannel == other.accessibilityChannel && tileCountHorizontal == other.tileCountHorizontal && tileCountVertical == other.tileCountVertical @@ -1442,9 +1382,6 @@ public final class Format implements Bundleable { private static final String FIELD_CRYPTO_TYPE = Util.intToStringMaxRadix(29); private static final String FIELD_TILE_COUNT_HORIZONTAL = Util.intToStringMaxRadix(30); private static final String FIELD_TILE_COUNT_VERTICAL = Util.intToStringMaxRadix(31); - private static final String FIELD_MPEGH_PROFILE_LEVEL_INDICATION = Util.intToStringMaxRadix(32); - private static final String FIELD_MPEGH_REFERENCE_CHANNEL_LAYOUT = Util.intToStringMaxRadix(33); - private static final String FIELD_MPEGH_COMPATIBLE_PROFILE_LEVEL_SET = Util.intToStringMaxRadix(34); @UnstableApi @Override @@ -1500,9 +1437,6 @@ public final class Format implements Bundleable { bundle.putInt(FIELD_PCM_ENCODING, pcmEncoding); bundle.putInt(FIELD_ENCODER_DELAY, encoderDelay); bundle.putInt(FIELD_ENCODER_PADDING, encoderPadding); - bundle.putInt(FIELD_MPEGH_PROFILE_LEVEL_INDICATION, mpeghProfileLevelIndication); - bundle.putInt(FIELD_MPEGH_REFERENCE_CHANNEL_LAYOUT, mpeghReferenceChannelLayout); - bundle.putIntArray(FIELD_MPEGH_COMPATIBLE_PROFILE_LEVEL_SET, mpeghCompatibleProfileLevelSet); // Text specific. bundle.putInt(FIELD_ACCESSIBILITY_CHANNEL, accessibilityChannel); // Image specific. @@ -1578,12 +1512,6 @@ public final class Format implements Bundleable { .setPcmEncoding(bundle.getInt(FIELD_PCM_ENCODING, DEFAULT.pcmEncoding)) .setEncoderDelay(bundle.getInt(FIELD_ENCODER_DELAY, DEFAULT.encoderDelay)) .setEncoderPadding(bundle.getInt(FIELD_ENCODER_PADDING, DEFAULT.encoderPadding)) - .setMpeghProfileLevelIndication( - bundle.getInt(FIELD_MPEGH_PROFILE_LEVEL_INDICATION, DEFAULT.mpeghProfileLevelIndication)) - .setMpeghReferenceChannelLayout( - bundle.getInt(FIELD_MPEGH_REFERENCE_CHANNEL_LAYOUT, DEFAULT.mpeghReferenceChannelLayout)) - .setMpeghCompatibleProfileLevelSet( - bundle.getIntArray(FIELD_MPEGH_COMPATIBLE_PROFILE_LEVEL_SET)) // Text specific. .setAccessibilityChannel( bundle.getInt(FIELD_ACCESSIBILITY_CHANNEL, DEFAULT.accessibilityChannel)) diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Atom.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Atom.java index d9e5bdb292..c5daea2a6d 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Atom.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Atom.java @@ -1,28 +1,3 @@ -/*************************************************************************** - -Fraunhofer hereby grants to Google free of charge a worldwide, perpetual, -irrevocable, non-exclusive copyright license with the right to sublicense -through multiple tiers to use, copy, distribute, modify and create -derivative works of the Software Patches for Exoplayer in source code form -and/or object code versions of the software. For the avoidance of doubt, -this license does not include any license to any Fraunhofer patents or any -third-party patents. Since the license is granted without any charge, -Fraunhofer provides the Software Patches for Exoplayer, in accordance with -the laws of the Federal Republic of Germany, on an “as is” basis, WITHOUT -WARRANTIES or conditions of any kind, either express or implied, including, -without limitation, any warranties or conditions of title, non-infringement, -merchantability, or fitness for a particular purpose. - -For the purpose of clarity, the provision of the Software Patches for -Exoplayer by Fraunhofer and the use of the same by Google shall be subject -solely to the license stated above. - -This file was originally licensed under the Apache 2.0 license (see license -note below). Fraunhofer has modified this files and provides its copyright -in the modifications to Google under the above terms, which shall not be -considered a contribution under the Apache 2.0 license. - -***************************************************************************/ /* * Copyright (C) 2016 The Android Open Source Project * diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/AtomParsers.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/AtomParsers.java index 2f4e581c1f..d4aa7517ba 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/AtomParsers.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/AtomParsers.java @@ -1,28 +1,3 @@ -/*************************************************************************** - -Fraunhofer hereby grants to Google free of charge a worldwide, perpetual, -irrevocable, non-exclusive copyright license with the right to sublicense -through multiple tiers to use, copy, distribute, modify and create -derivative works of the Software Patches for Exoplayer in source code form -and/or object code versions of the software. For the avoidance of doubt, -this license does not include any license to any Fraunhofer patents or any -third-party patents. Since the license is granted without any charge, -Fraunhofer provides the Software Patches for Exoplayer, in accordance with -the laws of the Federal Republic of Germany, on an “as is” basis, WITHOUT -WARRANTIES or conditions of any kind, either express or implied, including, -without limitation, any warranties or conditions of title, non-infringement, -merchantability, or fitness for a particular purpose. - -For the purpose of clarity, the provision of the Software Patches for -Exoplayer by Fraunhofer and the use of the same by Google shall be subject -solely to the license stated above. - -This file was originally licensed under the Apache 2.0 license (see license -note below). Fraunhofer has modified this files and provides its copyright -in the modifications to Google under the above terms, which shall not be -considered a contribution under the Apache 2.0 license. - -***************************************************************************/ /* * Copyright (C) 2016 The Android Open Source Project * @@ -1623,9 +1598,6 @@ import java.util.List; int sampleRateMlp = 0; @C.PcmEncoding int pcmEncoding = Format.NO_VALUE; @Nullable String codecs = null; - @C.MpeghProfileLevelIndication int mpeghProfileLevelIndication = Format.NO_VALUE; - int mpeghReferenceChannelLayout = Format.NO_VALUE; - @Nullable @C.MpeghProfileLevelIndication int[] mpeghCompatibleProfileLevelSet = null; @Nullable EsdsData esdsData = null; if (quickTimeSoundDescriptionVersion == 0 || quickTimeSoundDescriptionVersion == 1) { @@ -1754,27 +1726,40 @@ import java.util.List; int mhacHeaderSize = 13; parent.setPosition(childPosition + Atom.HEADER_SIZE); int configurationVersion = parent.readUnsignedByte(); - mpeghProfileLevelIndication = parent.readUnsignedByte(); - mpeghReferenceChannelLayout = parent.readUnsignedByte(); + int mpeghProfileLevelIndication = parent.readUnsignedByte(); + int mpeghReferenceChannelLayout = parent.readUnsignedByte(); if (mimeType.equals(MimeTypes.AUDIO_MPEGH_MHM1)) { - codecs = String.format("mhm1.0x%02X", mpeghProfileLevelIndication); + codecs = String.format("mhm1.%02X", mpeghProfileLevelIndication); } else { - codecs = String.format("mha1.0x%02X", mpeghProfileLevelIndication); + codecs = String.format("mha1.%02X", mpeghProfileLevelIndication); } int mpegh3daConfigLength = parent.readUnsignedShort(); byte[] initializationDataBytes = new byte[mpegh3daConfigLength]; parent.readBytes(initializationDataBytes, 0, mpegh3daConfigLength); - initializationData = ImmutableList.of(initializationDataBytes); + // The mpegh3daConfig should always be the first entry in initializationData. + if (initializationData == null) { + initializationData = ImmutableList.of(initializationDataBytes); + } else { + // We assume that the mhaP box has been parsed before and add the compatible profile level + // sets as the second entry. + initializationData = ImmutableList.of(initializationDataBytes, initializationData.get(0)); + } } else if (childAtomType == Atom.TYPE_mhaP) { // See ISO_IEC_23008-3;2022 MHAProfileAndLevelCompatibilitySetBox // The header consists of: size (4), boxtype 'mhaP' (4), numCompatibleSets (1). int mhapHeaderSize = 9; parent.setPosition(childPosition + Atom.HEADER_SIZE); - int numCompatibleSets = parent.readUnsignedByte(); + int numCompatibleSets = parent.readUnsignedByte(); if (numCompatibleSets > 0) { - mpeghCompatibleProfileLevelSet = new int[numCompatibleSets]; - for (int i = 0; i < numCompatibleSets; i++) { - mpeghCompatibleProfileLevelSet[i] = parent.readUnsignedByte(); + byte[] mpeghCompatibleProfileLevelSet = new byte[numCompatibleSets]; + parent.readBytes(mpeghCompatibleProfileLevelSet, 0, numCompatibleSets); + if (initializationData == null) { + initializationData = ImmutableList.of(mpeghCompatibleProfileLevelSet); + } else { + // We assume that the mhaC box has been parsed before and add the compatible profile + // level sets as the second entry. + initializationData = + ImmutableList.of(initializationData.get(0), mpeghCompatibleProfileLevelSet); } } } else if (childAtomType == Atom.TYPE_esds @@ -1883,9 +1868,6 @@ import java.util.List; .setPcmEncoding(pcmEncoding) .setInitializationData(initializationData) .setDrmInitData(drmInitData) - .setMpeghProfileLevelIndication(mpeghProfileLevelIndication) - .setMpeghReferenceChannelLayout(mpeghReferenceChannelLayout) - .setMpeghCompatibleProfileLevelSet(mpeghCompatibleProfileLevelSet) .setLanguage(language); if (esdsData != null) { diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorTest.java index 269ac4291c..ca42f0b1cc 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorTest.java @@ -131,6 +131,38 @@ public final class FragmentedMp4ExtractorTest { simulationConfig); } + @Test + public void sampleWithMhm1BlCicp1Track() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(ImmutableList.of()), + "media/mp4/sample_mhm1_bl_cicp1_fragmented.mp4", + simulationConfig); + } + + @Test + public void sampleWithMhm1LcblCicp1Track() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(ImmutableList.of()), + "media/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4", + simulationConfig); + } + + @Test + public void sampleWithMhm1BlConfigChangeTrack() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(ImmutableList.of()), + "media/mp4/sample_mhm1_bl_configchange_fragmented.mp4", + simulationConfig); + } + + @Test + public void sampleWithMhm1LcblConfigChangeTrack() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(ImmutableList.of()), + "media/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4", + simulationConfig); + } + private static ExtractorFactory getExtractorFactory(final List closedCaptionFormats) { return () -> new FragmentedMp4Extractor( diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorTest.java index 4a52f2bbb8..6cd7f22563 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorTest.java @@ -140,4 +140,28 @@ public final class Mp4ExtractorTest { ExtractorAsserts.assertBehavior( Mp4Extractor::new, "media/mp4/sample_with_av1c.mp4", simulationConfig); } + + @Test + public void mp4SampleWithMhm1BlCicp1Track() throws Exception { + ExtractorAsserts.assertBehavior( + Mp4Extractor::new, "media/mp4/sample_mhm1_bl_cicp1.mp4", simulationConfig); + } + + @Test + public void mp4SampleWithMhm1LcBlCicp1Track() throws Exception { + ExtractorAsserts.assertBehavior( + Mp4Extractor::new, "media/mp4/sample_mhm1_lcbl_cicp1.mp4", simulationConfig); + } + + @Test + public void mp4SampleWithMhm1BlConfigChangeTrack() throws Exception { + ExtractorAsserts.assertBehavior( + Mp4Extractor::new, "media/mp4/sample_mhm1_bl_configchange.mp4", simulationConfig); + } + + @Test + public void mp4SampleWithMhm1LcBlConfigChangeTrack() throws Exception { + ExtractorAsserts.assertBehavior( + Mp4Extractor::new, "media/mp4/sample_mhm1_lcbl_configchange.mp4", simulationConfig); + } } diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.0.dump new file mode 100644 index 0000000000..061238c48d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.0.dump @@ -0,0 +1,211 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=826]] + getPosition(1) = [[timeUs=1, position=826]] + getPosition(500000) = [[timeUs=500000, position=826]] + getPosition(1000000) = [[timeUs=1000000, position=3054]] +numberOfTracks = 1 +track 0: + total output bytes = 4170 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 365 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189787000] + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 0 + flags = 1 + data = length 335, hash 8D9A8041 + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash FB7243AF + sample 13: + time = 277333 + flags = 0 + data = length 80, hash 284BFE1 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash CB614574 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash F97A6A30 + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB636 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0CD + sample 21: + time = 448000 + flags = 0 + data = length 78, hash 8BA25136 + sample 22: + time = 469333 + flags = 0 + data = length 79, hash 4FEDABA0 + sample 23: + time = 490666 + flags = 0 + data = length 82, hash 7C80BC82 + sample 24: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 26: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 27: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 28: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 29: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 30: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 31: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 32: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 33: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 34: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 35: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 36: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 37: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 38: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 40: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 41: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 42: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 43: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 44: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 45: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 46: + time = 981333 + flags = 536870912 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.1.dump new file mode 100644 index 0000000000..061238c48d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.1.dump @@ -0,0 +1,211 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=826]] + getPosition(1) = [[timeUs=1, position=826]] + getPosition(500000) = [[timeUs=500000, position=826]] + getPosition(1000000) = [[timeUs=1000000, position=3054]] +numberOfTracks = 1 +track 0: + total output bytes = 4170 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 365 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189787000] + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 0 + flags = 1 + data = length 335, hash 8D9A8041 + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash FB7243AF + sample 13: + time = 277333 + flags = 0 + data = length 80, hash 284BFE1 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash CB614574 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash F97A6A30 + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB636 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0CD + sample 21: + time = 448000 + flags = 0 + data = length 78, hash 8BA25136 + sample 22: + time = 469333 + flags = 0 + data = length 79, hash 4FEDABA0 + sample 23: + time = 490666 + flags = 0 + data = length 82, hash 7C80BC82 + sample 24: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 26: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 27: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 28: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 29: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 30: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 31: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 32: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 33: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 34: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 35: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 36: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 37: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 38: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 40: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 41: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 42: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 43: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 44: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 45: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 46: + time = 981333 + flags = 536870912 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.2.dump new file mode 100644 index 0000000000..c970e640e5 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.2.dump @@ -0,0 +1,115 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=826]] + getPosition(1) = [[timeUs=1, position=826]] + getPosition(500000) = [[timeUs=500000, position=826]] + getPosition(1000000) = [[timeUs=1000000, position=3054]] +numberOfTracks = 1 +track 0: + total output bytes = 1942 + sample count = 23 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 365 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189787000] + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 1: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 2: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 3: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 4: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 5: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 6: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 7: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 8: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 9: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 10: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 11: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 12: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 13: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 14: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 15: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 16: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 17: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 18: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 19: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 20: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 21: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 22: + time = 981333 + flags = 536870912 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.3.dump new file mode 100644 index 0000000000..c970e640e5 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.3.dump @@ -0,0 +1,115 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=826]] + getPosition(1) = [[timeUs=1, position=826]] + getPosition(500000) = [[timeUs=500000, position=826]] + getPosition(1000000) = [[timeUs=1000000, position=3054]] +numberOfTracks = 1 +track 0: + total output bytes = 1942 + sample count = 23 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 365 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189787000] + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 1: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 2: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 3: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 4: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 5: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 6: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 7: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 8: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 9: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 10: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 11: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 12: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 13: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 14: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 15: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 16: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 17: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 18: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 19: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 20: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 21: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 22: + time = 981333 + flags = 536870912 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.unknown_length.dump new file mode 100644 index 0000000000..061238c48d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1.mp4.unknown_length.dump @@ -0,0 +1,211 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=826]] + getPosition(1) = [[timeUs=1, position=826]] + getPosition(500000) = [[timeUs=500000, position=826]] + getPosition(1000000) = [[timeUs=1000000, position=3054]] +numberOfTracks = 1 +track 0: + total output bytes = 4170 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 365 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189787000] + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 0 + flags = 1 + data = length 335, hash 8D9A8041 + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash FB7243AF + sample 13: + time = 277333 + flags = 0 + data = length 80, hash 284BFE1 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash CB614574 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash F97A6A30 + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB636 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0CD + sample 21: + time = 448000 + flags = 0 + data = length 78, hash 8BA25136 + sample 22: + time = 469333 + flags = 0 + data = length 79, hash 4FEDABA0 + sample 23: + time = 490666 + flags = 0 + data = length 82, hash 7C80BC82 + sample 24: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 26: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 27: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 28: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 29: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 30: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 31: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 32: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 33: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 34: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 35: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 36: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 37: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 38: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 40: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 41: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 42: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 43: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 44: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 45: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 46: + time = 981333 + flags = 536870912 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.0.dump new file mode 100644 index 0000000000..704d95fa53 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.0.dump @@ -0,0 +1,206 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=634]] +numberOfTracks = 1 +track 0: + total output bytes = 4170 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 0 + flags = 1 + data = length 335, hash 8D9A8041 + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash FB7243AF + sample 13: + time = 277333 + flags = 0 + data = length 80, hash 284BFE1 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash CB614574 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash F97A6A30 + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB636 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0CD + sample 21: + time = 448000 + flags = 0 + data = length 78, hash 8BA25136 + sample 22: + time = 469333 + flags = 0 + data = length 79, hash 4FEDABA0 + sample 23: + time = 490666 + flags = 0 + data = length 82, hash 7C80BC82 + sample 24: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 26: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 27: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 28: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 29: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 30: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 31: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 32: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 33: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 34: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 35: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 36: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 37: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 38: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 40: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 41: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 42: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 43: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 44: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 45: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 46: + time = 981333 + flags = 0 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.unknown_length.dump new file mode 100644 index 0000000000..704d95fa53 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_cicp1_fragmented.mp4.unknown_length.dump @@ -0,0 +1,206 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=634]] +numberOfTracks = 1 +track 0: + total output bytes = 4170 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 60, hash C05CBBFC + sample 0: + time = 0 + flags = 1 + data = length 335, hash 8D9A8041 + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash FB7243AF + sample 13: + time = 277333 + flags = 0 + data = length 80, hash 284BFE1 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash CB614574 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash F97A6A30 + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB636 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0CD + sample 21: + time = 448000 + flags = 0 + data = length 78, hash 8BA25136 + sample 22: + time = 469333 + flags = 0 + data = length 79, hash 4FEDABA0 + sample 23: + time = 490666 + flags = 0 + data = length 82, hash 7C80BC82 + sample 24: + time = 512000 + flags = 1 + data = length 320, hash 9FA4C955 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash 7349D247 + sample 26: + time = 554666 + flags = 0 + data = length 76, hash 63335304 + sample 27: + time = 576000 + flags = 0 + data = length 69, hash 5BA9463B + sample 28: + time = 597333 + flags = 0 + data = length 77, hash 14939B8E + sample 29: + time = 618666 + flags = 0 + data = length 73, hash 7CB696EC + sample 30: + time = 640000 + flags = 0 + data = length 62, hash 60D8A635 + sample 31: + time = 661333 + flags = 0 + data = length 81, hash 2930186C + sample 32: + time = 682666 + flags = 0 + data = length 73, hash 98B39B7B + sample 33: + time = 704000 + flags = 0 + data = length 69, hash F8554057 + sample 34: + time = 725333 + flags = 0 + data = length 79, hash D4207851 + sample 35: + time = 746666 + flags = 0 + data = length 74, hash 29F4B7BA + sample 36: + time = 768000 + flags = 0 + data = length 68, hash 54023ACC + sample 37: + time = 789333 + flags = 0 + data = length 79, hash 2212A7FE + sample 38: + time = 810666 + flags = 0 + data = length 74, hash 29F4B7B9 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 8156AB6 + sample 40: + time = 853333 + flags = 0 + data = length 79, hash 37CA8B53 + sample 41: + time = 874666 + flags = 0 + data = length 74, hash E4ACCCD7 + sample 42: + time = 896000 + flags = 0 + data = length 69, hash F8554081 + sample 43: + time = 917333 + flags = 0 + data = length 79, hash FEEC61CE + sample 44: + time = 938666 + flags = 0 + data = length 74, hash 71B4C816 + sample 45: + time = 960000 + flags = 0 + data = length 81, hash 74B27A40 + sample 46: + time = 981333 + flags = 0 + data = length 66, hash 2E45BE0D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.0.dump new file mode 100644 index 0000000000..fb61fab254 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.0.dump @@ -0,0 +1,595 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=13281]] + getPosition(3000000) = [[timeUs=3000000, position=118721]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 2078 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189743000] + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 0 + flags = 1 + data = length 485, hash 8E663C03 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 491, hash E4A095D9 + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 134, hash E78A2560 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 140, hash 554CB5DF + sample 41: + time = 874666 + flags = 0 + data = length 119, hash 2C238137 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 2223D99B + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 201, hash 8F3FC720 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 52B16452 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash D2337230 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CB73C51D + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 536870912 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.1.dump new file mode 100644 index 0000000000..cc10b5e943 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.1.dump @@ -0,0 +1,407 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=13281]] + getPosition(3000000) = [[timeUs=3000000, position=118721]] +numberOfTracks = 1 +track 0: + total output bytes = 120119 + sample count = 96 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 2078 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189743000] + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 1000000 + flags = 1 + data = length 1889, hash 52B16452 + sample 1: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 2: + time = 1024000 + flags = 1 + data = length 1943, hash D2337230 + sample 3: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 4: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 5: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 6: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 7: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 8: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 9: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 10: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 11: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 12: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 13: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 14: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 15: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 16: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 17: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 18: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 19: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 20: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 21: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 22: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 23: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 24: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 25: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 26: + time = 1536000 + flags = 1 + data = length 2045, hash CB73C51D + sample 27: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 28: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 29: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 30: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 31: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 32: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 33: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 34: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 35: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 36: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 37: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 38: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 39: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 40: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 41: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 42: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 43: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 44: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 45: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 46: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 47: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 48: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 49: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 50: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 51: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 52: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 53: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 54: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 55: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 56: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 57: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 58: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 59: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 60: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 61: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 62: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 63: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 64: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 65: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 66: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 67: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 68: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 69: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 70: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 71: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 72: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 73: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 74: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 75: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 76: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 77: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 78: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 79: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 80: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 81: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 82: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 83: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 84: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 85: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 86: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 87: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 88: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 89: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 90: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 91: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 92: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 93: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 94: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 95: + time = 2986666 + flags = 536870912 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.2.dump new file mode 100644 index 0000000000..2e022c6246 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.2.dump @@ -0,0 +1,215 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=13281]] + getPosition(3000000) = [[timeUs=3000000, position=118721]] +numberOfTracks = 1 +track 0: + total output bytes = 23874 + sample count = 48 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 2078 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189743000] + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 1: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 2: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 3: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 4: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 5: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 6: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 7: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 8: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 9: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 10: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 11: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 12: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 13: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 14: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 15: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 16: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 17: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 18: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 19: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 20: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 21: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 22: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 23: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 24: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 25: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 26: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 27: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 28: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 29: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 30: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 31: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 32: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 33: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 34: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 35: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 36: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 37: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 38: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 39: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 40: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 41: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 42: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 43: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 44: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 45: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 46: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 47: + time = 2986666 + flags = 536870912 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.3.dump new file mode 100644 index 0000000000..6d68e91793 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.3.dump @@ -0,0 +1,107 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=13281]] + getPosition(3000000) = [[timeUs=3000000, position=118721]] +numberOfTracks = 1 +track 0: + total output bytes = 10844 + sample count = 21 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 2078 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189743000] + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 1: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 2: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 3: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 4: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 5: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 6: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 7: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 8: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 9: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 10: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 11: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 12: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 13: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 14: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 15: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 16: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 17: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 18: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 19: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 20: + time = 2986666 + flags = 536870912 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.unknown_length.dump new file mode 100644 index 0000000000..fb61fab254 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange.mp4.unknown_length.dump @@ -0,0 +1,595 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=13281]] + getPosition(3000000) = [[timeUs=3000000, position=118721]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 2078 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189743000] + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 0 + flags = 1 + data = length 485, hash 8E663C03 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 491, hash E4A095D9 + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 134, hash E78A2560 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 140, hash 554CB5DF + sample 41: + time = 874666 + flags = 0 + data = length 119, hash 2C238137 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 2223D99B + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 201, hash 8F3FC720 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 52B16452 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash D2337230 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CB73C51D + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 536870912 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.0.dump new file mode 100644 index 0000000000..6d9d17feb0 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.0.dump @@ -0,0 +1,590 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=638]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 0 + flags = 1 + data = length 485, hash 8E663C03 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 491, hash E4A095D9 + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 134, hash E78A2560 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 140, hash 554CB5DF + sample 41: + time = 874666 + flags = 0 + data = length 119, hash 2C238137 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 2223D99B + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 201, hash 8F3FC720 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 52B16452 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash D2337230 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CB73C51D + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 0 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.unknown_length.dump new file mode 100644 index 0000000000..6d9d17feb0 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_bl_configchange_fragmented.mp4.unknown_length.dump @@ -0,0 +1,590 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=638]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 64, hash DB1F936C + sample 0: + time = 0 + flags = 1 + data = length 485, hash 8E663C03 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 491, hash E4A095D9 + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 134, hash E78A2560 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 140, hash 554CB5DF + sample 41: + time = 874666 + flags = 0 + data = length 119, hash 2C238137 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 2223D99B + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 201, hash 8F3FC720 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 52B16452 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash D2337230 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CB73C51D + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 744, hash 5DDA64AA + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 811, hash 8342FA71 + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 481, hash 7A8A4708 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 814, hash 34823CE2 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 423, hash 390144D7 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 0 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.0.dump new file mode 100644 index 0000000000..302fda3a31 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.0.dump @@ -0,0 +1,212 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=839]] + getPosition(1) = [[timeUs=1, position=839]] + getPosition(500000) = [[timeUs=500000, position=839]] + getPosition(1000000) = [[timeUs=1000000, position=3063]] +numberOfTracks = 1 +track 0: + total output bytes = 4192 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + maxInputSize = 368 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189788000] + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 338, hash B319817B + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash A0154CE2 + sample 13: + time = 277333 + flags = 0 + data = length 80, hash E37A5065 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash 653631D3 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash FCDBFDFB + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB637 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C8 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0D9 + sample 21: + time = 448000 + flags = 0 + data = length 70, hash FB797ACC + sample 22: + time = 469333 + flags = 0 + data = length 81, hash 3B32D906 + sample 23: + time = 490666 + flags = 0 + data = length 81, hash 590B7E40 + sample 24: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 26: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 27: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 28: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 29: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 30: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 31: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 32: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 33: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 34: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 35: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 36: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 37: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 38: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 40: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 41: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 42: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 43: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 44: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 45: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 46: + time = 981333 + flags = 536870912 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.1.dump new file mode 100644 index 0000000000..302fda3a31 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.1.dump @@ -0,0 +1,212 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=839]] + getPosition(1) = [[timeUs=1, position=839]] + getPosition(500000) = [[timeUs=500000, position=839]] + getPosition(1000000) = [[timeUs=1000000, position=3063]] +numberOfTracks = 1 +track 0: + total output bytes = 4192 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + maxInputSize = 368 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189788000] + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 338, hash B319817B + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash A0154CE2 + sample 13: + time = 277333 + flags = 0 + data = length 80, hash E37A5065 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash 653631D3 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash FCDBFDFB + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB637 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C8 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0D9 + sample 21: + time = 448000 + flags = 0 + data = length 70, hash FB797ACC + sample 22: + time = 469333 + flags = 0 + data = length 81, hash 3B32D906 + sample 23: + time = 490666 + flags = 0 + data = length 81, hash 590B7E40 + sample 24: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 26: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 27: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 28: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 29: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 30: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 31: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 32: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 33: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 34: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 35: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 36: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 37: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 38: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 40: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 41: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 42: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 43: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 44: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 45: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 46: + time = 981333 + flags = 536870912 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.2.dump new file mode 100644 index 0000000000..fdc89c6f62 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.2.dump @@ -0,0 +1,116 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=839]] + getPosition(1) = [[timeUs=1, position=839]] + getPosition(500000) = [[timeUs=500000, position=839]] + getPosition(1000000) = [[timeUs=1000000, position=3063]] +numberOfTracks = 1 +track 0: + total output bytes = 1968 + sample count = 23 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + maxInputSize = 368 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189788000] + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 1: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 2: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 3: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 4: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 5: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 6: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 7: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 8: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 9: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 10: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 11: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 12: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 13: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 14: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 15: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 16: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 17: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 18: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 19: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 20: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 21: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 22: + time = 981333 + flags = 536870912 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.3.dump new file mode 100644 index 0000000000..fdc89c6f62 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.3.dump @@ -0,0 +1,116 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=839]] + getPosition(1) = [[timeUs=1, position=839]] + getPosition(500000) = [[timeUs=500000, position=839]] + getPosition(1000000) = [[timeUs=1000000, position=3063]] +numberOfTracks = 1 +track 0: + total output bytes = 1968 + sample count = 23 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + maxInputSize = 368 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189788000] + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 1: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 2: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 3: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 4: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 5: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 6: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 7: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 8: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 9: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 10: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 11: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 12: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 13: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 14: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 15: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 16: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 17: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 18: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 19: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 20: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 21: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 22: + time = 981333 + flags = 536870912 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.unknown_length.dump new file mode 100644 index 0000000000..302fda3a31 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1.mp4.unknown_length.dump @@ -0,0 +1,212 @@ +seekMap: + isSeekable = true + duration = 1000000 + getPosition(0) = [[timeUs=0, position=839]] + getPosition(1) = [[timeUs=1, position=839]] + getPosition(500000) = [[timeUs=500000, position=839]] + getPosition(1000000) = [[timeUs=1000000, position=3063]] +numberOfTracks = 1 +track 0: + total output bytes = 4192 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + maxInputSize = 368 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189788000] + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 338, hash B319817B + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash A0154CE2 + sample 13: + time = 277333 + flags = 0 + data = length 80, hash E37A5065 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash 653631D3 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash FCDBFDFB + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB637 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C8 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0D9 + sample 21: + time = 448000 + flags = 0 + data = length 70, hash FB797ACC + sample 22: + time = 469333 + flags = 0 + data = length 81, hash 3B32D906 + sample 23: + time = 490666 + flags = 0 + data = length 81, hash 590B7E40 + sample 24: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 26: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 27: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 28: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 29: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 30: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 31: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 32: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 33: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 34: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 35: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 36: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 37: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 38: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 40: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 41: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 42: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 43: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 44: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 45: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 46: + time = 981333 + flags = 536870912 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.0.dump new file mode 100644 index 0000000000..cbad1f4898 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.0.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=647]] +numberOfTracks = 1 +track 0: + total output bytes = 4192 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 338, hash B319817B + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash A0154CE2 + sample 13: + time = 277333 + flags = 0 + data = length 80, hash E37A5065 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash 653631D3 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash FCDBFDFB + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB637 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C8 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0D9 + sample 21: + time = 448000 + flags = 0 + data = length 70, hash FB797ACC + sample 22: + time = 469333 + flags = 0 + data = length 81, hash 3B32D906 + sample 23: + time = 490666 + flags = 0 + data = length 81, hash 590B7E40 + sample 24: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 26: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 27: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 28: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 29: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 30: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 31: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 32: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 33: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 34: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 35: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 36: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 37: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 38: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 40: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 41: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 42: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 43: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 44: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 45: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 46: + time = 981333 + flags = 0 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.unknown_length.dump new file mode 100644 index 0000000000..cbad1f4898 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_cicp1_fragmented.mp4.unknown_length.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=647]] +numberOfTracks = 1 +track 0: + total output bytes = 4192 + sample count = 47 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 63, hash 82D00145 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 338, hash B319817B + sample 1: + time = 21333 + flags = 0 + data = length 85, hash 8EFCDF36 + sample 2: + time = 42666 + flags = 0 + data = length 98, hash BC03FE8A + sample 3: + time = 64000 + flags = 0 + data = length 105, hash 9FBA3169 + sample 4: + time = 85333 + flags = 0 + data = length 93, hash BD1CBC0E + sample 5: + time = 106666 + flags = 0 + data = length 93, hash C0B46623 + sample 6: + time = 128000 + flags = 0 + data = length 91, hash E4CA8D5 + sample 7: + time = 149333 + flags = 0 + data = length 82, hash EB64F3A8 + sample 8: + time = 170666 + flags = 0 + data = length 83, hash 97803527 + sample 9: + time = 192000 + flags = 0 + data = length 82, hash 5972B44D + sample 10: + time = 213333 + flags = 0 + data = length 81, hash 3D9C7710 + sample 11: + time = 234666 + flags = 0 + data = length 77, hash 27B26E3D + sample 12: + time = 256000 + flags = 0 + data = length 79, hash A0154CE2 + sample 13: + time = 277333 + flags = 0 + data = length 80, hash E37A5065 + sample 14: + time = 298666 + flags = 0 + data = length 78, hash 8F24DBB3 + sample 15: + time = 320000 + flags = 0 + data = length 77, hash CD76338B + sample 16: + time = 341333 + flags = 0 + data = length 78, hash 653631D3 + sample 17: + time = 362666 + flags = 0 + data = length 76, hash FCDBFDFB + sample 18: + time = 384000 + flags = 0 + data = length 56, hash E05FB637 + sample 19: + time = 405333 + flags = 0 + data = length 81, hash 2B2350C8 + sample 20: + time = 426666 + flags = 0 + data = length 79, hash DFF1D0D9 + sample 21: + time = 448000 + flags = 0 + data = length 70, hash FB797ACC + sample 22: + time = 469333 + flags = 0 + data = length 81, hash 3B32D906 + sample 23: + time = 490666 + flags = 0 + data = length 81, hash 590B7E40 + sample 24: + time = 512000 + flags = 1 + data = length 323, hash B8036267 + sample 25: + time = 533333 + flags = 0 + data = length 77, hash F3A2DCC5 + sample 26: + time = 554666 + flags = 0 + data = length 77, hash F75CC85D + sample 27: + time = 576000 + flags = 0 + data = length 57, hash 7CC1708C + sample 28: + time = 597333 + flags = 0 + data = length 81, hash 2B2350C7 + sample 29: + time = 618666 + flags = 0 + data = length 77, hash D8F6FDAC + sample 30: + time = 640000 + flags = 0 + data = length 77, hash 42EF016 + sample 31: + time = 661333 + flags = 0 + data = length 80, hash 4675D185 + sample 32: + time = 682666 + flags = 0 + data = length 76, hash 1A7FEA3D + sample 33: + time = 704000 + flags = 0 + data = length 56, hash 3BDC1EB1 + sample 34: + time = 725333 + flags = 0 + data = length 83, hash ADB7179F + sample 35: + time = 746666 + flags = 0 + data = length 77, hash 67FF2471 + sample 36: + time = 768000 + flags = 0 + data = length 76, hash 4E946044 + sample 37: + time = 789333 + flags = 0 + data = length 80, hash 4675D18C + sample 38: + time = 810666 + flags = 0 + data = length 76, hash 135136C6 + sample 39: + time = 832000 + flags = 0 + data = length 69, hash 54B620CE + sample 40: + time = 853333 + flags = 0 + data = length 80, hash 600CF0ED + sample 41: + time = 874666 + flags = 0 + data = length 77, hash 700F9258 + sample 42: + time = 896000 + flags = 0 + data = length 57, hash C279FB37 + sample 43: + time = 917333 + flags = 0 + data = length 83, hash 8E933F98 + sample 44: + time = 938666 + flags = 0 + data = length 77, hash C1D1E4A2 + sample 45: + time = 960000 + flags = 0 + data = length 84, hash CB9DC2AE + sample 46: + time = 981333 + flags = 0 + data = length 68, hash 90F95DDC +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.0.dump new file mode 100644 index 0000000000..8b54f84aa6 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.0.dump @@ -0,0 +1,595 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=25275]] + getPosition(3000000) = [[timeUs=3000000, position=236167]] +numberOfTracks = 1 +track 0: + total output bytes = 256334 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 4126 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189744000] + initializationData: + data = length 64, hash 7A6EA64F + sample 0: + time = 0 + flags = 1 + data = length 620, hash 6EDA7757 + sample 1: + time = 21333 + flags = 0 + data = length 204, hash 96F91771 + sample 2: + time = 42666 + flags = 0 + data = length 202, hash DB12DFC8 + sample 3: + time = 64000 + flags = 0 + data = length 339, hash 72DE92AC + sample 4: + time = 85333 + flags = 0 + data = length 342, hash FD3E7470 + sample 5: + time = 106666 + flags = 0 + data = length 341, hash D0034AB0 + sample 6: + time = 128000 + flags = 0 + data = length 341, hash A3075A48 + sample 7: + time = 149333 + flags = 0 + data = length 342, hash FD3E7475 + sample 8: + time = 170666 + flags = 0 + data = length 341, hash D0034AB1 + sample 9: + time = 192000 + flags = 0 + data = length 341, hash A3075A48 + sample 10: + time = 213333 + flags = 0 + data = length 342, hash FD3E747B + sample 11: + time = 234666 + flags = 0 + data = length 341, hash D0034AB0 + sample 12: + time = 256000 + flags = 0 + data = length 341, hash A3075A48 + sample 13: + time = 277333 + flags = 0 + data = length 342, hash FD3E7474 + sample 14: + time = 298666 + flags = 0 + data = length 341, hash D0034AB1 + sample 15: + time = 320000 + flags = 0 + data = length 341, hash A3075A48 + sample 16: + time = 341333 + flags = 0 + data = length 342, hash FD3E7462 + sample 17: + time = 362666 + flags = 0 + data = length 341, hash D0034AB0 + sample 18: + time = 384000 + flags = 0 + data = length 341, hash A3075A48 + sample 19: + time = 405333 + flags = 0 + data = length 342, hash FD3E746B + sample 20: + time = 426666 + flags = 0 + data = length 341, hash D0034AB0 + sample 21: + time = 448000 + flags = 0 + data = length 341, hash A3075A48 + sample 22: + time = 469333 + flags = 0 + data = length 342, hash 63A0363E + sample 23: + time = 490666 + flags = 0 + data = length 341, hash 51F65393 + sample 24: + time = 512000 + flags = 1 + data = length 577, hash 32D21653 + sample 25: + time = 533333 + flags = 0 + data = length 197, hash CB0DB412 + sample 26: + time = 554666 + flags = 0 + data = length 250, hash 9BDE48D4 + sample 27: + time = 576000 + flags = 0 + data = length 341, hash A3075A48 + sample 28: + time = 597333 + flags = 0 + data = length 342, hash FD3E7476 + sample 29: + time = 618666 + flags = 0 + data = length 341, hash D0034AAE + sample 30: + time = 640000 + flags = 0 + data = length 341, hash A3075A48 + sample 31: + time = 661333 + flags = 0 + data = length 342, hash FD3E7464 + sample 32: + time = 682666 + flags = 0 + data = length 341, hash D0034AB0 + sample 33: + time = 704000 + flags = 0 + data = length 341, hash A3075A48 + sample 34: + time = 725333 + flags = 0 + data = length 342, hash FD3E7468 + sample 35: + time = 746666 + flags = 0 + data = length 341, hash D0034AAE + sample 36: + time = 768000 + flags = 0 + data = length 341, hash A3075A48 + sample 37: + time = 789333 + flags = 0 + data = length 342, hash FD3E746B + sample 38: + time = 810666 + flags = 0 + data = length 341, hash D0034AB1 + sample 39: + time = 832000 + flags = 0 + data = length 341, hash A3075A48 + sample 40: + time = 853333 + flags = 0 + data = length 342, hash FD3E747C + sample 41: + time = 874666 + flags = 0 + data = length 341, hash D0034AB1 + sample 42: + time = 896000 + flags = 0 + data = length 341, hash A3075A48 + sample 43: + time = 917333 + flags = 0 + data = length 342, hash FD3E747F + sample 44: + time = 938666 + flags = 0 + data = length 341, hash D0034AAE + sample 45: + time = 960000 + flags = 0 + data = length 357, hash 790D09FE + sample 46: + time = 981333 + flags = 0 + data = length 472, hash 6A997000 + sample 47: + time = 1000000 + flags = 1 + data = length 3908, hash CDC05E32 + sample 48: + time = 1002666 + flags = 0 + data = length 3892, hash FB47D264 + sample 49: + time = 1024000 + flags = 1 + data = length 3892, hash 76D5402B + sample 50: + time = 1045333 + flags = 0 + data = length 3892, hash 99AE1080 + sample 51: + time = 1066666 + flags = 0 + data = length 3892, hash 7DA3A5B7 + sample 52: + time = 1088000 + flags = 0 + data = length 3892, hash 886247CE + sample 53: + time = 1109333 + flags = 0 + data = length 3892, hash 99AE1077 + sample 54: + time = 1130666 + flags = 0 + data = length 3892, hash 7DA3A5E0 + sample 55: + time = 1152000 + flags = 0 + data = length 3892, hash 886247BA + sample 56: + time = 1173333 + flags = 0 + data = length 3892, hash 99AE106D + sample 57: + time = 1194666 + flags = 0 + data = length 3892, hash 7DA3A5CD + sample 58: + time = 1216000 + flags = 0 + data = length 3892, hash 886247CA + sample 59: + time = 1237333 + flags = 0 + data = length 3892, hash 99AE1079 + sample 60: + time = 1258666 + flags = 0 + data = length 3892, hash 7DA3A5D1 + sample 61: + time = 1280000 + flags = 0 + data = length 3892, hash 886247BD + sample 62: + time = 1301333 + flags = 0 + data = length 3892, hash 99AE106D + sample 63: + time = 1322666 + flags = 0 + data = length 3892, hash 7DA3A5A7 + sample 64: + time = 1344000 + flags = 0 + data = length 3892, hash 886247C5 + sample 65: + time = 1365333 + flags = 0 + data = length 3980, hash 8DF782E + sample 66: + time = 1386666 + flags = 0 + data = length 4096, hash 6C926695 + sample 67: + time = 1408000 + flags = 0 + data = length 4096, hash BFCBCEDC + sample 68: + time = 1429333 + flags = 0 + data = length 4096, hash 886C00CF + sample 69: + time = 1450666 + flags = 0 + data = length 4096, hash 6C92668B + sample 70: + time = 1472000 + flags = 0 + data = length 4096, hash BFCBCEC6 + sample 71: + time = 1493333 + flags = 0 + data = length 4096, hash E431EAA2 + sample 72: + time = 1514666 + flags = 0 + data = length 4096, hash 21C24AE1 + sample 73: + time = 1536000 + flags = 1 + data = length 4096, hash 884E3535 + sample 74: + time = 1557333 + flags = 0 + data = length 4096, hash 886C00CE + sample 75: + time = 1578666 + flags = 0 + data = length 4096, hash 6C926678 + sample 76: + time = 1600000 + flags = 0 + data = length 4096, hash BFCBCEC1 + sample 77: + time = 1621333 + flags = 0 + data = length 4096, hash 886C00B5 + sample 78: + time = 1642666 + flags = 0 + data = length 4096, hash 6C926680 + sample 79: + time = 1664000 + flags = 0 + data = length 4096, hash BFCBCECA + sample 80: + time = 1685333 + flags = 0 + data = length 4096, hash 886C00C4 + sample 81: + time = 1706666 + flags = 0 + data = length 4096, hash 6C9266A3 + sample 82: + time = 1728000 + flags = 0 + data = length 4096, hash BFCBCECB + sample 83: + time = 1749333 + flags = 0 + data = length 4096, hash 886C00B9 + sample 84: + time = 1770666 + flags = 0 + data = length 4096, hash 6C926673 + sample 85: + time = 1792000 + flags = 0 + data = length 4096, hash BFCBCEDF + sample 86: + time = 1813333 + flags = 0 + data = length 4096, hash 886C00C8 + sample 87: + time = 1834666 + flags = 0 + data = length 4096, hash 6C926684 + sample 88: + time = 1856000 + flags = 0 + data = length 4096, hash BFCBCEDD + sample 89: + time = 1877333 + flags = 0 + data = length 4096, hash 886C00B2 + sample 90: + time = 1898666 + flags = 0 + data = length 4096, hash 6C926684 + sample 91: + time = 1920000 + flags = 0 + data = length 4096, hash BFCBCEDA + sample 92: + time = 1941333 + flags = 0 + data = length 4096, hash 886C00C7 + sample 93: + time = 1962666 + flags = 0 + data = length 4096, hash AFF7C654 + sample 94: + time = 1984000 + flags = 0 + data = length 3892, hash 7B3EC7FD + sample 95: + time = 2000000 + flags = 1 + data = length 764, hash B77EB08E + sample 96: + time = 2005333 + flags = 0 + data = length 413, hash A778FC60 + sample 97: + time = 2026666 + flags = 0 + data = length 973, hash 21498BD8 + sample 98: + time = 2048000 + flags = 1 + data = length 973, hash 66EB9A28 + sample 99: + time = 2069333 + flags = 0 + data = length 973, hash EA24022E + sample 100: + time = 2090666 + flags = 0 + data = length 973, hash B888BDB6 + sample 101: + time = 2112000 + flags = 0 + data = length 973, hash 52B402A + sample 102: + time = 2133333 + flags = 0 + data = length 973, hash EA24022E + sample 103: + time = 2154666 + flags = 0 + data = length 973, hash B888BE0C + sample 104: + time = 2176000 + flags = 0 + data = length 973, hash 52B4028 + sample 105: + time = 2197333 + flags = 0 + data = length 973, hash EA24022E + sample 106: + time = 2218666 + flags = 0 + data = length 973, hash B888BDDA + sample 107: + time = 2240000 + flags = 0 + data = length 973, hash 52B4016 + sample 108: + time = 2261333 + flags = 0 + data = length 973, hash EA24022E + sample 109: + time = 2282666 + flags = 0 + data = length 973, hash B888BDBD + sample 110: + time = 2304000 + flags = 0 + data = length 973, hash 52B406C + sample 111: + time = 2325333 + flags = 0 + data = length 1021, hash 2C16D82E + sample 112: + time = 2346666 + flags = 0 + data = length 1024, hash 64B5D698 + sample 113: + time = 2368000 + flags = 0 + data = length 1024, hash 6084A5F9 + sample 114: + time = 2389333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 115: + time = 2410666 + flags = 0 + data = length 1024, hash 64B5D68B + sample 116: + time = 2432000 + flags = 0 + data = length 1024, hash 6084A645 + sample 117: + time = 2453333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 118: + time = 2474666 + flags = 0 + data = length 1024, hash 64B5D6CD + sample 119: + time = 2496000 + flags = 0 + data = length 1024, hash 6084A632 + sample 120: + time = 2517333 + flags = 0 + data = length 1024, hash 9990F104 + sample 121: + time = 2538666 + flags = 0 + data = length 1024, hash 828D7A4 + sample 122: + time = 2560000 + flags = 1 + data = length 1024, hash 1F972702 + sample 123: + time = 2581333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 124: + time = 2602666 + flags = 0 + data = length 1024, hash 64B5D6DB + sample 125: + time = 2624000 + flags = 0 + data = length 1024, hash 6084A61E + sample 126: + time = 2645333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 127: + time = 2666666 + flags = 0 + data = length 1024, hash 64B5D6A9 + sample 128: + time = 2688000 + flags = 0 + data = length 1024, hash 6084A625 + sample 129: + time = 2709333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 130: + time = 2730666 + flags = 0 + data = length 1024, hash 64B5D6CA + sample 131: + time = 2752000 + flags = 0 + data = length 1024, hash 6084A5E2 + sample 132: + time = 2773333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 133: + time = 2794666 + flags = 0 + data = length 1024, hash 64B5D66B + sample 134: + time = 2816000 + flags = 0 + data = length 1024, hash 6084A629 + sample 135: + time = 2837333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 136: + time = 2858666 + flags = 0 + data = length 1024, hash 64B5D6B4 + sample 137: + time = 2880000 + flags = 0 + data = length 1024, hash 6084A627 + sample 138: + time = 2901333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 139: + time = 2922666 + flags = 0 + data = length 1024, hash 64B5D6B5 + sample 140: + time = 2944000 + flags = 0 + data = length 1024, hash 6084A61D + sample 141: + time = 2965333 + flags = 0 + data = length 1024, hash 5A1932E8 + sample 142: + time = 2986666 + flags = 536870912 + data = length 973, hash 9C376715 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.1.dump new file mode 100644 index 0000000000..2f4f9f62db --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.1.dump @@ -0,0 +1,407 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=25275]] + getPosition(3000000) = [[timeUs=3000000, position=236167]] +numberOfTracks = 1 +track 0: + total output bytes = 240145 + sample count = 96 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 4126 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189744000] + initializationData: + data = length 64, hash 7A6EA64F + sample 0: + time = 1000000 + flags = 1 + data = length 3908, hash CDC05E32 + sample 1: + time = 1002666 + flags = 0 + data = length 3892, hash FB47D264 + sample 2: + time = 1024000 + flags = 1 + data = length 3892, hash 76D5402B + sample 3: + time = 1045333 + flags = 0 + data = length 3892, hash 99AE1080 + sample 4: + time = 1066666 + flags = 0 + data = length 3892, hash 7DA3A5B7 + sample 5: + time = 1088000 + flags = 0 + data = length 3892, hash 886247CE + sample 6: + time = 1109333 + flags = 0 + data = length 3892, hash 99AE1077 + sample 7: + time = 1130666 + flags = 0 + data = length 3892, hash 7DA3A5E0 + sample 8: + time = 1152000 + flags = 0 + data = length 3892, hash 886247BA + sample 9: + time = 1173333 + flags = 0 + data = length 3892, hash 99AE106D + sample 10: + time = 1194666 + flags = 0 + data = length 3892, hash 7DA3A5CD + sample 11: + time = 1216000 + flags = 0 + data = length 3892, hash 886247CA + sample 12: + time = 1237333 + flags = 0 + data = length 3892, hash 99AE1079 + sample 13: + time = 1258666 + flags = 0 + data = length 3892, hash 7DA3A5D1 + sample 14: + time = 1280000 + flags = 0 + data = length 3892, hash 886247BD + sample 15: + time = 1301333 + flags = 0 + data = length 3892, hash 99AE106D + sample 16: + time = 1322666 + flags = 0 + data = length 3892, hash 7DA3A5A7 + sample 17: + time = 1344000 + flags = 0 + data = length 3892, hash 886247C5 + sample 18: + time = 1365333 + flags = 0 + data = length 3980, hash 8DF782E + sample 19: + time = 1386666 + flags = 0 + data = length 4096, hash 6C926695 + sample 20: + time = 1408000 + flags = 0 + data = length 4096, hash BFCBCEDC + sample 21: + time = 1429333 + flags = 0 + data = length 4096, hash 886C00CF + sample 22: + time = 1450666 + flags = 0 + data = length 4096, hash 6C92668B + sample 23: + time = 1472000 + flags = 0 + data = length 4096, hash BFCBCEC6 + sample 24: + time = 1493333 + flags = 0 + data = length 4096, hash E431EAA2 + sample 25: + time = 1514666 + flags = 0 + data = length 4096, hash 21C24AE1 + sample 26: + time = 1536000 + flags = 1 + data = length 4096, hash 884E3535 + sample 27: + time = 1557333 + flags = 0 + data = length 4096, hash 886C00CE + sample 28: + time = 1578666 + flags = 0 + data = length 4096, hash 6C926678 + sample 29: + time = 1600000 + flags = 0 + data = length 4096, hash BFCBCEC1 + sample 30: + time = 1621333 + flags = 0 + data = length 4096, hash 886C00B5 + sample 31: + time = 1642666 + flags = 0 + data = length 4096, hash 6C926680 + sample 32: + time = 1664000 + flags = 0 + data = length 4096, hash BFCBCECA + sample 33: + time = 1685333 + flags = 0 + data = length 4096, hash 886C00C4 + sample 34: + time = 1706666 + flags = 0 + data = length 4096, hash 6C9266A3 + sample 35: + time = 1728000 + flags = 0 + data = length 4096, hash BFCBCECB + sample 36: + time = 1749333 + flags = 0 + data = length 4096, hash 886C00B9 + sample 37: + time = 1770666 + flags = 0 + data = length 4096, hash 6C926673 + sample 38: + time = 1792000 + flags = 0 + data = length 4096, hash BFCBCEDF + sample 39: + time = 1813333 + flags = 0 + data = length 4096, hash 886C00C8 + sample 40: + time = 1834666 + flags = 0 + data = length 4096, hash 6C926684 + sample 41: + time = 1856000 + flags = 0 + data = length 4096, hash BFCBCEDD + sample 42: + time = 1877333 + flags = 0 + data = length 4096, hash 886C00B2 + sample 43: + time = 1898666 + flags = 0 + data = length 4096, hash 6C926684 + sample 44: + time = 1920000 + flags = 0 + data = length 4096, hash BFCBCEDA + sample 45: + time = 1941333 + flags = 0 + data = length 4096, hash 886C00C7 + sample 46: + time = 1962666 + flags = 0 + data = length 4096, hash AFF7C654 + sample 47: + time = 1984000 + flags = 0 + data = length 3892, hash 7B3EC7FD + sample 48: + time = 2000000 + flags = 1 + data = length 764, hash B77EB08E + sample 49: + time = 2005333 + flags = 0 + data = length 413, hash A778FC60 + sample 50: + time = 2026666 + flags = 0 + data = length 973, hash 21498BD8 + sample 51: + time = 2048000 + flags = 1 + data = length 973, hash 66EB9A28 + sample 52: + time = 2069333 + flags = 0 + data = length 973, hash EA24022E + sample 53: + time = 2090666 + flags = 0 + data = length 973, hash B888BDB6 + sample 54: + time = 2112000 + flags = 0 + data = length 973, hash 52B402A + sample 55: + time = 2133333 + flags = 0 + data = length 973, hash EA24022E + sample 56: + time = 2154666 + flags = 0 + data = length 973, hash B888BE0C + sample 57: + time = 2176000 + flags = 0 + data = length 973, hash 52B4028 + sample 58: + time = 2197333 + flags = 0 + data = length 973, hash EA24022E + sample 59: + time = 2218666 + flags = 0 + data = length 973, hash B888BDDA + sample 60: + time = 2240000 + flags = 0 + data = length 973, hash 52B4016 + sample 61: + time = 2261333 + flags = 0 + data = length 973, hash EA24022E + sample 62: + time = 2282666 + flags = 0 + data = length 973, hash B888BDBD + sample 63: + time = 2304000 + flags = 0 + data = length 973, hash 52B406C + sample 64: + time = 2325333 + flags = 0 + data = length 1021, hash 2C16D82E + sample 65: + time = 2346666 + flags = 0 + data = length 1024, hash 64B5D698 + sample 66: + time = 2368000 + flags = 0 + data = length 1024, hash 6084A5F9 + sample 67: + time = 2389333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 68: + time = 2410666 + flags = 0 + data = length 1024, hash 64B5D68B + sample 69: + time = 2432000 + flags = 0 + data = length 1024, hash 6084A645 + sample 70: + time = 2453333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 71: + time = 2474666 + flags = 0 + data = length 1024, hash 64B5D6CD + sample 72: + time = 2496000 + flags = 0 + data = length 1024, hash 6084A632 + sample 73: + time = 2517333 + flags = 0 + data = length 1024, hash 9990F104 + sample 74: + time = 2538666 + flags = 0 + data = length 1024, hash 828D7A4 + sample 75: + time = 2560000 + flags = 1 + data = length 1024, hash 1F972702 + sample 76: + time = 2581333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 77: + time = 2602666 + flags = 0 + data = length 1024, hash 64B5D6DB + sample 78: + time = 2624000 + flags = 0 + data = length 1024, hash 6084A61E + sample 79: + time = 2645333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 80: + time = 2666666 + flags = 0 + data = length 1024, hash 64B5D6A9 + sample 81: + time = 2688000 + flags = 0 + data = length 1024, hash 6084A625 + sample 82: + time = 2709333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 83: + time = 2730666 + flags = 0 + data = length 1024, hash 64B5D6CA + sample 84: + time = 2752000 + flags = 0 + data = length 1024, hash 6084A5E2 + sample 85: + time = 2773333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 86: + time = 2794666 + flags = 0 + data = length 1024, hash 64B5D66B + sample 87: + time = 2816000 + flags = 0 + data = length 1024, hash 6084A629 + sample 88: + time = 2837333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 89: + time = 2858666 + flags = 0 + data = length 1024, hash 64B5D6B4 + sample 90: + time = 2880000 + flags = 0 + data = length 1024, hash 6084A627 + sample 91: + time = 2901333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 92: + time = 2922666 + flags = 0 + data = length 1024, hash 64B5D6B5 + sample 93: + time = 2944000 + flags = 0 + data = length 1024, hash 6084A61D + sample 94: + time = 2965333 + flags = 0 + data = length 1024, hash 5A1932E8 + sample 95: + time = 2986666 + flags = 536870912 + data = length 973, hash 9C376715 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.2.dump new file mode 100644 index 0000000000..c8a319bc81 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.2.dump @@ -0,0 +1,215 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=25275]] + getPosition(3000000) = [[timeUs=3000000, position=236167]] +numberOfTracks = 1 +track 0: + total output bytes = 47513 + sample count = 48 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 4126 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189744000] + initializationData: + data = length 64, hash 7A6EA64F + sample 0: + time = 2000000 + flags = 1 + data = length 764, hash B77EB08E + sample 1: + time = 2005333 + flags = 0 + data = length 413, hash A778FC60 + sample 2: + time = 2026666 + flags = 0 + data = length 973, hash 21498BD8 + sample 3: + time = 2048000 + flags = 1 + data = length 973, hash 66EB9A28 + sample 4: + time = 2069333 + flags = 0 + data = length 973, hash EA24022E + sample 5: + time = 2090666 + flags = 0 + data = length 973, hash B888BDB6 + sample 6: + time = 2112000 + flags = 0 + data = length 973, hash 52B402A + sample 7: + time = 2133333 + flags = 0 + data = length 973, hash EA24022E + sample 8: + time = 2154666 + flags = 0 + data = length 973, hash B888BE0C + sample 9: + time = 2176000 + flags = 0 + data = length 973, hash 52B4028 + sample 10: + time = 2197333 + flags = 0 + data = length 973, hash EA24022E + sample 11: + time = 2218666 + flags = 0 + data = length 973, hash B888BDDA + sample 12: + time = 2240000 + flags = 0 + data = length 973, hash 52B4016 + sample 13: + time = 2261333 + flags = 0 + data = length 973, hash EA24022E + sample 14: + time = 2282666 + flags = 0 + data = length 973, hash B888BDBD + sample 15: + time = 2304000 + flags = 0 + data = length 973, hash 52B406C + sample 16: + time = 2325333 + flags = 0 + data = length 1021, hash 2C16D82E + sample 17: + time = 2346666 + flags = 0 + data = length 1024, hash 64B5D698 + sample 18: + time = 2368000 + flags = 0 + data = length 1024, hash 6084A5F9 + sample 19: + time = 2389333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 20: + time = 2410666 + flags = 0 + data = length 1024, hash 64B5D68B + sample 21: + time = 2432000 + flags = 0 + data = length 1024, hash 6084A645 + sample 22: + time = 2453333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 23: + time = 2474666 + flags = 0 + data = length 1024, hash 64B5D6CD + sample 24: + time = 2496000 + flags = 0 + data = length 1024, hash 6084A632 + sample 25: + time = 2517333 + flags = 0 + data = length 1024, hash 9990F104 + sample 26: + time = 2538666 + flags = 0 + data = length 1024, hash 828D7A4 + sample 27: + time = 2560000 + flags = 1 + data = length 1024, hash 1F972702 + sample 28: + time = 2581333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 29: + time = 2602666 + flags = 0 + data = length 1024, hash 64B5D6DB + sample 30: + time = 2624000 + flags = 0 + data = length 1024, hash 6084A61E + sample 31: + time = 2645333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 32: + time = 2666666 + flags = 0 + data = length 1024, hash 64B5D6A9 + sample 33: + time = 2688000 + flags = 0 + data = length 1024, hash 6084A625 + sample 34: + time = 2709333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 35: + time = 2730666 + flags = 0 + data = length 1024, hash 64B5D6CA + sample 36: + time = 2752000 + flags = 0 + data = length 1024, hash 6084A5E2 + sample 37: + time = 2773333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 38: + time = 2794666 + flags = 0 + data = length 1024, hash 64B5D66B + sample 39: + time = 2816000 + flags = 0 + data = length 1024, hash 6084A629 + sample 40: + time = 2837333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 41: + time = 2858666 + flags = 0 + data = length 1024, hash 64B5D6B4 + sample 42: + time = 2880000 + flags = 0 + data = length 1024, hash 6084A627 + sample 43: + time = 2901333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 44: + time = 2922666 + flags = 0 + data = length 1024, hash 64B5D6B5 + sample 45: + time = 2944000 + flags = 0 + data = length 1024, hash 6084A61D + sample 46: + time = 2965333 + flags = 0 + data = length 1024, hash 5A1932E8 + sample 47: + time = 2986666 + flags = 536870912 + data = length 973, hash 9C376715 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.3.dump new file mode 100644 index 0000000000..4e0220eff9 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.3.dump @@ -0,0 +1,107 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=25275]] + getPosition(3000000) = [[timeUs=3000000, position=236167]] +numberOfTracks = 1 +track 0: + total output bytes = 21453 + sample count = 21 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 4126 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189744000] + initializationData: + data = length 64, hash 7A6EA64F + sample 0: + time = 2560000 + flags = 1 + data = length 1024, hash 1F972702 + sample 1: + time = 2581333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 2: + time = 2602666 + flags = 0 + data = length 1024, hash 64B5D6DB + sample 3: + time = 2624000 + flags = 0 + data = length 1024, hash 6084A61E + sample 4: + time = 2645333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 5: + time = 2666666 + flags = 0 + data = length 1024, hash 64B5D6A9 + sample 6: + time = 2688000 + flags = 0 + data = length 1024, hash 6084A625 + sample 7: + time = 2709333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 8: + time = 2730666 + flags = 0 + data = length 1024, hash 64B5D6CA + sample 9: + time = 2752000 + flags = 0 + data = length 1024, hash 6084A5E2 + sample 10: + time = 2773333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 11: + time = 2794666 + flags = 0 + data = length 1024, hash 64B5D66B + sample 12: + time = 2816000 + flags = 0 + data = length 1024, hash 6084A629 + sample 13: + time = 2837333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 14: + time = 2858666 + flags = 0 + data = length 1024, hash 64B5D6B4 + sample 15: + time = 2880000 + flags = 0 + data = length 1024, hash 6084A627 + sample 16: + time = 2901333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 17: + time = 2922666 + flags = 0 + data = length 1024, hash 64B5D6B5 + sample 18: + time = 2944000 + flags = 0 + data = length 1024, hash 6084A61D + sample 19: + time = 2965333 + flags = 0 + data = length 1024, hash 5A1932E8 + sample 20: + time = 2986666 + flags = 536870912 + data = length 973, hash 9C376715 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.unknown_length.dump new file mode 100644 index 0000000000..8b54f84aa6 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange.mp4.unknown_length.dump @@ -0,0 +1,595 @@ +seekMap: + isSeekable = true + duration = 3000000 + getPosition(0) = [[timeUs=0, position=1286]] + getPosition(1) = [[timeUs=1, position=1286]] + getPosition(1500000) = [[timeUs=1500000, position=25275]] + getPosition(3000000) = [[timeUs=3000000, position=236167]] +numberOfTracks = 1 +track 0: + total output bytes = 256334 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.10 + maxInputSize = 4126 + channelCount = 0 + sampleRate = 48000 + language = und + metadata = entries=[Creation time: 1697189744000] + initializationData: + data = length 64, hash 7A6EA64F + sample 0: + time = 0 + flags = 1 + data = length 620, hash 6EDA7757 + sample 1: + time = 21333 + flags = 0 + data = length 204, hash 96F91771 + sample 2: + time = 42666 + flags = 0 + data = length 202, hash DB12DFC8 + sample 3: + time = 64000 + flags = 0 + data = length 339, hash 72DE92AC + sample 4: + time = 85333 + flags = 0 + data = length 342, hash FD3E7470 + sample 5: + time = 106666 + flags = 0 + data = length 341, hash D0034AB0 + sample 6: + time = 128000 + flags = 0 + data = length 341, hash A3075A48 + sample 7: + time = 149333 + flags = 0 + data = length 342, hash FD3E7475 + sample 8: + time = 170666 + flags = 0 + data = length 341, hash D0034AB1 + sample 9: + time = 192000 + flags = 0 + data = length 341, hash A3075A48 + sample 10: + time = 213333 + flags = 0 + data = length 342, hash FD3E747B + sample 11: + time = 234666 + flags = 0 + data = length 341, hash D0034AB0 + sample 12: + time = 256000 + flags = 0 + data = length 341, hash A3075A48 + sample 13: + time = 277333 + flags = 0 + data = length 342, hash FD3E7474 + sample 14: + time = 298666 + flags = 0 + data = length 341, hash D0034AB1 + sample 15: + time = 320000 + flags = 0 + data = length 341, hash A3075A48 + sample 16: + time = 341333 + flags = 0 + data = length 342, hash FD3E7462 + sample 17: + time = 362666 + flags = 0 + data = length 341, hash D0034AB0 + sample 18: + time = 384000 + flags = 0 + data = length 341, hash A3075A48 + sample 19: + time = 405333 + flags = 0 + data = length 342, hash FD3E746B + sample 20: + time = 426666 + flags = 0 + data = length 341, hash D0034AB0 + sample 21: + time = 448000 + flags = 0 + data = length 341, hash A3075A48 + sample 22: + time = 469333 + flags = 0 + data = length 342, hash 63A0363E + sample 23: + time = 490666 + flags = 0 + data = length 341, hash 51F65393 + sample 24: + time = 512000 + flags = 1 + data = length 577, hash 32D21653 + sample 25: + time = 533333 + flags = 0 + data = length 197, hash CB0DB412 + sample 26: + time = 554666 + flags = 0 + data = length 250, hash 9BDE48D4 + sample 27: + time = 576000 + flags = 0 + data = length 341, hash A3075A48 + sample 28: + time = 597333 + flags = 0 + data = length 342, hash FD3E7476 + sample 29: + time = 618666 + flags = 0 + data = length 341, hash D0034AAE + sample 30: + time = 640000 + flags = 0 + data = length 341, hash A3075A48 + sample 31: + time = 661333 + flags = 0 + data = length 342, hash FD3E7464 + sample 32: + time = 682666 + flags = 0 + data = length 341, hash D0034AB0 + sample 33: + time = 704000 + flags = 0 + data = length 341, hash A3075A48 + sample 34: + time = 725333 + flags = 0 + data = length 342, hash FD3E7468 + sample 35: + time = 746666 + flags = 0 + data = length 341, hash D0034AAE + sample 36: + time = 768000 + flags = 0 + data = length 341, hash A3075A48 + sample 37: + time = 789333 + flags = 0 + data = length 342, hash FD3E746B + sample 38: + time = 810666 + flags = 0 + data = length 341, hash D0034AB1 + sample 39: + time = 832000 + flags = 0 + data = length 341, hash A3075A48 + sample 40: + time = 853333 + flags = 0 + data = length 342, hash FD3E747C + sample 41: + time = 874666 + flags = 0 + data = length 341, hash D0034AB1 + sample 42: + time = 896000 + flags = 0 + data = length 341, hash A3075A48 + sample 43: + time = 917333 + flags = 0 + data = length 342, hash FD3E747F + sample 44: + time = 938666 + flags = 0 + data = length 341, hash D0034AAE + sample 45: + time = 960000 + flags = 0 + data = length 357, hash 790D09FE + sample 46: + time = 981333 + flags = 0 + data = length 472, hash 6A997000 + sample 47: + time = 1000000 + flags = 1 + data = length 3908, hash CDC05E32 + sample 48: + time = 1002666 + flags = 0 + data = length 3892, hash FB47D264 + sample 49: + time = 1024000 + flags = 1 + data = length 3892, hash 76D5402B + sample 50: + time = 1045333 + flags = 0 + data = length 3892, hash 99AE1080 + sample 51: + time = 1066666 + flags = 0 + data = length 3892, hash 7DA3A5B7 + sample 52: + time = 1088000 + flags = 0 + data = length 3892, hash 886247CE + sample 53: + time = 1109333 + flags = 0 + data = length 3892, hash 99AE1077 + sample 54: + time = 1130666 + flags = 0 + data = length 3892, hash 7DA3A5E0 + sample 55: + time = 1152000 + flags = 0 + data = length 3892, hash 886247BA + sample 56: + time = 1173333 + flags = 0 + data = length 3892, hash 99AE106D + sample 57: + time = 1194666 + flags = 0 + data = length 3892, hash 7DA3A5CD + sample 58: + time = 1216000 + flags = 0 + data = length 3892, hash 886247CA + sample 59: + time = 1237333 + flags = 0 + data = length 3892, hash 99AE1079 + sample 60: + time = 1258666 + flags = 0 + data = length 3892, hash 7DA3A5D1 + sample 61: + time = 1280000 + flags = 0 + data = length 3892, hash 886247BD + sample 62: + time = 1301333 + flags = 0 + data = length 3892, hash 99AE106D + sample 63: + time = 1322666 + flags = 0 + data = length 3892, hash 7DA3A5A7 + sample 64: + time = 1344000 + flags = 0 + data = length 3892, hash 886247C5 + sample 65: + time = 1365333 + flags = 0 + data = length 3980, hash 8DF782E + sample 66: + time = 1386666 + flags = 0 + data = length 4096, hash 6C926695 + sample 67: + time = 1408000 + flags = 0 + data = length 4096, hash BFCBCEDC + sample 68: + time = 1429333 + flags = 0 + data = length 4096, hash 886C00CF + sample 69: + time = 1450666 + flags = 0 + data = length 4096, hash 6C92668B + sample 70: + time = 1472000 + flags = 0 + data = length 4096, hash BFCBCEC6 + sample 71: + time = 1493333 + flags = 0 + data = length 4096, hash E431EAA2 + sample 72: + time = 1514666 + flags = 0 + data = length 4096, hash 21C24AE1 + sample 73: + time = 1536000 + flags = 1 + data = length 4096, hash 884E3535 + sample 74: + time = 1557333 + flags = 0 + data = length 4096, hash 886C00CE + sample 75: + time = 1578666 + flags = 0 + data = length 4096, hash 6C926678 + sample 76: + time = 1600000 + flags = 0 + data = length 4096, hash BFCBCEC1 + sample 77: + time = 1621333 + flags = 0 + data = length 4096, hash 886C00B5 + sample 78: + time = 1642666 + flags = 0 + data = length 4096, hash 6C926680 + sample 79: + time = 1664000 + flags = 0 + data = length 4096, hash BFCBCECA + sample 80: + time = 1685333 + flags = 0 + data = length 4096, hash 886C00C4 + sample 81: + time = 1706666 + flags = 0 + data = length 4096, hash 6C9266A3 + sample 82: + time = 1728000 + flags = 0 + data = length 4096, hash BFCBCECB + sample 83: + time = 1749333 + flags = 0 + data = length 4096, hash 886C00B9 + sample 84: + time = 1770666 + flags = 0 + data = length 4096, hash 6C926673 + sample 85: + time = 1792000 + flags = 0 + data = length 4096, hash BFCBCEDF + sample 86: + time = 1813333 + flags = 0 + data = length 4096, hash 886C00C8 + sample 87: + time = 1834666 + flags = 0 + data = length 4096, hash 6C926684 + sample 88: + time = 1856000 + flags = 0 + data = length 4096, hash BFCBCEDD + sample 89: + time = 1877333 + flags = 0 + data = length 4096, hash 886C00B2 + sample 90: + time = 1898666 + flags = 0 + data = length 4096, hash 6C926684 + sample 91: + time = 1920000 + flags = 0 + data = length 4096, hash BFCBCEDA + sample 92: + time = 1941333 + flags = 0 + data = length 4096, hash 886C00C7 + sample 93: + time = 1962666 + flags = 0 + data = length 4096, hash AFF7C654 + sample 94: + time = 1984000 + flags = 0 + data = length 3892, hash 7B3EC7FD + sample 95: + time = 2000000 + flags = 1 + data = length 764, hash B77EB08E + sample 96: + time = 2005333 + flags = 0 + data = length 413, hash A778FC60 + sample 97: + time = 2026666 + flags = 0 + data = length 973, hash 21498BD8 + sample 98: + time = 2048000 + flags = 1 + data = length 973, hash 66EB9A28 + sample 99: + time = 2069333 + flags = 0 + data = length 973, hash EA24022E + sample 100: + time = 2090666 + flags = 0 + data = length 973, hash B888BDB6 + sample 101: + time = 2112000 + flags = 0 + data = length 973, hash 52B402A + sample 102: + time = 2133333 + flags = 0 + data = length 973, hash EA24022E + sample 103: + time = 2154666 + flags = 0 + data = length 973, hash B888BE0C + sample 104: + time = 2176000 + flags = 0 + data = length 973, hash 52B4028 + sample 105: + time = 2197333 + flags = 0 + data = length 973, hash EA24022E + sample 106: + time = 2218666 + flags = 0 + data = length 973, hash B888BDDA + sample 107: + time = 2240000 + flags = 0 + data = length 973, hash 52B4016 + sample 108: + time = 2261333 + flags = 0 + data = length 973, hash EA24022E + sample 109: + time = 2282666 + flags = 0 + data = length 973, hash B888BDBD + sample 110: + time = 2304000 + flags = 0 + data = length 973, hash 52B406C + sample 111: + time = 2325333 + flags = 0 + data = length 1021, hash 2C16D82E + sample 112: + time = 2346666 + flags = 0 + data = length 1024, hash 64B5D698 + sample 113: + time = 2368000 + flags = 0 + data = length 1024, hash 6084A5F9 + sample 114: + time = 2389333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 115: + time = 2410666 + flags = 0 + data = length 1024, hash 64B5D68B + sample 116: + time = 2432000 + flags = 0 + data = length 1024, hash 6084A645 + sample 117: + time = 2453333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 118: + time = 2474666 + flags = 0 + data = length 1024, hash 64B5D6CD + sample 119: + time = 2496000 + flags = 0 + data = length 1024, hash 6084A632 + sample 120: + time = 2517333 + flags = 0 + data = length 1024, hash 9990F104 + sample 121: + time = 2538666 + flags = 0 + data = length 1024, hash 828D7A4 + sample 122: + time = 2560000 + flags = 1 + data = length 1024, hash 1F972702 + sample 123: + time = 2581333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 124: + time = 2602666 + flags = 0 + data = length 1024, hash 64B5D6DB + sample 125: + time = 2624000 + flags = 0 + data = length 1024, hash 6084A61E + sample 126: + time = 2645333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 127: + time = 2666666 + flags = 0 + data = length 1024, hash 64B5D6A9 + sample 128: + time = 2688000 + flags = 0 + data = length 1024, hash 6084A625 + sample 129: + time = 2709333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 130: + time = 2730666 + flags = 0 + data = length 1024, hash 64B5D6CA + sample 131: + time = 2752000 + flags = 0 + data = length 1024, hash 6084A5E2 + sample 132: + time = 2773333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 133: + time = 2794666 + flags = 0 + data = length 1024, hash 64B5D66B + sample 134: + time = 2816000 + flags = 0 + data = length 1024, hash 6084A629 + sample 135: + time = 2837333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 136: + time = 2858666 + flags = 0 + data = length 1024, hash 64B5D6B4 + sample 137: + time = 2880000 + flags = 0 + data = length 1024, hash 6084A627 + sample 138: + time = 2901333 + flags = 0 + data = length 1024, hash 3D9FA477 + sample 139: + time = 2922666 + flags = 0 + data = length 1024, hash 64B5D6B5 + sample 140: + time = 2944000 + flags = 0 + data = length 1024, hash 6084A61D + sample 141: + time = 2965333 + flags = 0 + data = length 1024, hash 5A1932E8 + sample 142: + time = 2986666 + flags = 536870912 + data = length 973, hash 9C376715 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.0.dump new file mode 100644 index 0000000000..5ed0e99036 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.0.dump @@ -0,0 +1,591 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=651]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 67, hash 3CF14937 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 488, hash 1ED69C37 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 494, hash 760CFF0D + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 133, hash 1CC194C2 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 138, hash DC4D2879 + sample 41: + time = 874666 + flags = 0 + data = length 118, hash B83EEC69 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 9C0874EC + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 199, hash 95B42394 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 4CBC0E10 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash 107D8B89 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CDE033BF + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 747, hash 825A1CE1 + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 814, hash BB697ADA + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 475, hash 5C915E92 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 817, hash 7CFB77D9 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 420, hash 7C4664C0 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 0 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.unknown_length.dump new file mode 100644 index 0000000000..5ed0e99036 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4.unknown_length.dump @@ -0,0 +1,591 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=651]] +numberOfTracks = 1 +track 0: + total output bytes = 128279 + sample count = 143 + format 0: + id = 1 + sampleMimeType = audio/mhm1 + codecs = mhm1.0B + channelCount = 0 + sampleRate = 48000 + language = und + initializationData: + data = length 67, hash 3CF14937 + data = length 1, hash 2F + sample 0: + time = 0 + flags = 1 + data = length 488, hash 1ED69C37 + sample 1: + time = 21333 + flags = 0 + data = length 164, hash 136B1B66 + sample 2: + time = 42666 + flags = 0 + data = length 158, hash A9289DCD + sample 3: + time = 64000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 4: + time = 85333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 5: + time = 106666 + flags = 0 + data = length 158, hash 22E84AF0 + sample 6: + time = 128000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 7: + time = 149333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 8: + time = 170666 + flags = 0 + data = length 158, hash BA6B7094 + sample 9: + time = 192000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 10: + time = 213333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 11: + time = 234666 + flags = 0 + data = length 158, hash A9289DCC + sample 12: + time = 256000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 13: + time = 277333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 14: + time = 298666 + flags = 0 + data = length 158, hash A9289DCD + sample 15: + time = 320000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 16: + time = 341333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 17: + time = 362666 + flags = 0 + data = length 158, hash 37B039B1 + sample 18: + time = 384000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 19: + time = 405333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 20: + time = 426666 + flags = 0 + data = length 158, hash 37B039AC + sample 21: + time = 448000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 22: + time = 469333 + flags = 0 + data = length 159, hash 95787660 + sample 23: + time = 490666 + flags = 0 + data = length 161, hash 16788957 + sample 24: + time = 512000 + flags = 1 + data = length 494, hash 760CFF0D + sample 25: + time = 533333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 26: + time = 554666 + flags = 0 + data = length 158, hash BA6B70A1 + sample 27: + time = 576000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 28: + time = 597333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 29: + time = 618666 + flags = 0 + data = length 158, hash BA6B709B + sample 30: + time = 640000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 31: + time = 661333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 32: + time = 682666 + flags = 0 + data = length 158, hash BA6B70A5 + sample 33: + time = 704000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 34: + time = 725333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 35: + time = 746666 + flags = 0 + data = length 158, hash BA6B708A + sample 36: + time = 768000 + flags = 0 + data = length 164, hash 7E2368C3 + sample 37: + time = 789333 + flags = 0 + data = length 158, hash 10AC2CD4 + sample 38: + time = 810666 + flags = 0 + data = length 133, hash 1CC194C2 + sample 39: + time = 832000 + flags = 0 + data = length 137, hash AED0A139 + sample 40: + time = 853333 + flags = 0 + data = length 138, hash DC4D2879 + sample 41: + time = 874666 + flags = 0 + data = length 118, hash B83EEC69 + sample 42: + time = 896000 + flags = 0 + data = length 163, hash 9C0874EC + sample 43: + time = 917333 + flags = 0 + data = length 157, hash CB2B0DA9 + sample 44: + time = 938666 + flags = 0 + data = length 157, hash 5DEF94E6 + sample 45: + time = 960000 + flags = 0 + data = length 199, hash 95B42394 + sample 46: + time = 981333 + flags = 0 + data = length 212, hash 16161E7E + sample 47: + time = 1000000 + flags = 1 + data = length 1889, hash 4CBC0E10 + sample 48: + time = 1002666 + flags = 0 + data = length 1946, hash 7CBAD516 + sample 49: + time = 1024000 + flags = 1 + data = length 1943, hash 107D8B89 + sample 50: + time = 1045333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 51: + time = 1066666 + flags = 0 + data = length 1946, hash E699F72C + sample 52: + time = 1088000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 53: + time = 1109333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 54: + time = 1130666 + flags = 0 + data = length 1946, hash E699F72E + sample 55: + time = 1152000 + flags = 0 + data = length 1946, hash EDE7C06D + sample 56: + time = 1173333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 57: + time = 1194666 + flags = 0 + data = length 1946, hash E699F737 + sample 58: + time = 1216000 + flags = 0 + data = length 1946, hash EDE7C06F + sample 59: + time = 1237333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 60: + time = 1258666 + flags = 0 + data = length 1946, hash E699F72D + sample 61: + time = 1280000 + flags = 0 + data = length 1946, hash EDE7C070 + sample 62: + time = 1301333 + flags = 0 + data = length 1946, hash 7ACED7E4 + sample 63: + time = 1322666 + flags = 0 + data = length 1946, hash E699F731 + sample 64: + time = 1344000 + flags = 0 + data = length 1946, hash EDE7C06E + sample 65: + time = 1365333 + flags = 0 + data = length 1990, hash 8176E8F8 + sample 66: + time = 1386666 + flags = 0 + data = length 2048, hash 409F44AB + sample 67: + time = 1408000 + flags = 0 + data = length 2048, hash 5431547E + sample 68: + time = 1429333 + flags = 0 + data = length 2048, hash 1193639E + sample 69: + time = 1450666 + flags = 0 + data = length 2048, hash 409F44AD + sample 70: + time = 1472000 + flags = 0 + data = length 2048, hash 5431547F + sample 71: + time = 1493333 + flags = 0 + data = length 2048, hash 184105C3 + sample 72: + time = 1514666 + flags = 0 + data = length 2048, hash 8308185C + sample 73: + time = 1536000 + flags = 1 + data = length 2045, hash CDE033BF + sample 74: + time = 1557333 + flags = 0 + data = length 2048, hash 1193639E + sample 75: + time = 1578666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 76: + time = 1600000 + flags = 0 + data = length 2048, hash 5431547E + sample 77: + time = 1621333 + flags = 0 + data = length 2048, hash 1193639D + sample 78: + time = 1642666 + flags = 0 + data = length 2048, hash 409F44B3 + sample 79: + time = 1664000 + flags = 0 + data = length 2048, hash 5431547E + sample 80: + time = 1685333 + flags = 0 + data = length 2048, hash 1193639D + sample 81: + time = 1706666 + flags = 0 + data = length 2048, hash 409F44AA + sample 82: + time = 1728000 + flags = 0 + data = length 2048, hash 5431547F + sample 83: + time = 1749333 + flags = 0 + data = length 2048, hash 1193639D + sample 84: + time = 1770666 + flags = 0 + data = length 2048, hash 409F44AC + sample 85: + time = 1792000 + flags = 0 + data = length 2048, hash 5431547E + sample 86: + time = 1813333 + flags = 0 + data = length 2048, hash 1193639D + sample 87: + time = 1834666 + flags = 0 + data = length 2048, hash 409F44AE + sample 88: + time = 1856000 + flags = 0 + data = length 2048, hash 5431547D + sample 89: + time = 1877333 + flags = 0 + data = length 2048, hash 1193639E + sample 90: + time = 1898666 + flags = 0 + data = length 2048, hash 409F44B6 + sample 91: + time = 1920000 + flags = 0 + data = length 2048, hash 5431547F + sample 92: + time = 1941333 + flags = 0 + data = length 2048, hash 1193639E + sample 93: + time = 1962666 + flags = 0 + data = length 2048, hash 9C157230 + sample 94: + time = 1984000 + flags = 0 + data = length 1946, hash 4A0BC4F0 + sample 95: + time = 2000000 + flags = 1 + data = length 747, hash 825A1CE1 + sample 96: + time = 2005333 + flags = 0 + data = length 238, hash DA502A4F + sample 97: + time = 2026666 + flags = 0 + data = length 324, hash A76C55FD + sample 98: + time = 2048000 + flags = 1 + data = length 814, hash BB697ADA + sample 99: + time = 2069333 + flags = 0 + data = length 299, hash 90B92023 + sample 100: + time = 2090666 + flags = 0 + data = length 319, hash 5F47ED6D + sample 101: + time = 2112000 + flags = 0 + data = length 295, hash E35C19E + sample 102: + time = 2133333 + flags = 0 + data = length 475, hash 5C915E92 + sample 103: + time = 2154666 + flags = 0 + data = length 487, hash CB0F60F6 + sample 104: + time = 2176000 + flags = 0 + data = length 487, hash 4FFB63CA + sample 105: + time = 2197333 + flags = 0 + data = length 487, hash 97A7C57C + sample 106: + time = 2218666 + flags = 0 + data = length 487, hash CB0F611B + sample 107: + time = 2240000 + flags = 0 + data = length 487, hash 4FFB6392 + sample 108: + time = 2261333 + flags = 0 + data = length 487, hash 97A7C57D + sample 109: + time = 2282666 + flags = 0 + data = length 487, hash CB0F60C9 + sample 110: + time = 2304000 + flags = 0 + data = length 487, hash 4FFB63CB + sample 111: + time = 2325333 + flags = 0 + data = length 503, hash 56E1AE8B + sample 112: + time = 2346666 + flags = 0 + data = length 512, hash 12E1C0A8 + sample 113: + time = 2368000 + flags = 0 + data = length 512, hash 4C28784B + sample 114: + time = 2389333 + flags = 0 + data = length 512, hash 71422AB9 + sample 115: + time = 2410666 + flags = 0 + data = length 512, hash 12E1C076 + sample 116: + time = 2432000 + flags = 0 + data = length 512, hash 4C287892 + sample 117: + time = 2453333 + flags = 0 + data = length 512, hash 71422ABB + sample 118: + time = 2474666 + flags = 0 + data = length 512, hash 12E1C0B9 + sample 119: + time = 2496000 + flags = 0 + data = length 512, hash 4C28789F + sample 120: + time = 2517333 + flags = 0 + data = length 512, hash ED501283 + sample 121: + time = 2538666 + flags = 0 + data = length 512, hash 9D4174B7 + sample 122: + time = 2560000 + flags = 1 + data = length 817, hash 7CFB77D9 + sample 123: + time = 2581333 + flags = 0 + data = length 299, hash 90B9202B + sample 124: + time = 2602666 + flags = 0 + data = length 420, hash 7C4664C0 + sample 125: + time = 2624000 + flags = 0 + data = length 512, hash 4C287858 + sample 126: + time = 2645333 + flags = 0 + data = length 512, hash 71422ABF + sample 127: + time = 2666666 + flags = 0 + data = length 512, hash 12E1C05A + sample 128: + time = 2688000 + flags = 0 + data = length 512, hash 4C287822 + sample 129: + time = 2709333 + flags = 0 + data = length 512, hash 71422ABB + sample 130: + time = 2730666 + flags = 0 + data = length 512, hash 12E1C097 + sample 131: + time = 2752000 + flags = 0 + data = length 512, hash 4C28783B + sample 132: + time = 2773333 + flags = 0 + data = length 512, hash 71422ABC + sample 133: + time = 2794666 + flags = 0 + data = length 512, hash 12E1C088 + sample 134: + time = 2816000 + flags = 0 + data = length 512, hash 4C28786A + sample 135: + time = 2837333 + flags = 0 + data = length 512, hash 71422ABA + sample 136: + time = 2858666 + flags = 0 + data = length 512, hash 12E1C05D + sample 137: + time = 2880000 + flags = 0 + data = length 512, hash 4C287851 + sample 138: + time = 2901333 + flags = 0 + data = length 512, hash 71422ABF + sample 139: + time = 2922666 + flags = 0 + data = length 512, hash 12E1C09A + sample 140: + time = 2944000 + flags = 0 + data = length 512, hash 4C28782A + sample 141: + time = 2965333 + flags = 0 + data = length 604, hash 5CC9EA3F + sample 142: + time = 2986666 + flags = 0 + data = length 512, hash C97A4FD2 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.0.dump index 82697f2f5c..34aad010a7 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.0.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mha1 + codecs = mha1.0D maxInputSize = 3528 channelCount = 0 sampleRate = 48000 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.1.dump index 82697f2f5c..34aad010a7 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.1.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.1.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mha1 + codecs = mha1.0D maxInputSize = 3528 channelCount = 0 sampleRate = 48000 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.2.dump index 9cfc34af92..08ca5906fb 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.2.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.2.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mha1 + codecs = mha1.0D maxInputSize = 3528 channelCount = 0 sampleRate = 48000 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.3.dump index 8827b69f2e..19d3341933 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.3.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.3.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mha1 + codecs = mha1.0D maxInputSize = 3528 channelCount = 0 sampleRate = 48000 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.unknown_length.dump index 82697f2f5c..34aad010a7 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mha1.mp4.unknown_length.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mha1 + codecs = mha1.0D maxInputSize = 3528 channelCount = 0 sampleRate = 48000 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.0.dump index 7a90b85f07..e1752d5396 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.0.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mhm1 + codecs = mhm1.0D maxInputSize = 3564 channelCount = 0 sampleRate = 48000 @@ -21,6 +22,7 @@ track 0: metadata = entries=[Mp4Timestamp: creation time=3701898908, modification time=3701898908, timescale=48000] initializationData: data = length 26, hash 4E58F6C7 + data = length 1, hash 31 sample 0: time = 0 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.1.dump index 7a90b85f07..e1752d5396 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.1.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.1.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mhm1 + codecs = mhm1.0D maxInputSize = 3564 channelCount = 0 sampleRate = 48000 @@ -21,6 +22,7 @@ track 0: metadata = entries=[Mp4Timestamp: creation time=3701898908, modification time=3701898908, timescale=48000] initializationData: data = length 26, hash 4E58F6C7 + data = length 1, hash 31 sample 0: time = 0 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.2.dump index b499a43773..4eef118db3 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.2.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.2.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mhm1 + codecs = mhm1.0D maxInputSize = 3564 channelCount = 0 sampleRate = 48000 @@ -21,6 +22,7 @@ track 0: metadata = entries=[Mp4Timestamp: creation time=3701898908, modification time=3701898908, timescale=48000] initializationData: data = length 26, hash 4E58F6C7 + data = length 1, hash 31 sample 0: time = 533333 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.3.dump index 40d39a2132..307d25017d 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.3.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.3.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mhm1 + codecs = mhm1.0D maxInputSize = 3564 channelCount = 0 sampleRate = 48000 @@ -21,6 +22,7 @@ track 0: metadata = entries=[Mp4Timestamp: creation time=3701898908, modification time=3701898908, timescale=48000] initializationData: data = length 26, hash 4E58F6C7 + data = length 1, hash 31 sample 0: time = 1066666 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.unknown_length.dump index 7a90b85f07..e1752d5396 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_mpegh_mhm1.mp4.unknown_length.dump @@ -12,6 +12,7 @@ track 0: format 0: id = 1 sampleMimeType = audio/mhm1 + codecs = mhm1.0D maxInputSize = 3564 channelCount = 0 sampleRate = 48000 @@ -21,6 +22,7 @@ track 0: metadata = entries=[Mp4Timestamp: creation time=3701898908, modification time=3701898908, timescale=48000] initializationData: data = length 26, hash 4E58F6C7 + data = length 1, hash 31 sample 0: time = 0 flags = 1 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c9cec56405dff5426ed532843da77156a90b881b GIT binary patch literal 4996 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 Vv#etF`jm@#1rMRq`ipvI{{{5&t_uJF literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1_fragmented.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_cicp1_fragmented.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..94a81a5f19c34b3e53480b9a78501592a173c240 GIT binary patch literal 5288 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 aASkaU6S>y0+k7izyhHoZ89l|Flm7yQFU+?9 literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..981fb72a80ca123116492387aa00cbd8c5ba05ef GIT binary patch literal 129565 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 L0C1NRl4tloT9f%w literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange_fragmented.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_bl_configchange_fragmented.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..97f5e586d59d21d5b429696361a97d0c22830fdb GIT binary patch literal 130585 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 literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..233930aefda1ead487e5d79f3a94302ea961d26d GIT binary patch literal 257620 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
  • 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 aFY?w@-w!(&-on7ZeAHO9&Lq^EXaE3PZ_j4{ literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_mhm1_lcbl_configchange_fragmented.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e551f787c1f35f6d5dec4b5ff9fc70f6968e5c31 GIT binary patch literal 130598 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 bFsWsxf-KxI8g( zRDS_;ZzhEl$8kcI!-z*C=hn2NzHL0O4p)2mUm6l4?vQWPdB?t5$-cW^H?dp&YuYwMmc7X``fn;wxJ?Rpv3bUgHc!-w+tsKrz0 z5k`acLyxUOdz&ZAT~CrCBig0GyGQl z?zNvlOsmQ6pqC%#P1dSNJD>tut-vxJ&ftO#XaFEET4erO^1E46E){-YaAY{IPboI~xQJPuZD zz!s&1?auJxXj3#GW$1qhpew;i?_1c_wmz!NH!C7k)sc<}3 zRRUJ$c7&XzX9uqK#S&n19kIzJoUUBG>Glg`BJZd|3;IP{B%@lN`m)jyACVy(to7V! zr>C8(-j81>89!kvI#e`7*sJ;g!x`v*(VQIXqymNs7*Amj#nu=@>WO9p4WrZd%w77m z9C*SbA06m_Cb0Ng&TiCJH>qfDKOVQX^*OrC%xr9DCI#bT3(r(kEn!mVB~mx5U~!Au707mQn~D=oT}qNlhnpy+~fY*@q+QCexx5 zQoDdZ4WL0cP84W$)E1a+w;>W#@!EAHc>YX9y=rrFOWXk)H7r`7*NsV$X-a9JP0(3` zGl?S7NK!%sO3EAlNBNP=foL@zBD-D4`YWch9oQ}qfGtyt9a26VaH*$Jd+y#AX9{$s zHyoD`!SaLiIc1PBxNQ@crUrs6ivQ@we)fFrH);SmCMEayq>CLU7310&in)-x0IXct zn#Iapt72`+wfKUljIh#B3Q*e7TF{&#d@q{Fg~o~Hc)^>j3z4u-?R)7%iOU6*j`3|1 zD?945EN(j*l(=@j;s?%c?myZa2R^gdAbGvPvPs2Z^HW;l@&y@NA713g#)bRe=4a_+ zb%Oa+M~Bz4$WojkX1)|t`b~vESE#>vT(M{G$P3A1gT|A^mb7>YA8JdVeXJhXWS?}4 z`cX^N8Qmx0Zs5wiZmn>OikyBABevP!>Yre~!R)otV`*5<-uxDs+FVU?l9U;tBi&RUpL3oeif{pAeO|3EfW& z0B0vck32lX=qbMP&ho5wdecEbu(t>;^sEIrd832MU+M_2ag%u38;gEbk&qpUQC>tz zjJs@D@=9+f?+TE(Az3I?jUu3<%bYW78cq$>HA5KtrSp0s1ciSkS5R)7bt4Vubvc>sI)rC)kDewS;3Z0{H_&*S#>Fj!S36#^T~p<@rZkd4 zBEBA3Ds??YWI1bI&aV1cp|Pi=*_DAO$151laQlxll&BfzNKPCJKT!gIY8S@PU}$?T zF!EGH?@}2@D>|)gAA50wQ|3U%^maV|809-)&0=r;}Jk+X3E-N>1aUU zwb+Pt%=hnY@-og#f$bmHaIPBr9Bdas)Jb6-z1UI@ni-xRz@}07J_r3ZL9%?qp#VU&t=h4h_J3|9Ghf z`w;N*-&<~3{meu7LwBF|?@C0et$F~!$ctQg8EEUn(YzU?{T)PTie?_UN*5AoTxwVz z1564)lv9jdCii{N5a0JkJ+p|G3x$8>QXc;8$4QJrmwoa^NY0V!u}3avixZujtaIki z9S}6BYe~LDL*sn*5kaT_?731oU`ST`*!W}d$VX$O)uifC_~Z*d*HFiqDOgSxv5MNB zZl0B@Iwb`djhs4Gd9kfn_=8RqOXI@>Z&S}D+Q%)Fln8X5kY>r-TWtQccB*UiKsQ6t z2=jF&-?kzdIPW~(!Ke>vvG5myiUD$#1BjxrT%)UOFv0ozua9=T*q546dhOD%rG<;7 z`F0%t_W2qbLQ1VvOpzC1@VrV_(1C{W_A_FtB}1WS^Ok)tjozSYSRrXso$WttGldf~ zzUkp3{*boQ@zMKeA5zXKCeQY~J$Xb(!p|^oCWiQF-?CbkD(Brh3l5kYHw~$@wbn@Q ztb7WA0{(Se>+f!Euz1V{k?GhMA(A`p?QGs)-+af8`s*gwckC!W+5s}DJs)NPfR?hF zkuXvKXJth>K2JF(Br{W6+wwcL**7om(mGn7J^5w=0C*K2x>yZ7pe7cpK5{-Y3$!Rv zYla~L0a*VLlOu?f?Ot*x82f+`I7_w9_JuZ^6g=GwWdpmQSmk|kORZd@+Y6KT?^o=( zl%lnP=R4z7i;i^`xM*eXvvc&XA-cpjIxHt=Ey}z5Xt=^O%=Tei#wgM7qoJ?td!MifTiW2879yL*Dv@5c*O1GF7)knnh z>~(Mv zJ=0bK?CM;p8=HxBW_HByG$X_5Rg0S-b=8b6JcrnFUa)GXo~@bm=$d`3iUQRfoYx)X zC$V;T`y_OlFO&$(%I8)i4;ak%%qch_yo zj2%n8citW-c$PD8iO+H@#J2O!xYUDUoN20aR+lKtZFn!X-Y|c2=~k*>LuNdY$BJ-{ z<=*>}FH$|5?=pvrdSs+6+UX9IaMgwvpCZkEBvyd5tqO<=0)tkqNf=*BrBZFNUACrNQ@t7rky z+@>!bHZK=GHT^vM`pu2XRV{#Ad$vu45Hj2rUppY9&o-- z*_O=bHsv4X8Dmk2{iHF17(Xf#{52i(`RZ#5;CtCvm9Yeh4}L_Pvd*zaG_LzQC)7Cj zkz+tU5(U5no!`X7&CWS@Qgh0!l`6DCM5_V?2muHI2muIzAB(`(J+l>W;PaKMz6&c} zb*X~~_nBtgLgQ>|4syD~l!6=c04O{Dn$~<}*l1R50kGP6sX>d1Kl6p?J0-^Lxx;^5%pc1g5(g&m>V%r-Y(UE4d~;7ARwISCp-2e9Z!wg)kS9Or+m#?>NcG zZAW{1FsHCKAW@g5^XhAqeawBdb=>YY_ghDh%_}6Y;mcEP4<`={C1*;?$D)iM1zjZ< ztY+Gt7ie#JZ{b1Zm@D0}YlOE|8{3sb{R7B3csefAUu#JhAlImd!*=PI76j9uY`>xP zYH#Ah3Z4=*<0Pra$UVH{w%q2C6Fdops~4y^AjHO)5WeWw#`spV6@h&rNl=1Jt^nE$N9 z{&Zzgq!eZrz|4RjmY_X!InCqp<2>n@&EK&b{I?J?ElYVVfiF?8-uFc+S@|A|Gdw$W zn?_(3yva}2Mec+=ojw#G1Rw+;1Rw`sdD1lXuUooFL{p-*+!l743JF zOJ|0m+O0O^*1n+^&tJcJ0e9x^X;f)8Y;|j&7#p&*7EX@yAWfMjJb#)*?mFFM8^eyG zan&8{H?%GuJm*kPnWE>JQNUNbZTqJ9d%YvC3{ObC9cuPqZ4b9I;}ZkojV(Gi5%mpk z_GoN>R*|Qvwk@CsW_fDYC54_`?p%5KDQ=-6*k$cxw{kzCYDSKBhsm<%5!n_rbJ@+8 zt1-ItQNC_3ojvY)U7w9nJD}S-*(-lT9{uj1)Nr{IJzkeR+yIGvWDs?6GHjtQ&4$=)h|T`r(^JqDAp{@tqzc7ge-8zH-gaCxV4@cnZo*81Z zAvPOgv;QRL1RVw;03iS&@V`gk*w;NX#AZWm_OD7ILH7+I03iS&@J~SC>z)~6vmrM7 zhf_IF1t0_<1Rw-{VFbSJnISeCVzVJO`+rYQL05zjfDnKX_>%}|ecdxdY&OJZ{}b38 zs16VU5CRYazbFFGmqwuPW<%f2{)IU+=++?wAO!x22z)(ehS+R~&4$?QKgl^khd~HH z2tWw@?-9`bx@U&iY>3VNMHwXMwjl%{1Rwh>A8tnh~`T>O8 zVF=(;fF=NbvNrjsyoJFU@{Jk!A zC;}}EvX(Rh2VK(AUyJKM6L6_JY7s~wlgE>_yF+S#FB*6(?vy;^Sjrc>MALz{_#!27 zFup-a%QKi?sxFCEl+nUZLcwTre`nPDc<-(W!Ml4XPQ_kKjbb84Fsd752#SbZQ8!~u z@xz55$!R)4Cp?y>o6&k&HsO9L?j!?x8`DB z-FS*)Fm8W!57hv5j!&jPxojDU0D`OeuZPO%YOJBPogfu!alvRy&v5}Wb2y_y{1*gp z+6l3FL8~v-;TnE8JcV`paub_)m_GjmgH{{RL&aG7>?G{UA+I%Ct}01DiOfj?|OIGdR| zf82thuu-G4<4Icpz`>qJ4IV~`O#}d3a3NS;jj>%DcK@Fk<6!G~831zQZA^`vD`6?T z?qsyGQoAPV4K0S45tZI3IT!+f6D*^}06zfmE@XtTuc9))Q6@_Kmb$#;qyzdMnKhG8IAUt zz~Urm2=D>`e~CZ<*S3sI1S<17OIl)D8rQZoE+7F14UlFx52kaGyu`=HXT!%QU?C11 zCbZzNBzehZ4G@x7(pMhopMU}Vy!idVv+VMBI@_Q3b5^00C`t77rEp;s!ma!YzObsR z792RlVXd2_Vqgr_)2amag$QXwdRQeW!%b!sVwm1dPI0i(cNdw@5EEhytQAfO(9@xK|~|+{teEVLAC1fy)9Q&mxUVQ zIqLRhnDjHY9pji)ee2H{j(9h)$xO?Fik?a;J$s&+wzu zWOlXl3$`T<4C34)nPEHk%E^+nrXvrHR*8DNb4b3=d5miJ19N9u7a(qX7_KZv^iogi z`%A>d+w825IbXX^XDjnQ0Y59BKjS7DA>E0A{KP4R8@B@KhoZJZ_uVn^QVZ z-#6viFTl%Yh7EtNR!9T_u$JiTue3iwrwmjl3;3$D0Sdf#x4?S2aS^)smG+=E5Jbv$ zFS!$peZUBurP^ovLYqwro^FP+fn89n@;cC#1qgX1pt-uqIOeQixYv06gF7QDf@y zs~K26q}1;~+}X)6JCb*|KpXs%mX zXJ$w6uiM|SxxwJ4Ej)+Va$c}%r=G2u^zU2pYwgCY4Joysqa8Q@_^sHr0mi3M!*?3Q zr=h@xhPSC6A-VDp)QZ-OR$+rguRN}&f9HDiK`5_j05gXMh~p+g0}Em`oYSkFADI@H ztzA0U3*FTQ1qgwE1p-gLc8GxHL%{y-a^X|c-zPgNSGzLgnxZigLe${*4#p3_$F}(B|->52tWw@bO?Oi z|9?I0fyUX?9OQI|DFrv?0Z?}QHLdx|u+gmA0${cCQiB#1f94C(cS?-gbBFtsHFxEu zbq9)&9=hfFJ`$u%*?zfI0n^#C)!p6B6-}2@%g{9}M(J>X9eN=GdLiORc_>5W zLI^+zKnVO@2z=fDLoY;N`R*%RS*Fe3C%$7=ofAF}>8~gnk=a&Vxu5458@7QM_|8bY zC7IV>#IWT>kECkjhKqgT2mXLQ_>^tS>y4R3gMdRBynF-J5V~;)KYn8rMywwu)L8Kq)oD7u>Apju&A@H{%@OA$W@&6G2|I^W2 z&<#NdKnOqxKnQ$^0Qf=#3I+76e;*R!{~`V#;{X3H{tYSzLI6SlLf}Us@OA$W@&6G2 z|F=?5P+<@P5CRYa5CT5{fv@|2i2sN9|1U`*Xb(aFLI6SlLg1%E0OJ24|Njl%huC-K zA^!hI@o`YO5CRYa5CVS_0tdey|3myg#Q*;QA_^)JLI6SlLI6VG??eFm4-q!_|3Ume z#Q*t|V5smBq&IvURe&iT{9D@R2g3fPZ;%4WZJE=M4)=CvxA$qZaAA)uv z1Rw+;1Rw-{P6WOh|HGVk&v`NB#lPz=`5?-hBF{>E`an?RR=gGYiD3XcT%U^03p~F<_+^#o?Rr$q7qm-rod0ZG48((O?>VVy`AgHd=jB3mn)-=-!Ya-NHp_$l${&RKvTpdw^gKn zX&Z5pyNd&jy)t38KHN>=L`y2){-qum!HY0Y(p}6?z4TBCF?98`N2^G5k6ISTaa-8F z|rH5)ivRC>~g)LqNcM*z2%J*%jfujegq z_tJ8UhK(W)^6}B-pzB+YaI_gFW18@VJggBK6`bV6y1K}V0MJ=3jutQAF3g%SX)!L1y}G?y$71uD z@rOjHkq5jY9XR0xQTX*o8A!vam6xRB7IYKCgS@NreOYWxrs&NoT7muZjJBPb}yr?1vBQy`mGO{cwS^~z+|+H%c! z(E$No$uF4+1L^~qgBw|xrW(pPUe;8v+Ct_5QSNy<7lMnVrf?wVF zZPaN#KU_K4Wp+M7IeGqn!fnugUmEuZ`~okIkb=8@6IrbJbV-5t4&>0H8Z^#rVH;8J+kDU+AA^I8re17TdTt-5Upnh`W!dw^ z6D|Xq&aNhze4ch9ad8g@*NKUV$)Sc&MsbG*2JBx@>z3~}$zU&ZQyUZ@1pYw?%nzu; zy#bww4Icr9o#PE+B%eJk*jacf{IFKI&ynM|tqF9z>1!J5SSSLdU>pi#7D1fLOKn8E zYm$Zp*%r4)8ZI0xdm-MM8^!*_ImAb}(%j()d-t1%XX|Wt8k1i*rP*zc8S9#6uN$UD+nh$a{@!pF6Bn?D~I?z7!3)To)ER(SBP8WZ9l7R zY{em@s_8ijv%h)n;3B+PUrvP5?UtsQ>$t?h8PYLg>OGEb>MU~FCb>b^C`O1JTxmFO zTzsqX>@nAiyYrFuCj@a>u3)mLS;s|k`85j?a+RK4Ln5CqK8V3Hw4#D%F*hbmu-zKs zhw~cI8U#L4yE9~R>pAD!sjW(Eidy3K5_=6}4!_#RXRGTFXZ?2a>DwfEe3$eIB_hq#{_?zuzwj8TFU6(mcidJg3pc9dqw{3w_Hnq9ErkhNY2h^DoD3hV5b zpO~Cf!ZrS6*5H=jKh;B)3m5SZJ+HVOQU8~2{eN*^d@m81Q1@u|65gXwsQ_jjK3?xepo+$s}1r^}!gbm?B@mKVG9aK!o9ZO+E>a79^qZz-=6G zIfG5a9uBg_V*r4Q-Fdqj!{h(}kJZN1$hi`hA_^QJrIkh#Uox~9Vn*0Bf)@$vE5 zz{Qj}aG217!xBtr1_;S3=_@Jw=fPX(7X|S9foIv}?*?=McoLus=c@xyxP?Ue`chkg z1cDo|)j!#=YH!9uN<|%o3h{}mF+h3@P_st>)}&#IQVd8S{i!fWi5Eua+=-Q3S*bXd zRx)6TStMUvp^;h%@YJ|>@WN|N=ZkKuzs3ct>P=KONidG7y+M1G4sG?LSN04FzQ>emx3jO+H25hk+k8e{}^Da3l zw`rI=L;gP8g54Sur?0IYOqAhy;Ym^bs@ekAXd{RA z`5{l-?Cqf#%pef(l*qlzHD&Dxr&%1pD^Fnr~MV+z|jVRZ9L6}fD zHRG)qHYHA+0~&oR0=&4!DT_N#%{|*AdCbM_nub~O?BhIa8v>Xfk>Ar(=JQat4M&j@ zB2ZG^aBZ6_00E}QgC>UvGjn3zLt+3k7r%&>yv`JPGt&4&WFLzZ5`b}Q+$)f!M?bmf z75=zM_2K4)x2Ft@KHYb9TFzsm_`Ea3fdANONL*o#}xAM?HtCs;u+TNfBZ?ezl)L8}%3 z0w;-|a?Fa)ES8rg)B&6kC(IV)iLS{yrR!Z*)%Q7XhZ9$bB6dqMOtqA)sq2J`_P#ko z>#ebLSa`q`WrgN4@m69cgad zJBd95|MQu;FzE#Swl)AoNQ(+Xi}C`te8iF~Ba-b)o_pGi0>f{rT?EuNb=owDobEj& z)MKN#@UlUSsIwtJw;Au%U{^D1A?pR5DTKTBg?Bu+uJ2BYpGbnun!u|0=^M9Q=gx_y zJ?2Q+Pgiwz&eW73b@bkIlG@!Jl|fQxeJ4P7fF^J1n4h||$J>%8ZIvI?0&W~I1p2%! zvT%JFX=9|a1pcGIyBAbkpvp69tR=vp2{4tQD%yMRfNec28CmvLXbap-t(H%nAh(oB zDI-!ZhA{>W9u4PpHwGhsum)UJenT-6fa&RLiW#}4m^r{SP}71+_ABL#2D1RyRpkuF zDrY3PG-4A$J-rJ&VF$QKf(tviJO!6mf3VDfbp+4-GYj{lf2ESwg}XoRCmcX=2$Fyb z9v6ngvKc{u4{WMuR>1TTeDDfw&{yT-KcsXMMU+^UUHbCf>GSosH)Sx1_q;ONQ#wgP zi@vj@|JbkCFW+)ShFm${V3i_dLOy9X*7l zMXdpo)Q@C}m|e4@FOo29n`Kmac%G2wZr7r|E|XF|Rp2;4pT{j^7-mu;&v5}Wb2y_y{1*gp+Of0CfIPXX z6d1vf>pDN77;j8kqa@Sl%mnA{-c&_@5kRkE!N3H#@G3ox^_4(M7<&AY!~@~%P5U>C z$1Ly$ADvC->AV))`Oq$cvH|Csn8}C~mB=KlMtFaDDrqMLmuS$9C$GgN9JO;xS_UF% z3cD*+XGM7}U?n=#NuG@HC)`L5+{mPsV?5}0YkU9`0px0!a9j*KT+NfIwsZT)oSa(2 z#2L{8wlg(57ea+=E%X@AP9z46nFYbXYs$!K^zKelx-i2b999i?kdI-# zzzu57RUKhCT?-xrP@LC=aiGBel(Z=f04(_kDyA0*y2ln5x%e|pRRg%l-9ob|Jfh3h zrNbXPqKW|+qe7Kx$Yk@$S^AS_weo#r7rjU$PJW1cYK9VduDKNA_G0&i%D{KAA#odgQY|6hgLtu;cT2Kv_cIE$y7N{g@42tg zSq^9II68cu=6XtnjTU*nEyZ^24lj``>%E!}h**{>Va3_c;@Eba`f%nFY#}c&n%YHx zI-BhT)rTAFaRPgnEMc?bN;@BKP@?>w+v8fZG1-)glKcRo02jXP-&@ychR}a`9clQK zs%_<_+^yKKRmDiU1{JbF7bgA*Dl0yMr_(Eym;;k5!EDIb9W0NLFz&Xg6Sol*S4SSZ z?NVwmf1NO~Te~_ja(s`?HI|24`l=mbuNq`3-n#2#y|QTefSB~;*1g3S;9Kj(n~r}d zo34|3OXM-*^=9uxjH>tfh6XD#K(2?m;eF2uhACz}!*{tI$fbKv8~ga59*z&|x2Qk3 z!qzrbQ+Rgj^rHmIBbx@VlD|ygWC_S2w9(9<@{@gZGdNdE#%cGo;hhVvS5o#rdJyk= za~z2xVz_)fHsHT}I_nuorMwmaFVHmujxc2gc;BAG3P8z%eIohJ!`srCbG`x@AUYCZ2; z3CiHP#k@EYpU29^*St7o&cJ!)mL>NE8irSQX+v@79=r*+#I<*LzMBSZBqc53DXN;v ze5mvBT}|GF_$%)!j?oL103z8#;ahS}3*HwYp5Iqfvx(s1h^N(uZL)MGcV^xJ9n&U;y1zRaLJkN0_N}3dcE5}X}3zuXM7MmTF%D}P# z>jK!^z;N?WmumA(Gc)Veme_JRGlR|a-lseN{7eQ7_Fxt#axJ6_&mmrp)84sFFbaCe zpg?%APBl_sgoUZ+6HL$p`MVEfrw8}HD(upQ4Sy0Xq(J_%0twdC_$L4QPfKk7Ld=k& z`;MXuHu!gl^Lx$f^*S*_iu(5zb>F{APk&L_o$JI5Dea$DY0rNlW=LuOq)PkdIx#~^ z`=?df-0Q>)Dea$DX{UZ6W=LuOq)K~C7dHKA+zcu0-&NXON53#$|J6HOy0GO>VuzIY zUsvJ=-y6C9OVYss_B#1P+WmXl-RfT=&%avD%ysgI)c)_Q{gi*TrvG;3Io8P^(*M7n z{xAJP{*eCv)%5@5I{8ET|JT$1kp2JJh2lT)w+Q~X+y9H}o_{MoNdNz8`hNv0f2<2L zPSS$qfY65$E>rmoITD@ z_b4T>-}W045UtR<=;Z$L@$zhE93}Ggp3^qexMD$W;rC}wj-L1K-Msi3^W^jZZ!8W~ zXh;_W5SS+$`YNw=_pr>(s^Kwg)9GsinN|w;&mwOOoO!rLPlZ zYLU`VqBw$hlBThP&_C%o{jqevmrf&9Zq$<^%GZ+OB_@ye@JemoEqGr5!L{B^@h@zD z_HN~aVa8#gTP#5AiwX_ZN2~3y@7J0v_c8}-% zMA9gZ$S-aEB**(#6TN?bDBo zkzF~VB#1j_f7R>+&Fk=8c1NB{mOm+|_T8#*z~*|Tze6a$o@dToK6No40}q46183N_ zpp5e;pVXi!gb5v%W@#J50}knmjm_Xo@)u8us1|p<8WyE4FH=Hu$>GaCAo~2TmhS$x+%rvm^x94Edz0!@E`cKBYu0S3-W9KQ-1A{kY78f zKK_(n`vYBAA~er}eLVjozxH6hze;TX2gi3nV)h5dS582IYI zy17v3-J`$w?$N)V3%mM-{2?yvSL4FG*U2B!|G%F8hvq_l?YWT0>z;pTF66r}&;GRb z|K)Y^hxGrir~h}XlmFMVAkeo5{@~jK|9boX-WT$R?EhcQ{%=|*e@OrTditMpo%|vF z|Lgg}#(yDyNdNz8`af@-{2~4S>*;@p|Npi5pWb!PKg9q1di+nIE?jTTM+1iDBeQ$; zFy70qp)dMjX4gIoZOZX@@+({0a?WxRtLhO3R05oO&EDtthMJz@?BJOqu8NkPIh87g zr@^dGb*JMzBhvT&WLLR_oTET_Z%nsNRNl4Msi5zt}A% zg-=KpIFNO}TbHA{XQlaM{xP=u@h*E5?K`&cu=i)bYDzg$eiaC9*8HfQLuq9|s`V0^6%vJ+9s-t*KYiu+(kZjOj0$LCa+JBz_3IvQzo zQ7?B7tq{>CZe!zG5sMgnbRn=uOe5mG)lYf43-_kvf)<$ER;P7<#A zniO6EhKlNoGsEF8NK-GN6g5jLk1xaoHON!4I2<1OpxHVh-=n_h)++5PTJ+Mb1sfQj zl}6-~E$=a&>1WEFct1}*!PLL{ldN3#tHOYLUTDmhKiCS+Ji!EcKl|zj0Z$$9ZwVRI zk%>IZwiEmpPJCu4tc%K*sZ#cb4!0g~X)G$d`wXX#Q5MEVXK+}*Bp3MhHNKs?1N)J2 zZ?rCK?o$i9$hYadLH9sgS5b5MmUzQ-ns)|9AMT#N1J;1?BI!edybz`>-eYCc5yy#A zJ4wvl57=+QpCM6by)ARQ`$44+MZ)b`92EhFgFa^{``M&l1j1QVZ%p35`<^PI6lXx? zqB^$+OnSa#i0(x0_?vqJGP%r?q9SJoaU4zGzET%+zqo?0O!>r9NP(!YifW{w0dS~D z>9`|dC(PTk=ej?Q*yA~O{RTb0vI5tw!o%81PW*`vlI*Bqm)(zBUyKz}jPMh__Za#3 zfILt7R5oy?)3DF8rY6wJYs=isz1yj*mlC;h;UkYrx#`*O4xhWa|HHEql~=qIPbsP< zVy*`c@IRg*MT)#k^p7_P^V=gi+oM2*`yzSgxb^@j`RM?&p!+dsb#N1JvAf4J*EkpSge6Fp6{h$gEPG8^ z>k@OI@|EQyG^Pex$*W&?g?Y}*GG+B-RfFz^qlgyT)o;H726sLDU(a$)paH;LPC%ai F{{S2PWTgNA literal 0 HcmV?d00001