From 6dc119a8ab80814dedb417af460fa7dce9f403ec Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 18 Jan 2023 12:56:32 +0000 Subject: [PATCH] Add ColorInfo to TransformationResult. TESTED: Manually verified the ColorInfo is propagated when VSP is used. PiperOrigin-RevId: 502843773 --- .../transformer/TransformationTestResult.java | 1 + .../transformer/TransformationResult.java | 17 +++++++++++++++++ .../media3/transformer/TransformerInternal.java | 1 + 3 files changed, 19 insertions(+) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTestResult.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTestResult.java index 3aa7424c29..6a4b4930f0 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTestResult.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTestResult.java @@ -184,6 +184,7 @@ public class TransformationTestResult { .putOpt( "fallbackDetails", fallbackDetails != null ? fallbackDetails.asJsonObject() : null) .putOpt("filePath", filePath) + .putOpt("colorInfo", transformationResult.colorInfo) .putOpt("videoDecoderName", transformationResult.videoDecoderName) .putOpt("videoEncoderName", transformationResult.videoEncoderName) .putOpt("testException", exceptionAsJsonObject(testException)) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationResult.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationResult.java index 2dd2e8c467..698a020f7a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationResult.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationResult.java @@ -19,6 +19,7 @@ import static androidx.media3.common.util.Assertions.checkArgument; import androidx.annotation.Nullable; import androidx.media3.common.C; +import androidx.media3.common.ColorInfo; import androidx.media3.common.Format; import androidx.media3.common.util.UnstableApi; import com.google.errorprone.annotations.CanIgnoreReturnValue; @@ -38,6 +39,7 @@ public final class TransformationResult { @Nullable private String audioDecoderName; @Nullable private String audioEncoderName; private int averageVideoBitrate; + @Nullable ColorInfo colorInfo; private int height; private int width; private int videoFrameCount; @@ -150,6 +152,13 @@ public final class TransformationResult { return this; } + /** Sets the {@link ColorInfo}. */ + @CanIgnoreReturnValue + public Builder setColorInfo(@Nullable ColorInfo colorInfo) { + this.colorInfo = colorInfo; + return this; + } + /** * Sets the height. * @@ -219,6 +228,7 @@ public final class TransformationResult { audioDecoderName, audioEncoderName, averageVideoBitrate, + colorInfo, height, width, videoFrameCount, @@ -252,6 +262,8 @@ public final class TransformationResult { * The average bitrate of the video track data, or {@link C#RATE_UNSET_INT} if unset or unknown. */ public final int averageVideoBitrate; + /** The {@link ColorInfo} of the video, or {@code null} if unset or unknown. */ + @Nullable public final ColorInfo colorInfo; /** The height of the video, or {@link C#LENGTH_UNSET} if unset or unknown. */ public final int height; /** The width of the video, or {@link C#LENGTH_UNSET} if unset or unknown. */ @@ -279,6 +291,7 @@ public final class TransformationResult { @Nullable String audioDecoderName, @Nullable String audioEncoderName, int averageVideoBitrate, + @Nullable ColorInfo colorInfo, int height, int width, int videoFrameCount, @@ -294,6 +307,7 @@ public final class TransformationResult { this.audioDecoderName = audioDecoderName; this.audioEncoderName = audioEncoderName; this.averageVideoBitrate = averageVideoBitrate; + this.colorInfo = colorInfo; this.height = height; this.width = width; this.videoFrameCount = videoFrameCount; @@ -313,6 +327,7 @@ public final class TransformationResult { .setAudioDecoderName(audioDecoderName) .setAudioEncoderName(audioEncoderName) .setAverageVideoBitrate(averageVideoBitrate) + .setColorInfo(colorInfo) .setHeight(height) .setWidth(width) .setVideoFrameCount(videoFrameCount) @@ -339,6 +354,7 @@ public final class TransformationResult { && Objects.equals(audioDecoderName, result.audioDecoderName) && Objects.equals(audioEncoderName, result.audioEncoderName) && averageVideoBitrate == result.averageVideoBitrate + && Objects.equals(colorInfo, result.colorInfo) && height == result.height && width == result.width && videoFrameCount == result.videoFrameCount @@ -358,6 +374,7 @@ public final class TransformationResult { result = 31 * result + Objects.hashCode(audioDecoderName); result = 31 * result + Objects.hashCode(audioEncoderName); result = 31 * result + averageVideoBitrate; + result = 31 * result + Objects.hashCode(colorInfo); result = 31 * result + height; result = 31 * result + width; result = 31 * result + videoFrameCount; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java index caae2c8a01..fcf161070a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java @@ -441,6 +441,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } else if (trackType == C.TRACK_TYPE_VIDEO) { transformationResultBuilder .setAverageVideoBitrate(averageBitrate) + .setColorInfo(format.colorInfo) .setVideoFrameCount(sampleCount); if (format.height != Format.NO_VALUE) { transformationResultBuilder.setHeight(format.height);