From 9a4ec54bdf3191a9922317284f8ccb6f491d23a5 Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 7 May 2020 16:10:32 +0100 Subject: [PATCH] Propagate Format through extension video decoders We currently propagate only ColorInfo, but propagating the whole Format is generally useful (e.g., to get the frame-rate on the output side of the decoder). PiperOrigin-RevId: 310359650 --- .../com/google/android/exoplayer2/ext/av1/Gav1Decoder.java | 2 +- .../com/google/android/exoplayer2/ext/vp9/VpxDecoder.java | 2 +- .../google/android/exoplayer2/video/DecoderVideoRenderer.java | 2 +- .../android/exoplayer2/video/VideoDecoderInputBuffer.java | 3 ++- .../android/exoplayer2/video/VideoDecoderOutputBuffer.java | 4 +++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java b/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java index 840cd158f9..bf90c6b1a3 100644 --- a/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java +++ b/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java @@ -128,7 +128,7 @@ import java.nio.ByteBuffer; outputBuffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY); } if (!decodeOnly) { - outputBuffer.colorInfo = inputBuffer.colorInfo; + outputBuffer.format = inputBuffer.format; } return null; diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java index 98a26727ee..b7b98e836a 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java @@ -170,7 +170,7 @@ import java.nio.ByteBuffer; } else if (getFrameResult == -1) { return new VpxDecoderException("Buffer initialization failed."); } - outputBuffer.colorInfo = inputBuffer.colorInfo; + outputBuffer.format = inputBuffer.format; } return null; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java index 23cae05a03..d4163acc38 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java @@ -758,7 +758,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer { waitingForFirstSampleInFormat = false; } inputBuffer.flip(); - inputBuffer.colorInfo = inputFormat.colorInfo; + inputBuffer.format = inputFormat; onQueueInputBuffer(inputBuffer); decoder.queueInputBuffer(inputBuffer); buffersInCodecCount++; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderInputBuffer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderInputBuffer.java index 360279c11c..0acb255a18 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderInputBuffer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderInputBuffer.java @@ -16,12 +16,13 @@ package com.google.android.exoplayer2.video; import androidx.annotation.Nullable; +import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; /** Input buffer to a video decoder. */ public class VideoDecoderInputBuffer extends DecoderInputBuffer { - @Nullable public ColorInfo colorInfo; + @Nullable public Format format; public VideoDecoderInputBuffer() { super(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_DIRECT); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderOutputBuffer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderOutputBuffer.java index 8f2e4122b3..899f1a8d47 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderOutputBuffer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderOutputBuffer.java @@ -17,6 +17,7 @@ package com.google.android.exoplayer2.video; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.OutputBuffer; import java.nio.ByteBuffer; @@ -43,7 +44,8 @@ public class VideoDecoderOutputBuffer extends OutputBuffer { public int width; public int height; - @Nullable public ColorInfo colorInfo; + /** The format of the input from which this output buffer was decoded. */ + @Nullable public Format format; /** YUV planes for YUV mode. */ @Nullable public ByteBuffer[] yuvPlanes;