From bc871c94a6490b0b5577ec377a291afdd4dd8ff7 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Thu, 13 Nov 2014 16:08:16 +0000 Subject: [PATCH] Add bitrate to MediaFormat --- .../google/android/exoplayer/MediaFormat.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java index 24af7ba1a0..24db47ff77 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java @@ -46,6 +46,8 @@ public class MediaFormat { public final int channelCount; public final int sampleRate; + public final int bitrate; + private int maxWidth; private int maxHeight; @@ -69,13 +71,19 @@ public class MediaFormat { public static MediaFormat createVideoFormat(String mimeType, int maxInputSize, int width, int height, float pixelWidthHeightRatio, List initializationData) { return new MediaFormat(mimeType, maxInputSize, width, height, pixelWidthHeightRatio, NO_VALUE, - NO_VALUE, initializationData); + NO_VALUE, NO_VALUE, initializationData); } public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, int channelCount, int sampleRate, List initializationData) { return new MediaFormat(mimeType, maxInputSize, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, - sampleRate, initializationData); + sampleRate, NO_VALUE, initializationData); + } + + public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, int channelCount, + int sampleRate, int bitrate, List initializationData) { + return new MediaFormat(mimeType, maxInputSize, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, + sampleRate, bitrate, initializationData); } @TargetApi(16) @@ -87,6 +95,7 @@ public class MediaFormat { height = getOptionalIntegerV16(format, android.media.MediaFormat.KEY_HEIGHT); channelCount = getOptionalIntegerV16(format, android.media.MediaFormat.KEY_CHANNEL_COUNT); sampleRate = getOptionalIntegerV16(format, android.media.MediaFormat.KEY_SAMPLE_RATE); + bitrate = getOptionalIntegerV16(format, android.media.MediaFormat.KEY_BIT_RATE); pixelWidthHeightRatio = getOptionalFloatV16(format, KEY_PIXEL_WIDTH_HEIGHT_RATIO); initializationData = new ArrayList(); for (int i = 0; format.containsKey("csd-" + i); i++) { @@ -101,7 +110,7 @@ public class MediaFormat { } private MediaFormat(String mimeType, int maxInputSize, int width, int height, - float pixelWidthHeightRatio, int channelCount, int sampleRate, + float pixelWidthHeightRatio, int channelCount, int sampleRate, int bitrate, List initializationData) { this.mimeType = mimeType; this.maxInputSize = maxInputSize; @@ -110,6 +119,7 @@ public class MediaFormat { this.pixelWidthHeightRatio = pixelWidthHeightRatio; this.channelCount = channelCount; this.sampleRate = sampleRate; + this.bitrate = bitrate; this.initializationData = initializationData == null ? Collections.emptyList() : initializationData; maxWidth = NO_VALUE; @@ -145,6 +155,7 @@ public class MediaFormat { result = 31 * result + maxHeight; result = 31 * result + channelCount; result = 31 * result + sampleRate; + result = 31 * result + bitrate; for (int i = 0; i < initializationData.size(); i++) { result = 31 * result + Arrays.hashCode(initializationData.get(i)); } @@ -180,6 +191,7 @@ public class MediaFormat { || (!ignoreMaxDimensions && (maxWidth != other.maxWidth || maxHeight != other.maxHeight)) || channelCount != other.channelCount || sampleRate != other.sampleRate || !Util.areEqual(mimeType, other.mimeType) + || bitrate != other.bitrate || initializationData.size() != other.initializationData.size()) { return false; } @@ -194,8 +206,8 @@ public class MediaFormat { @Override public String toString() { return "MediaFormat(" + mimeType + ", " + maxInputSize + ", " + width + ", " + height + ", " - + pixelWidthHeightRatio + ", " + channelCount + ", " + sampleRate + ", " + maxWidth + ", " - + maxHeight + ")"; + + pixelWidthHeightRatio + ", " + channelCount + ", " + sampleRate + ", " + bitrate + ", " + + maxWidth + ", " + maxHeight + ")"; } /** @@ -211,6 +223,7 @@ public class MediaFormat { maybeSetIntegerV16(format, android.media.MediaFormat.KEY_HEIGHT, height); maybeSetIntegerV16(format, android.media.MediaFormat.KEY_CHANNEL_COUNT, channelCount); maybeSetIntegerV16(format, android.media.MediaFormat.KEY_SAMPLE_RATE, sampleRate); + maybeSetIntegerV16(format, android.media.MediaFormat.KEY_BIT_RATE, bitrate); maybeSetFloatV16(format, KEY_PIXEL_WIDTH_HEIGHT_RATIO, pixelWidthHeightRatio); for (int i = 0; i < initializationData.size(); i++) { format.setByteBuffer("csd-" + i, ByteBuffer.wrap(initializationData.get(i)));