Merge pull request #491 from v-novaltd:dsparano-exo128
PiperOrigin-RevId: 574129451
This commit is contained in:
commit
009d48a75e
@ -4,6 +4,8 @@
|
||||
|
||||
* Common Library:
|
||||
* ExoPlayer:
|
||||
* Add luma and chroma bitdepth to `ColorInfo`
|
||||
[#491](https://github.com/androidx/media/pull/491).
|
||||
* Transformer:
|
||||
* Track Selection:
|
||||
* Add `DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness`
|
||||
|
@ -43,12 +43,16 @@ public final class ColorInfo implements Bundleable {
|
||||
private @C.ColorRange int colorRange;
|
||||
private @C.ColorTransfer int colorTransfer;
|
||||
@Nullable private byte[] hdrStaticInfo;
|
||||
private int lumaBitdepth;
|
||||
private int chromaBitdepth;
|
||||
|
||||
/** Creates a new instance with default values. */
|
||||
public Builder() {
|
||||
colorSpace = Format.NO_VALUE;
|
||||
colorRange = Format.NO_VALUE;
|
||||
colorTransfer = Format.NO_VALUE;
|
||||
lumaBitdepth = Format.NO_VALUE;
|
||||
chromaBitdepth = Format.NO_VALUE;
|
||||
}
|
||||
|
||||
/** Creates a new instance to build upon the provided {@link ColorInfo}. */
|
||||
@ -57,6 +61,8 @@ public final class ColorInfo implements Bundleable {
|
||||
this.colorRange = colorInfo.colorRange;
|
||||
this.colorTransfer = colorInfo.colorTransfer;
|
||||
this.hdrStaticInfo = colorInfo.hdrStaticInfo;
|
||||
this.lumaBitdepth = colorInfo.lumaBitdepth;
|
||||
this.chromaBitdepth = colorInfo.chromaBitdepth;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -116,19 +122,44 @@ public final class ColorInfo implements Bundleable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the luma bit depth.
|
||||
*
|
||||
* @param lumaBitdepth The lumaBitdepth. The default value is {@link Format#NO_VALUE}.
|
||||
* @return The builder.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public Builder setLumaBitdepth(int lumaBitdepth) {
|
||||
this.lumaBitdepth = lumaBitdepth;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets chroma bit depth.
|
||||
*
|
||||
* @param chromaBitdepth The chromaBitdepth. The default value is {@link Format#NO_VALUE}.
|
||||
* @return The builder.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public Builder setChromaBitdepth(int chromaBitdepth) {
|
||||
this.chromaBitdepth = chromaBitdepth;
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Builds a new {@link ColorInfo} instance. */
|
||||
public ColorInfo build() {
|
||||
return new ColorInfo(colorSpace, colorRange, colorTransfer, hdrStaticInfo);
|
||||
return new ColorInfo(
|
||||
colorSpace, colorRange, colorTransfer, hdrStaticInfo, lumaBitdepth, chromaBitdepth);
|
||||
}
|
||||
}
|
||||
|
||||
/** Color info representing SDR BT.709 limited range, which is a common SDR video color format. */
|
||||
public static final ColorInfo SDR_BT709_LIMITED =
|
||||
new ColorInfo(
|
||||
C.COLOR_SPACE_BT709,
|
||||
C.COLOR_RANGE_LIMITED,
|
||||
C.COLOR_TRANSFER_SDR,
|
||||
/* hdrStaticInfo= */ null);
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(C.COLOR_SPACE_BT709)
|
||||
.setColorRange(C.COLOR_RANGE_LIMITED)
|
||||
.setColorTransfer(C.COLOR_TRANSFER_SDR)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Color info representing SDR sRGB in accordance with {@link
|
||||
@ -213,6 +244,12 @@ public final class ColorInfo implements Bundleable {
|
||||
/** HdrStaticInfo as defined in CTA-861.3, or null if none specified. */
|
||||
@Nullable public final byte[] hdrStaticInfo;
|
||||
|
||||
/** The bit depth of the luma samples of the video. */
|
||||
public final int lumaBitdepth;
|
||||
|
||||
/** The bit depth of the chroma samples of the video. It may differ from the luma bit depth. */
|
||||
public final int chromaBitdepth;
|
||||
|
||||
// Lazily initialized hashcode.
|
||||
private int hashCode;
|
||||
|
||||
@ -231,10 +268,34 @@ public final class ColorInfo implements Bundleable {
|
||||
@C.ColorRange int colorRange,
|
||||
@C.ColorTransfer int colorTransfer,
|
||||
@Nullable byte[] hdrStaticInfo) {
|
||||
this(colorSpace, colorRange, colorTransfer, hdrStaticInfo, Format.NO_VALUE, Format.NO_VALUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs the ColorInfo.
|
||||
*
|
||||
* @param colorSpace The color space of the video.
|
||||
* @param colorRange The color range of the video.
|
||||
* @param colorTransfer The color transfer characteristics of the video.
|
||||
* @param hdrStaticInfo HdrStaticInfo as defined in CTA-861.3, or null if none specified.
|
||||
* @param lumaBitdepth The bit depth of the luma samples of the video.
|
||||
* @param chromaBitdepth The bit depth of the chroma samples of the video.
|
||||
* @deprecated Use {@link Builder}.
|
||||
*/
|
||||
@Deprecated
|
||||
public ColorInfo(
|
||||
@C.ColorSpace int colorSpace,
|
||||
@C.ColorRange int colorRange,
|
||||
@C.ColorTransfer int colorTransfer,
|
||||
@Nullable byte[] hdrStaticInfo,
|
||||
int lumaBitdepth,
|
||||
int chromaBitdepth) {
|
||||
this.colorSpace = colorSpace;
|
||||
this.colorRange = colorRange;
|
||||
this.colorTransfer = colorTransfer;
|
||||
this.hdrStaticInfo = hdrStaticInfo;
|
||||
this.lumaBitdepth = lumaBitdepth;
|
||||
this.chromaBitdepth = chromaBitdepth;
|
||||
}
|
||||
|
||||
/** Returns a {@link Builder} initialized with the values of this instance. */
|
||||
@ -245,9 +306,27 @@ public final class ColorInfo implements Bundleable {
|
||||
/**
|
||||
* Returns whether this instance is valid.
|
||||
*
|
||||
* <p>This instance is valid if no members are {@link Format#NO_VALUE}.
|
||||
* <p>This instance is valid if at least one between bitdepths and DataSpace info are valid.
|
||||
*/
|
||||
public boolean isValid() {
|
||||
return isBitdepthValid() || isDataSpaceValid();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this instance has valid bitdepths.
|
||||
*
|
||||
* <p>This instance has valid bitdepths if none of them is {@link Format#NO_VALUE}.
|
||||
*/
|
||||
public boolean isBitdepthValid() {
|
||||
return lumaBitdepth != Format.NO_VALUE && chromaBitdepth != Format.NO_VALUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this instance has valid DataSpace members.
|
||||
*
|
||||
* <p>This instance is valid if no DataSpace members are {@link Format#NO_VALUE}.
|
||||
*/
|
||||
public boolean isDataSpaceValid() {
|
||||
return colorSpace != Format.NO_VALUE
|
||||
&& colorRange != Format.NO_VALUE
|
||||
&& colorTransfer != Format.NO_VALUE;
|
||||
@ -259,15 +338,16 @@ public final class ColorInfo implements Bundleable {
|
||||
* @see Format#toLogString(Format)
|
||||
*/
|
||||
public String toLogString() {
|
||||
if (!isValid()) {
|
||||
return "NA";
|
||||
}
|
||||
|
||||
return Util.formatInvariant(
|
||||
String dataspaceString =
|
||||
isDataSpaceValid()
|
||||
? Util.formatInvariant(
|
||||
"%s/%s/%s",
|
||||
colorSpaceToString(colorSpace),
|
||||
colorRangeToString(colorRange),
|
||||
colorTransferToString(colorTransfer));
|
||||
colorTransferToString(colorTransfer))
|
||||
: "NA/NA/NA";
|
||||
String bitdepthsString = isBitdepthValid() ? lumaBitdepth + "/" + chromaBitdepth : "NA/NA";
|
||||
return dataspaceString + "/" + bitdepthsString;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -282,7 +362,24 @@ public final class ColorInfo implements Bundleable {
|
||||
return colorSpace == other.colorSpace
|
||||
&& colorRange == other.colorRange
|
||||
&& colorTransfer == other.colorTransfer
|
||||
&& Arrays.equals(hdrStaticInfo, other.hdrStaticInfo);
|
||||
&& Arrays.equals(hdrStaticInfo, other.hdrStaticInfo)
|
||||
&& lumaBitdepth == other.lumaBitdepth
|
||||
&& chromaBitdepth == other.chromaBitdepth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
if (hashCode == 0) {
|
||||
int result = 17;
|
||||
result = 31 * result + colorSpace;
|
||||
result = 31 * result + colorRange;
|
||||
result = 31 * result + colorTransfer;
|
||||
result = 31 * result + Arrays.hashCode(hdrStaticInfo);
|
||||
result = 31 * result + lumaBitdepth;
|
||||
result = 31 * result + chromaBitdepth;
|
||||
hashCode = result;
|
||||
}
|
||||
return hashCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -295,9 +392,21 @@ public final class ColorInfo implements Bundleable {
|
||||
+ colorTransferToString(colorTransfer)
|
||||
+ ", "
|
||||
+ (hdrStaticInfo != null)
|
||||
+ ", "
|
||||
+ lumaBitdepthToString(lumaBitdepth)
|
||||
+ ", "
|
||||
+ chromaBitdepthToString(chromaBitdepth)
|
||||
+ ")";
|
||||
}
|
||||
|
||||
private static String lumaBitdepthToString(int val) {
|
||||
return val != Format.NO_VALUE ? val + "bit Luma" : "NA";
|
||||
}
|
||||
|
||||
private static String chromaBitdepthToString(int val) {
|
||||
return val != Format.NO_VALUE ? val + "bit Chroma" : "NA";
|
||||
}
|
||||
|
||||
private static String colorSpaceToString(@C.ColorSpace int colorSpace) {
|
||||
// LINT.IfChange(color_space)
|
||||
switch (colorSpace) {
|
||||
@ -350,25 +459,14 @@ public final class ColorInfo implements Bundleable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
if (hashCode == 0) {
|
||||
int result = 17;
|
||||
result = 31 * result + colorSpace;
|
||||
result = 31 * result + colorRange;
|
||||
result = 31 * result + colorTransfer;
|
||||
result = 31 * result + Arrays.hashCode(hdrStaticInfo);
|
||||
hashCode = result;
|
||||
}
|
||||
return hashCode;
|
||||
}
|
||||
|
||||
// Bundleable implementation
|
||||
|
||||
private static final String FIELD_COLOR_SPACE = Util.intToStringMaxRadix(0);
|
||||
private static final String FIELD_COLOR_RANGE = Util.intToStringMaxRadix(1);
|
||||
private static final String FIELD_COLOR_TRANSFER = Util.intToStringMaxRadix(2);
|
||||
private static final String FIELD_HDR_STATIC_INFO = Util.intToStringMaxRadix(3);
|
||||
private static final String FIELD_LUMA_BITDEPTH = Util.intToStringMaxRadix(4);
|
||||
private static final String FIELD_CHROMA_BITDEPTH = Util.intToStringMaxRadix(5);
|
||||
|
||||
@Override
|
||||
public Bundle toBundle() {
|
||||
@ -377,6 +475,8 @@ public final class ColorInfo implements Bundleable {
|
||||
bundle.putInt(FIELD_COLOR_RANGE, colorRange);
|
||||
bundle.putInt(FIELD_COLOR_TRANSFER, colorTransfer);
|
||||
bundle.putByteArray(FIELD_HDR_STATIC_INFO, hdrStaticInfo);
|
||||
bundle.putInt(FIELD_LUMA_BITDEPTH, lumaBitdepth);
|
||||
bundle.putInt(FIELD_CHROMA_BITDEPTH, chromaBitdepth);
|
||||
return bundle;
|
||||
}
|
||||
|
||||
@ -386,5 +486,7 @@ public final class ColorInfo implements Bundleable {
|
||||
bundle.getInt(FIELD_COLOR_SPACE, Format.NO_VALUE),
|
||||
bundle.getInt(FIELD_COLOR_RANGE, Format.NO_VALUE),
|
||||
bundle.getInt(FIELD_COLOR_TRANSFER, Format.NO_VALUE),
|
||||
bundle.getByteArray(FIELD_HDR_STATIC_INFO));
|
||||
bundle.getByteArray(FIELD_HDR_STATIC_INFO),
|
||||
bundle.getInt(FIELD_LUMA_BITDEPTH, Format.NO_VALUE),
|
||||
bundle.getInt(FIELD_CHROMA_BITDEPTH, Format.NO_VALUE));
|
||||
}
|
||||
|
@ -78,7 +78,9 @@ public final class FormatTest {
|
||||
C.COLOR_SPACE_BT709,
|
||||
C.COLOR_RANGE_LIMITED,
|
||||
C.COLOR_TRANSFER_SDR,
|
||||
new byte[] {1, 2, 3, 4, 5, 6, 7});
|
||||
new byte[] {1, 2, 3, 4, 5, 6, 7},
|
||||
/* lumaBitdepth */ 9,
|
||||
/* chromaBitdepth */ 11);
|
||||
|
||||
return new Format.Builder()
|
||||
.setId("id")
|
||||
|
@ -150,11 +150,12 @@ public class MediaFormatUtilTest {
|
||||
.setAverageBitrate(1)
|
||||
.setChannelCount(2)
|
||||
.setColorInfo(
|
||||
new ColorInfo(
|
||||
/* colorSpace= */ C.COLOR_SPACE_BT601,
|
||||
/* colorRange= */ C.COLOR_RANGE_FULL,
|
||||
/* colorTransfer= */ C.COLOR_TRANSFER_HLG,
|
||||
new byte[] {3}))
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(C.COLOR_SPACE_BT601)
|
||||
.setColorRange(C.COLOR_RANGE_FULL)
|
||||
.setColorTransfer(C.COLOR_TRANSFER_HLG)
|
||||
.setHdrStaticInfo(new byte[] {3})
|
||||
.build())
|
||||
.setSampleMimeType(MimeTypes.VIDEO_H264)
|
||||
.setCodecs("avc.123")
|
||||
.setFrameRate(4)
|
||||
|
@ -66,6 +66,8 @@ public final class NalUnitUtil {
|
||||
public final int width;
|
||||
public final int height;
|
||||
public final float pixelWidthHeightRatio;
|
||||
public final int bitDepthLumaMinus8;
|
||||
public final int bitDepthChromaMinus8;
|
||||
public final boolean separateColorPlaneFlag;
|
||||
public final boolean frameMbsOnlyFlag;
|
||||
public final int frameNumLength;
|
||||
@ -85,6 +87,8 @@ public final class NalUnitUtil {
|
||||
int width,
|
||||
int height,
|
||||
float pixelWidthHeightRatio,
|
||||
int bitDepthLumaMinus8,
|
||||
int bitDepthChromaMinus8,
|
||||
boolean separateColorPlaneFlag,
|
||||
boolean frameMbsOnlyFlag,
|
||||
int frameNumLength,
|
||||
@ -102,6 +106,8 @@ public final class NalUnitUtil {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.pixelWidthHeightRatio = pixelWidthHeightRatio;
|
||||
this.bitDepthLumaMinus8 = bitDepthLumaMinus8;
|
||||
this.bitDepthChromaMinus8 = bitDepthChromaMinus8;
|
||||
this.separateColorPlaneFlag = separateColorPlaneFlag;
|
||||
this.frameMbsOnlyFlag = frameMbsOnlyFlag;
|
||||
this.frameNumLength = frameNumLength;
|
||||
@ -382,6 +388,8 @@ public final class NalUnitUtil {
|
||||
|
||||
int chromaFormatIdc = 1; // Default is 4:2:0
|
||||
boolean separateColorPlaneFlag = false;
|
||||
int bitDepthLumaMinus8 = 0;
|
||||
int bitDepthChromaMinus8 = 0;
|
||||
if (profileIdc == 100
|
||||
|| profileIdc == 110
|
||||
|| profileIdc == 122
|
||||
@ -396,8 +404,8 @@ public final class NalUnitUtil {
|
||||
if (chromaFormatIdc == 3) {
|
||||
separateColorPlaneFlag = data.readBit();
|
||||
}
|
||||
data.readUnsignedExpGolombCodedInt(); // bit_depth_luma_minus8
|
||||
data.readUnsignedExpGolombCodedInt(); // bit_depth_chroma_minus8
|
||||
bitDepthLumaMinus8 = data.readUnsignedExpGolombCodedInt();
|
||||
bitDepthChromaMinus8 = data.readUnsignedExpGolombCodedInt();
|
||||
data.skipBit(); // qpprime_y_zero_transform_bypass_flag
|
||||
boolean seqScalingMatrixPresentFlag = data.readBit();
|
||||
if (seqScalingMatrixPresentFlag) {
|
||||
@ -511,6 +519,8 @@ public final class NalUnitUtil {
|
||||
frameWidth,
|
||||
frameHeight,
|
||||
pixelWidthHeightRatio,
|
||||
bitDepthLumaMinus8,
|
||||
bitDepthChromaMinus8,
|
||||
separateColorPlaneFlag,
|
||||
frameMbsOnlyFlag,
|
||||
frameNumLength,
|
||||
|
@ -253,9 +253,9 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor {
|
||||
throws VideoFrameProcessingException {
|
||||
// TODO(b/261188041) Add tests to verify the Listener is invoked on the given Executor.
|
||||
|
||||
checkArgument(inputColorInfo.isValid());
|
||||
checkArgument(inputColorInfo.isDataSpaceValid());
|
||||
checkArgument(inputColorInfo.colorTransfer != C.COLOR_TRANSFER_LINEAR);
|
||||
checkArgument(outputColorInfo.isValid());
|
||||
checkArgument(outputColorInfo.isDataSpaceValid());
|
||||
checkArgument(outputColorInfo.colorTransfer != C.COLOR_TRANSFER_LINEAR);
|
||||
if (ColorInfo.isTransferHdr(inputColorInfo) || ColorInfo.isTransferHdr(outputColorInfo)) {
|
||||
checkArgument(enableColorTransfers);
|
||||
|
@ -430,7 +430,10 @@ public final class MediaCodecInfoTest {
|
||||
}
|
||||
|
||||
private static ColorInfo buildColorInfo(@C.ColorSpace int colorSpace) {
|
||||
return new ColorInfo(
|
||||
colorSpace, C.COLOR_RANGE_FULL, C.COLOR_TRANSFER_HLG, /* hdrStaticInfo= */ null);
|
||||
return new ColorInfo.Builder()
|
||||
.setColorSpace(colorSpace)
|
||||
.setColorRange(C.COLOR_RANGE_FULL)
|
||||
.setColorTransfer(C.COLOR_TRANSFER_HLG)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
@ -90,11 +90,12 @@ public final class MediaCodecUtilTest {
|
||||
@Test
|
||||
public void getCodecProfileAndLevel_handlesAv1ProfileMain10HDRWithHdrInfoSet() {
|
||||
ColorInfo colorInfo =
|
||||
new ColorInfo(
|
||||
/* colorSpace= */ C.COLOR_SPACE_BT709,
|
||||
/* colorRange= */ C.COLOR_RANGE_LIMITED,
|
||||
/* colorTransfer= */ C.COLOR_TRANSFER_SDR,
|
||||
/* hdrStaticInfo= */ new byte[] {1, 2, 3, 4, 5, 6, 7});
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(C.COLOR_SPACE_BT709)
|
||||
.setColorRange(C.COLOR_RANGE_LIMITED)
|
||||
.setColorTransfer(C.COLOR_TRANSFER_SDR)
|
||||
.setHdrStaticInfo(new byte[] {1, 2, 3, 4, 5, 6, 7})
|
||||
.build();
|
||||
Format format =
|
||||
new Format.Builder()
|
||||
.setSampleMimeType(MimeTypes.VIDEO_AV1)
|
||||
@ -110,11 +111,11 @@ public final class MediaCodecUtilTest {
|
||||
@Test
|
||||
public void getCodecProfileAndLevel_handlesAv1ProfileMain10HDRWithoutHdrInfoSet() {
|
||||
ColorInfo colorInfo =
|
||||
new ColorInfo(
|
||||
/* colorSpace= */ C.COLOR_SPACE_BT709,
|
||||
/* colorRange= */ C.COLOR_RANGE_LIMITED,
|
||||
/* colorTransfer= */ C.COLOR_TRANSFER_HLG,
|
||||
/* hdrStaticInfo= */ null);
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(C.COLOR_SPACE_BT709)
|
||||
.setColorRange(C.COLOR_RANGE_LIMITED)
|
||||
.setColorTransfer(C.COLOR_TRANSFER_HLG)
|
||||
.build();
|
||||
Format format =
|
||||
new Format.Builder()
|
||||
.setSampleMimeType(MimeTypes.VIDEO_AV1)
|
||||
|
@ -32,6 +32,7 @@ import android.util.Pair;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.ColorInfo;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.ParserException;
|
||||
@ -50,7 +51,6 @@ import com.google.common.collect.ImmutableMap;
|
||||
// Format specific parameter names.
|
||||
private static final String PARAMETER_PROFILE_LEVEL_ID = "profile-level-id";
|
||||
private static final String PARAMETER_SPROP_PARAMS = "sprop-parameter-sets";
|
||||
|
||||
private static final String PARAMETER_AMR_OCTET_ALIGN = "octet-align";
|
||||
private static final String PARAMETER_AMR_INTERLEAVING = "interleaving";
|
||||
private static final String PARAMETER_H265_SPROP_SPS = "sprop-sps";
|
||||
@ -421,6 +421,14 @@ import com.google.common.collect.ImmutableMap;
|
||||
formatBuilder.setPixelWidthHeightRatio(spsData.pixelWidthHeightRatio);
|
||||
formatBuilder.setHeight(spsData.height);
|
||||
formatBuilder.setWidth(spsData.width);
|
||||
formatBuilder.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(spsData.colorSpace)
|
||||
.setColorRange(spsData.colorRange)
|
||||
.setColorTransfer(spsData.colorTransfer)
|
||||
.setLumaBitdepth(spsData.bitDepthLumaMinus8 + 8)
|
||||
.setChromaBitdepth(spsData.bitDepthChromaMinus8 + 8)
|
||||
.build());
|
||||
|
||||
@Nullable String profileLevel = fmtpAttributes.get(PARAMETER_PROFILE_LEVEL_ID);
|
||||
if (profileLevel != null) {
|
||||
@ -464,6 +472,14 @@ import com.google.common.collect.ImmutableMap;
|
||||
spsNalDataWithStartCode, NAL_START_CODE.length, spsNalDataWithStartCode.length);
|
||||
formatBuilder.setPixelWidthHeightRatio(spsData.pixelWidthHeightRatio);
|
||||
formatBuilder.setHeight(spsData.height).setWidth(spsData.width);
|
||||
formatBuilder.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(spsData.colorSpace)
|
||||
.setColorRange(spsData.colorRange)
|
||||
.setColorTransfer(spsData.colorTransfer)
|
||||
.setLumaBitdepth(spsData.bitDepthLumaMinus8 + 8)
|
||||
.setChromaBitdepth(spsData.bitDepthChromaMinus8 + 8)
|
||||
.build());
|
||||
|
||||
formatBuilder.setCodecs(
|
||||
CodecSpecificDataUtil.buildHevcCodecString(
|
||||
|
@ -26,6 +26,7 @@ import static org.junit.Assert.assertThrows;
|
||||
|
||||
import android.net.Uri;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.ColorInfo;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.extractor.AacUtil;
|
||||
@ -73,6 +74,12 @@ public class RtspMediaTrackTest {
|
||||
.setHeight(544)
|
||||
.setWidth(960)
|
||||
.setCodecs("avc1.64001F")
|
||||
.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorRange(1)
|
||||
.setLumaBitdepth(8)
|
||||
.setChromaBitdepth(8)
|
||||
.build())
|
||||
.setInitializationData(
|
||||
ImmutableList.of(
|
||||
new byte[] {
|
||||
@ -246,6 +253,12 @@ public class RtspMediaTrackTest {
|
||||
.setHeight(544)
|
||||
.setWidth(960)
|
||||
.setCodecs("avc1.64001F")
|
||||
.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorRange(1)
|
||||
.setChromaBitdepth(8)
|
||||
.setLumaBitdepth(8)
|
||||
.build())
|
||||
.setInitializationData(
|
||||
ImmutableList.of(
|
||||
new byte[] {
|
||||
|
@ -58,6 +58,8 @@ public final class AvcConfig {
|
||||
|
||||
int width = Format.NO_VALUE;
|
||||
int height = Format.NO_VALUE;
|
||||
int bitdepthLuma = Format.NO_VALUE;
|
||||
int bitdepthChroma = Format.NO_VALUE;
|
||||
@C.ColorSpace int colorSpace = Format.NO_VALUE;
|
||||
@C.ColorRange int colorRange = Format.NO_VALUE;
|
||||
@C.ColorTransfer int colorTransfer = Format.NO_VALUE;
|
||||
@ -70,6 +72,8 @@ public final class AvcConfig {
|
||||
initializationData.get(0), nalUnitLengthFieldLength, sps.length);
|
||||
width = spsData.width;
|
||||
height = spsData.height;
|
||||
bitdepthLuma = spsData.bitDepthLumaMinus8 + 8;
|
||||
bitdepthChroma = spsData.bitDepthChromaMinus8 + 8;
|
||||
colorSpace = spsData.colorSpace;
|
||||
colorRange = spsData.colorRange;
|
||||
colorTransfer = spsData.colorTransfer;
|
||||
@ -84,6 +88,8 @@ public final class AvcConfig {
|
||||
nalUnitLengthFieldLength,
|
||||
width,
|
||||
height,
|
||||
bitdepthLuma,
|
||||
bitdepthChroma,
|
||||
colorSpace,
|
||||
colorRange,
|
||||
colorTransfer,
|
||||
@ -110,6 +116,12 @@ public final class AvcConfig {
|
||||
/** The height of each decoded frame, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int height;
|
||||
|
||||
/** The bit depth of the luma samples, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int bitdepthLuma;
|
||||
|
||||
/** The bit depth of the chroma samples, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int bitdepthChroma;
|
||||
|
||||
/**
|
||||
* The {@link C.ColorSpace} of the video, or {@link Format#NO_VALUE} if unknown or not applicable.
|
||||
*/
|
||||
@ -141,6 +153,8 @@ public final class AvcConfig {
|
||||
int nalUnitLengthFieldLength,
|
||||
int width,
|
||||
int height,
|
||||
int bitdepthLuma,
|
||||
int bitdepthChroma,
|
||||
@C.ColorSpace int colorSpace,
|
||||
@C.ColorRange int colorRange,
|
||||
@C.ColorTransfer int colorTransfer,
|
||||
@ -150,6 +164,8 @@ public final class AvcConfig {
|
||||
this.nalUnitLengthFieldLength = nalUnitLengthFieldLength;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.bitdepthLuma = bitdepthLuma;
|
||||
this.bitdepthChroma = bitdepthChroma;
|
||||
this.colorSpace = colorSpace;
|
||||
this.colorRange = colorRange;
|
||||
this.colorTransfer = colorTransfer;
|
||||
|
@ -63,6 +63,8 @@ public final class HevcConfig {
|
||||
int bufferPosition = 0;
|
||||
int width = Format.NO_VALUE;
|
||||
int height = Format.NO_VALUE;
|
||||
int bitdepthLuma = Format.NO_VALUE;
|
||||
int bitdepthChroma = Format.NO_VALUE;
|
||||
@C.ColorSpace int colorSpace = Format.NO_VALUE;
|
||||
@C.ColorRange int colorRange = Format.NO_VALUE;
|
||||
@C.ColorTransfer int colorTransfer = Format.NO_VALUE;
|
||||
@ -89,6 +91,8 @@ public final class HevcConfig {
|
||||
buffer, bufferPosition, bufferPosition + nalUnitLength);
|
||||
width = spsData.width;
|
||||
height = spsData.height;
|
||||
bitdepthLuma = spsData.bitDepthLumaMinus8 + 8;
|
||||
bitdepthChroma = spsData.bitDepthChromaMinus8 + 8;
|
||||
colorSpace = spsData.colorSpace;
|
||||
colorRange = spsData.colorRange;
|
||||
colorTransfer = spsData.colorTransfer;
|
||||
@ -114,6 +118,8 @@ public final class HevcConfig {
|
||||
lengthSizeMinusOne + 1,
|
||||
width,
|
||||
height,
|
||||
bitdepthLuma,
|
||||
bitdepthChroma,
|
||||
colorSpace,
|
||||
colorRange,
|
||||
colorTransfer,
|
||||
@ -142,6 +148,12 @@ public final class HevcConfig {
|
||||
/** The height of each decoded frame, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int height;
|
||||
|
||||
/** The bit depth of the luma samples, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int bitdepthLuma;
|
||||
|
||||
/** The bit depth of the chroma samples, or {@link Format#NO_VALUE} if unknown. */
|
||||
public final int bitdepthChroma;
|
||||
|
||||
/**
|
||||
* The {@link C.ColorSpace} of the video or {@link Format#NO_VALUE} if unknown or not applicable.
|
||||
*/
|
||||
@ -173,6 +185,8 @@ public final class HevcConfig {
|
||||
int nalUnitLengthFieldLength,
|
||||
int width,
|
||||
int height,
|
||||
int bitdepthLuma,
|
||||
int bitdepthChroma,
|
||||
@C.ColorSpace int colorSpace,
|
||||
@C.ColorRange int colorRange,
|
||||
@C.ColorTransfer int colorTransfer,
|
||||
@ -182,6 +196,8 @@ public final class HevcConfig {
|
||||
this.nalUnitLengthFieldLength = nalUnitLengthFieldLength;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.bitdepthLuma = bitdepthLuma;
|
||||
this.bitdepthChroma = bitdepthChroma;
|
||||
this.colorSpace = colorSpace;
|
||||
this.colorRange = colorRange;
|
||||
this.colorTransfer = colorTransfer;
|
||||
|
@ -232,6 +232,7 @@ public class MatroskaExtractor implements Extractor {
|
||||
private static final int ID_STEREO_MODE = 0x53B8;
|
||||
private static final int ID_COLOUR = 0x55B0;
|
||||
private static final int ID_COLOUR_RANGE = 0x55B9;
|
||||
private static final int ID_COLOUR_BITS_PER_CHANNEL = 0x55B2;
|
||||
private static final int ID_COLOUR_TRANSFER = 0x55BA;
|
||||
private static final int ID_COLOUR_PRIMARIES = 0x55BB;
|
||||
private static final int ID_MAX_CLL = 0x55BC;
|
||||
@ -608,6 +609,7 @@ public class MatroskaExtractor implements Extractor {
|
||||
case ID_CUE_CLUSTER_POSITION:
|
||||
case ID_REFERENCE_BLOCK:
|
||||
case ID_STEREO_MODE:
|
||||
case ID_COLOUR_BITS_PER_CHANNEL:
|
||||
case ID_COLOUR_RANGE:
|
||||
case ID_COLOUR_TRANSFER:
|
||||
case ID_COLOUR_PRIMARIES:
|
||||
@ -1017,6 +1019,11 @@ public class MatroskaExtractor implements Extractor {
|
||||
currentTrack.colorTransfer = colorTransfer;
|
||||
}
|
||||
break;
|
||||
case ID_COLOUR_BITS_PER_CHANNEL:
|
||||
assertInTrackEntry(id);
|
||||
currentTrack.hasColorInfo = true;
|
||||
currentTrack.bitsPerChannel = (int) value;
|
||||
break;
|
||||
case ID_COLOUR_RANGE:
|
||||
assertInTrackEntry(id);
|
||||
switch ((int) value) {
|
||||
@ -2013,6 +2020,7 @@ public class MatroskaExtractor implements Extractor {
|
||||
// Video elements.
|
||||
public int width = Format.NO_VALUE;
|
||||
public int height = Format.NO_VALUE;
|
||||
public int bitsPerChannel = Format.NO_VALUE;
|
||||
public int displayWidth = Format.NO_VALUE;
|
||||
public int displayHeight = Format.NO_VALUE;
|
||||
public int displayUnit = DISPLAY_UNIT_PIXELS;
|
||||
@ -2300,7 +2308,15 @@ public class MatroskaExtractor implements Extractor {
|
||||
@Nullable ColorInfo colorInfo = null;
|
||||
if (hasColorInfo) {
|
||||
@Nullable byte[] hdrStaticInfo = getHdrStaticInfo();
|
||||
colorInfo = new ColorInfo(colorSpace, colorRange, colorTransfer, hdrStaticInfo);
|
||||
colorInfo =
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(colorSpace)
|
||||
.setColorRange(colorRange)
|
||||
.setColorTransfer(colorTransfer)
|
||||
.setHdrStaticInfo(hdrStaticInfo)
|
||||
.setLumaBitdepth(bitsPerChannel)
|
||||
.setChromaBitdepth(bitsPerChannel)
|
||||
.build();
|
||||
}
|
||||
int rotationDegrees = Format.NO_VALUE;
|
||||
|
||||
|
@ -1111,6 +1111,9 @@ import java.util.List;
|
||||
int height = parent.readUnsignedShort();
|
||||
boolean pixelWidthHeightRatioFromPasp = false;
|
||||
float pixelWidthHeightRatio = 1;
|
||||
// Set default luma and chroma bit depths to 8 as old codecs might not even signal them
|
||||
int bitdepthLuma = 8;
|
||||
int bitdepthChroma = 8;
|
||||
parent.skipBytes(50);
|
||||
|
||||
int childPosition = parent.getPosition();
|
||||
@ -1177,6 +1180,8 @@ import java.util.List;
|
||||
colorSpace = avcConfig.colorSpace;
|
||||
colorRange = avcConfig.colorRange;
|
||||
colorTransfer = avcConfig.colorTransfer;
|
||||
bitdepthLuma = avcConfig.bitdepthLuma;
|
||||
bitdepthChroma = avcConfig.bitdepthChroma;
|
||||
} else if (childAtomType == Atom.TYPE_hvcC) {
|
||||
ExtractorUtil.checkContainerInput(mimeType == null, /* message= */ null);
|
||||
mimeType = MimeTypes.VIDEO_H265;
|
||||
@ -1191,6 +1196,8 @@ import java.util.List;
|
||||
colorSpace = hevcConfig.colorSpace;
|
||||
colorRange = hevcConfig.colorRange;
|
||||
colorTransfer = hevcConfig.colorTransfer;
|
||||
bitdepthLuma = hevcConfig.bitdepthLuma;
|
||||
bitdepthChroma = hevcConfig.bitdepthChroma;
|
||||
} else if (childAtomType == Atom.TYPE_dvcC || childAtomType == Atom.TYPE_dvvC) {
|
||||
@Nullable DolbyVisionConfig dolbyVisionConfig = DolbyVisionConfig.parse(parent);
|
||||
if (dolbyVisionConfig != null) {
|
||||
@ -1203,7 +1210,10 @@ import java.util.List;
|
||||
parent.setPosition(childStartPosition + Atom.FULL_HEADER_SIZE);
|
||||
// See vpcC atom syntax: https://www.webmproject.org/vp9/mp4/#syntax_1
|
||||
parent.skipBytes(2); // profile(8), level(8)
|
||||
boolean fullRangeFlag = (parent.readUnsignedByte() & 1) != 0;
|
||||
int byte3 = parent.readUnsignedByte();
|
||||
bitdepthLuma = byte3 >> 4;
|
||||
bitdepthChroma = bitdepthLuma;
|
||||
boolean fullRangeFlag = (byte3 & 0b1) != 0;
|
||||
int colorPrimaries = parent.readUnsignedByte();
|
||||
int transferCharacteristics = parent.readUnsignedByte();
|
||||
colorSpace = ColorInfo.isoColorPrimariesToColorSpace(colorPrimaries);
|
||||
@ -1213,6 +1223,20 @@ import java.util.List;
|
||||
} else if (childAtomType == Atom.TYPE_av1C) {
|
||||
ExtractorUtil.checkContainerInput(mimeType == null, /* message= */ null);
|
||||
mimeType = MimeTypes.VIDEO_AV1;
|
||||
parent.setPosition(childStartPosition + Atom.HEADER_SIZE);
|
||||
parent.skipBytes(1);
|
||||
int byte2 = parent.readUnsignedByte();
|
||||
int seqProfile = byte2 >> 5;
|
||||
int byte3 = parent.readUnsignedByte();
|
||||
boolean highBitdepth = ((byte3 >> 6) & 0b1) != 0;
|
||||
// From https://aomediacodec.github.io/av1-spec/av1-spec.pdf#page=44
|
||||
if (seqProfile == 2 && highBitdepth) {
|
||||
boolean twelveBit = ((byte3 >> 5) & 0b1) != 0;
|
||||
bitdepthLuma = twelveBit ? 12 : 10;
|
||||
} else if (seqProfile <= 2) {
|
||||
bitdepthLuma = highBitdepth ? 10 : 8;
|
||||
}
|
||||
bitdepthChroma = bitdepthLuma;
|
||||
} else if (childAtomType == Atom.TYPE_clli) {
|
||||
if (hdrStaticInfo == null) {
|
||||
hdrStaticInfo = allocateHdrStaticInfo();
|
||||
@ -1339,20 +1363,18 @@ import java.util.List;
|
||||
.setProjectionData(projectionData)
|
||||
.setStereoMode(stereoMode)
|
||||
.setInitializationData(initializationData)
|
||||
.setDrmInitData(drmInitData);
|
||||
if (colorSpace != Format.NO_VALUE
|
||||
|| colorRange != Format.NO_VALUE
|
||||
|| colorTransfer != Format.NO_VALUE
|
||||
|| hdrStaticInfo != null) {
|
||||
.setDrmInitData(drmInitData)
|
||||
// Note that if either mdcv or clli are missing, we leave the corresponding HDR static
|
||||
// metadata bytes with value zero. See [Internal ref: b/194535665].
|
||||
formatBuilder.setColorInfo(
|
||||
new ColorInfo(
|
||||
colorSpace,
|
||||
colorRange,
|
||||
colorTransfer,
|
||||
hdrStaticInfo != null ? hdrStaticInfo.array() : null));
|
||||
}
|
||||
.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(colorSpace)
|
||||
.setColorRange(colorRange)
|
||||
.setColorTransfer(colorTransfer)
|
||||
.setHdrStaticInfo(hdrStaticInfo != null ? hdrStaticInfo.array() : null)
|
||||
.setLumaBitdepth(bitdepthLuma)
|
||||
.setChromaBitdepth(bitdepthChroma)
|
||||
.build());
|
||||
|
||||
if (esdsData != null) {
|
||||
formatBuilder
|
||||
|
@ -20,6 +20,7 @@ import static androidx.media3.extractor.ts.TsPayloadReader.FLAG_RANDOM_ACCESS_IN
|
||||
import android.util.SparseArray;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.ColorInfo;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.util.Assertions;
|
||||
@ -219,6 +220,14 @@ public final class H264Reader implements ElementaryStreamReader {
|
||||
.setCodecs(codecs)
|
||||
.setWidth(spsData.width)
|
||||
.setHeight(spsData.height)
|
||||
.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(spsData.colorSpace)
|
||||
.setColorRange(spsData.colorRange)
|
||||
.setColorTransfer(spsData.colorTransfer)
|
||||
.setLumaBitdepth(spsData.bitDepthLumaMinus8 + 8)
|
||||
.setChromaBitdepth(spsData.bitDepthChromaMinus8 + 8)
|
||||
.build())
|
||||
.setPixelWidthHeightRatio(spsData.pixelWidthHeightRatio)
|
||||
.setInitializationData(initializationData)
|
||||
.build());
|
||||
|
@ -17,6 +17,7 @@ package androidx.media3.extractor.ts;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.ColorInfo;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.util.Assertions;
|
||||
@ -264,6 +265,14 @@ public final class H265Reader implements ElementaryStreamReader {
|
||||
.setCodecs(codecs)
|
||||
.setWidth(spsData.width)
|
||||
.setHeight(spsData.height)
|
||||
.setColorInfo(
|
||||
new ColorInfo.Builder()
|
||||
.setColorSpace(spsData.colorSpace)
|
||||
.setColorRange(spsData.colorRange)
|
||||
.setColorTransfer(spsData.colorTransfer)
|
||||
.setLumaBitdepth(spsData.bitDepthLumaMinus8 + 8)
|
||||
.setChromaBitdepth(spsData.bitDepthChromaMinus8 + 8)
|
||||
.build())
|
||||
.setPixelWidthHeightRatio(spsData.pixelWidthHeightRatio)
|
||||
.setInitializationData(Collections.singletonList(csdData))
|
||||
.build();
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 180
|
||||
height = 120
|
||||
pixelWidthHeightRatio = 0.5
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.42.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 32, hash 1F3D6E87
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 180
|
||||
height = 120
|
||||
pixelWidthHeightRatio = 0.5
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.42.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 32, hash 1F3D6E87
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 180
|
||||
height = 120
|
||||
pixelWidthHeightRatio = 0.5
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.42.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 32, hash 1F3D6E87
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 180
|
||||
height = 120
|
||||
pixelWidthHeightRatio = 0.5
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.42.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 32, hash 1F3D6E87
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 1
|
||||
colorRange = 2
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 1
|
||||
colorRange = 2
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 1
|
||||
colorRange = 2
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 1
|
||||
colorRange = 2
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 1
|
||||
colorRange = 2
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -20,6 +20,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=major_brand, value=mp42, mdta: key=minor_version, value=0, mdta: key=compatible_brands, value=isommp42, mdta: key=com.android.capture.fps, value=240.0, mdta: key=com.android.version, value=10, mdta: key=encoder, value=Lavf58.29.100, Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 22, hash 4CF81805
|
||||
|
@ -20,6 +20,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=major_brand, value=mp42, mdta: key=minor_version, value=0, mdta: key=compatible_brands, value=isommp42, mdta: key=com.android.capture.fps, value=240.0, mdta: key=com.android.version, value=10, mdta: key=encoder, value=Lavf58.29.100, Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 22, hash 4CF81805
|
||||
|
@ -20,6 +20,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=major_brand, value=mp42, mdta: key=minor_version, value=0, mdta: key=compatible_brands, value=isommp42, mdta: key=com.android.capture.fps, value=240.0, mdta: key=com.android.version, value=10, mdta: key=encoder, value=Lavf58.29.100, Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 22, hash 4CF81805
|
||||
|
@ -20,6 +20,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=major_brand, value=mp42, mdta: key=minor_version, value=0, mdta: key=compatible_brands, value=isommp42, mdta: key=com.android.capture.fps, value=240.0, mdta: key=com.android.version, value=10, mdta: key=encoder, value=Lavf58.29.100, Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 22, hash 4CF81805
|
||||
|
@ -20,6 +20,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=major_brand, value=mp42, mdta: key=minor_version, value=0, mdta: key=compatible_brands, value=isommp42, mdta: key=com.android.capture.fps, value=240.0, mdta: key=com.android.version, value=10, mdta: key=encoder, value=Lavf58.29.100, Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
initializationData:
|
||||
data = length 22, hash 4CF81805
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -15,6 +15,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -17,6 +17,9 @@ track 0:
|
||||
width = 1080
|
||||
height = 720
|
||||
frameRate = 29.970028
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000]
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -12,6 +12,9 @@ track 0:
|
||||
codecs = avc1.64001F
|
||||
width = 1080
|
||||
height = 720
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4746B5D9
|
||||
data = length 10, hash 7A0D0F2B
|
||||
|
@ -22,6 +22,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 7
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=3.754789, mdta: key=com.apple.quicktime.location.ISO6709, value=+37.7450-122.4301+066.374/, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 12 Pro Max, mdta: key=com.apple.quicktime.software, value=14.5.1, mdta: key=com.apple.quicktime.creationdate, value=2021-05-25T09:21:51-0700, Mp4Timestamp: creation time=3704804511, modification time=3704804511, timescale=600]
|
||||
initializationData:
|
||||
data = length 526, hash 7B3FC433
|
||||
|
@ -22,6 +22,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 7
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=3.754789, mdta: key=com.apple.quicktime.location.ISO6709, value=+37.7450-122.4301+066.374/, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 12 Pro Max, mdta: key=com.apple.quicktime.software, value=14.5.1, mdta: key=com.apple.quicktime.creationdate, value=2021-05-25T09:21:51-0700, Mp4Timestamp: creation time=3704804511, modification time=3704804511, timescale=600]
|
||||
initializationData:
|
||||
data = length 526, hash 7B3FC433
|
||||
|
@ -22,6 +22,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 7
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=3.754789, mdta: key=com.apple.quicktime.location.ISO6709, value=+37.7450-122.4301+066.374/, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 12 Pro Max, mdta: key=com.apple.quicktime.software, value=14.5.1, mdta: key=com.apple.quicktime.creationdate, value=2021-05-25T09:21:51-0700, Mp4Timestamp: creation time=3704804511, modification time=3704804511, timescale=600]
|
||||
initializationData:
|
||||
data = length 526, hash 7B3FC433
|
||||
|
@ -22,6 +22,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 7
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=3.754789, mdta: key=com.apple.quicktime.location.ISO6709, value=+37.7450-122.4301+066.374/, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 12 Pro Max, mdta: key=com.apple.quicktime.software, value=14.5.1, mdta: key=com.apple.quicktime.creationdate, value=2021-05-25T09:21:51-0700, Mp4Timestamp: creation time=3704804511, modification time=3704804511, timescale=600]
|
||||
initializationData:
|
||||
data = length 526, hash 7B3FC433
|
||||
|
@ -22,6 +22,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 7
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.location.accuracy.horizontal, value=3.754789, mdta: key=com.apple.quicktime.location.ISO6709, value=+37.7450-122.4301+066.374/, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone 12 Pro Max, mdta: key=com.apple.quicktime.software, value=14.5.1, mdta: key=com.apple.quicktime.creationdate, value=2021-05-25T09:21:51-0700, Mp4Timestamp: creation time=3704804511, modification time=3704804511, timescale=600]
|
||||
initializationData:
|
||||
data = length 526, hash 7B3FC433
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
hdrStaticInfo = length 25, hash 423AFC35
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
sample 0:
|
||||
time = 0
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
hdrStaticInfo = length 25, hash 423AFC35
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
sample 0:
|
||||
time = 0
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
hdrStaticInfo = length 25, hash 423AFC35
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
sample 0:
|
||||
time = 0
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
hdrStaticInfo = length 25, hash 423AFC35
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
sample 0:
|
||||
time = 0
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
hdrStaticInfo = length 25, hash 423AFC35
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000]
|
||||
sample 0:
|
||||
time = 0
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.live-photo.auto, value=01, mdta: key=com.apple.quicktime.content.identifier, value=A873E9D3-2FBA-440A-B4D1-AEB073BC8E54, mdta: key=com.apple.quicktime.live-photo.vitality-score, value=0.9398496, mdta: key=com.apple.quicktime.live-photo.vitality-scoring-version, value=0000000000000004, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone SE (3rd generation), mdta: key=com.apple.quicktime.software, value=16.5.1, mdta: key=com.apple.quicktime.creationdate, value=2023-07-05T13:13:32+0800, Mp4Timestamp: creation time=3771378882, modification time=3771378882, timescale=600]
|
||||
initializationData:
|
||||
data = length 78, hash C57F938D
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.live-photo.auto, value=01, mdta: key=com.apple.quicktime.content.identifier, value=A873E9D3-2FBA-440A-B4D1-AEB073BC8E54, mdta: key=com.apple.quicktime.live-photo.vitality-score, value=0.9398496, mdta: key=com.apple.quicktime.live-photo.vitality-scoring-version, value=0000000000000004, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone SE (3rd generation), mdta: key=com.apple.quicktime.software, value=16.5.1, mdta: key=com.apple.quicktime.creationdate, value=2023-07-05T13:13:32+0800, Mp4Timestamp: creation time=3771378882, modification time=3771378882, timescale=600]
|
||||
initializationData:
|
||||
data = length 78, hash C57F938D
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.live-photo.auto, value=01, mdta: key=com.apple.quicktime.content.identifier, value=A873E9D3-2FBA-440A-B4D1-AEB073BC8E54, mdta: key=com.apple.quicktime.live-photo.vitality-score, value=0.9398496, mdta: key=com.apple.quicktime.live-photo.vitality-scoring-version, value=0000000000000004, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone SE (3rd generation), mdta: key=com.apple.quicktime.software, value=16.5.1, mdta: key=com.apple.quicktime.creationdate, value=2023-07-05T13:13:32+0800, Mp4Timestamp: creation time=3771378882, modification time=3771378882, timescale=600]
|
||||
initializationData:
|
||||
data = length 78, hash C57F938D
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.live-photo.auto, value=01, mdta: key=com.apple.quicktime.content.identifier, value=A873E9D3-2FBA-440A-B4D1-AEB073BC8E54, mdta: key=com.apple.quicktime.live-photo.vitality-score, value=0.9398496, mdta: key=com.apple.quicktime.live-photo.vitality-scoring-version, value=0000000000000004, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone SE (3rd generation), mdta: key=com.apple.quicktime.software, value=16.5.1, mdta: key=com.apple.quicktime.creationdate, value=2023-07-05T13:13:32+0800, Mp4Timestamp: creation time=3771378882, modification time=3771378882, timescale=600]
|
||||
initializationData:
|
||||
data = length 78, hash C57F938D
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[mdta: key=com.apple.quicktime.live-photo.auto, value=01, mdta: key=com.apple.quicktime.content.identifier, value=A873E9D3-2FBA-440A-B4D1-AEB073BC8E54, mdta: key=com.apple.quicktime.live-photo.vitality-score, value=0.9398496, mdta: key=com.apple.quicktime.live-photo.vitality-scoring-version, value=0000000000000004, mdta: key=com.apple.quicktime.make, value=Apple, mdta: key=com.apple.quicktime.model, value=iPhone SE (3rd generation), mdta: key=com.apple.quicktime.software, value=16.5.1, mdta: key=com.apple.quicktime.creationdate, value=2023-07-05T13:13:32+0800, Mp4Timestamp: creation time=3771378882, modification time=3771378882, timescale=600]
|
||||
initializationData:
|
||||
data = length 78, hash C57F938D
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -12,6 +12,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -12,6 +12,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -12,6 +12,9 @@ track 256:
|
||||
codecs = avc1.64001E
|
||||
width = 640
|
||||
height = 426
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 29, hash 4C2CAE9C
|
||||
data = length 9, hash D971CD89
|
||||
|
@ -15,6 +15,10 @@ track 256:
|
||||
codecs = hvc1.1.6.L90.90
|
||||
width = 854
|
||||
height = 480
|
||||
colorInfo:
|
||||
colorRange = 2
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 83, hash 7F428
|
||||
sample 0:
|
||||
|
@ -15,6 +15,10 @@ track 256:
|
||||
codecs = hvc1.1.6.L90.90
|
||||
width = 854
|
||||
height = 480
|
||||
colorInfo:
|
||||
colorRange = 2
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 83, hash 7F428
|
||||
sample 0:
|
||||
|
@ -15,6 +15,10 @@ track 256:
|
||||
codecs = hvc1.1.6.L90.90
|
||||
width = 854
|
||||
height = 480
|
||||
colorInfo:
|
||||
colorRange = 2
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 83, hash 7F428
|
||||
sample 0:
|
||||
|
@ -15,6 +15,10 @@ track 256:
|
||||
codecs = hvc1.1.6.L90.90
|
||||
width = 854
|
||||
height = 480
|
||||
colorInfo:
|
||||
colorRange = 2
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 83, hash 7F428
|
||||
sample 0:
|
||||
|
@ -12,6 +12,10 @@ track 256:
|
||||
codecs = hvc1.1.6.L90.90
|
||||
width = 854
|
||||
height = 480
|
||||
colorInfo:
|
||||
colorRange = 2
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 83, hash 7F428
|
||||
sample 0:
|
||||
|
@ -16,6 +16,9 @@ track 256:
|
||||
width = 914
|
||||
height = 686
|
||||
pixelWidthHeightRatio = 1.0003651
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 146, hash 61554FEF
|
||||
sample 0:
|
||||
|
@ -16,6 +16,9 @@ track 256:
|
||||
width = 914
|
||||
height = 686
|
||||
pixelWidthHeightRatio = 1.0003651
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 146, hash 61554FEF
|
||||
sample 0:
|
||||
|
@ -16,6 +16,9 @@ track 256:
|
||||
width = 914
|
||||
height = 686
|
||||
pixelWidthHeightRatio = 1.0003651
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 146, hash 61554FEF
|
||||
sample 0:
|
||||
|
@ -16,6 +16,9 @@ track 256:
|
||||
width = 914
|
||||
height = 686
|
||||
pixelWidthHeightRatio = 1.0003651
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 146, hash 61554FEF
|
||||
sample 0:
|
||||
|
@ -13,6 +13,9 @@ track 256:
|
||||
width = 914
|
||||
height = 686
|
||||
pixelWidthHeightRatio = 1.0003651
|
||||
colorInfo:
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
initializationData:
|
||||
data = length 146, hash 61554FEF
|
||||
sample 0:
|
||||
|
@ -69,6 +69,8 @@ track 2:
|
||||
colorSpace = 2
|
||||
colorRange = 1
|
||||
colorTransfer = 3
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2083344800, modification time=2083344800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 85, hash 6F3CAA16
|
||||
|
@ -21,6 +21,8 @@ track 0:
|
||||
colorSpace = 6
|
||||
colorRange = 2
|
||||
colorTransfer = 6
|
||||
lumaBitdepth = 10
|
||||
chromaBitdepth = 10
|
||||
metadata = entries=[Mp4Timestamp: creation time=2083344800, modification time=2083344800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 99, hash 99842E5A
|
||||
|
@ -18,6 +18,8 @@ track 0:
|
||||
height = 10
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2082849800, modification time=2082849800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
|
@ -19,6 +19,8 @@ track 0:
|
||||
rotationDegrees = 180
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2082849800, modification time=2082849800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
|
@ -19,6 +19,8 @@ track 0:
|
||||
rotationDegrees = 270
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2082849800, modification time=2082849800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
|
@ -19,6 +19,8 @@ track 0:
|
||||
rotationDegrees = 90
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2082849800, modification time=2082849800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
|
@ -19,6 +19,8 @@ track 0:
|
||||
frameRate = 20000.0
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2083344800, modification time=2083344800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
@ -44,6 +46,8 @@ track 1:
|
||||
frameRate = 10000.0
|
||||
colorInfo:
|
||||
colorRange = 1
|
||||
lumaBitdepth = 8
|
||||
chromaBitdepth = 8
|
||||
metadata = entries=[Mp4Timestamp: creation time=2083344800, modification time=2083344800, timescale=10000]
|
||||
initializationData:
|
||||
data = length 28, hash 410B510
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user