summaryrefslogtreecommitdiff
path: root/apex/media
diff options
context:
space:
mode:
authorSantiago Seifert <aquilescanta@google.com>2020-04-20 16:33:55 +0100
committerSantiago Seifert <aquilescanta@google.com>2020-04-20 16:36:38 +0100
commitf9145f5186bcfc92c818b94021c6f8154a07d601 (patch)
tree21add328bb64197e6adf66f45223a8e3157b5c19 /apex/media
parent711d0a9a76dddc197a124f3cc484eac0e9bacd8d (diff)
Derive PCM encoding from ExoPlayer's format
Bug: 154120292 Test: atest CtsMediaParserTestCases Change-Id: I90091810a09bfddaaf02257e3ad4a9458eda91d7
Diffstat (limited to 'apex/media')
-rw-r--r--apex/media/framework/java/android/media/MediaParser.java29
1 files changed, 24 insertions, 5 deletions
diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java
index d1e9e4e4289b..50f4ddd5e2e3 100644
--- a/apex/media/framework/java/android/media/MediaParser.java
+++ b/apex/media/framework/java/android/media/MediaParser.java
@@ -1412,14 +1412,12 @@ public final class MediaParser {
setOptionalMediaFormatInt(result, MediaFormat.KEY_HEIGHT, format.height);
List<byte[]> initData = format.initializationData;
- if (initData != null) {
- for (int i = 0; i < initData.size(); i++) {
- result.setByteBuffer("csd-" + i, ByteBuffer.wrap(initData.get(i)));
- }
+ for (int i = 0; i < initData.size(); i++) {
+ result.setByteBuffer("csd-" + i, ByteBuffer.wrap(initData.get(i)));
}
+ setPcmEncoding(format, result);
setOptionalMediaFormatString(result, MediaFormat.KEY_LANGUAGE, format.language);
setOptionalMediaFormatInt(result, MediaFormat.KEY_MAX_INPUT_SIZE, format.maxInputSize);
- setOptionalMediaFormatInt(result, MediaFormat.KEY_PCM_ENCODING, format.pcmEncoding);
setOptionalMediaFormatInt(result, MediaFormat.KEY_ROTATION, format.rotationDegrees);
setOptionalMediaFormatInt(result, MediaFormat.KEY_SAMPLE_RATE, format.sampleRate);
setOptionalMediaFormatInt(
@@ -1462,6 +1460,27 @@ public final class MediaParser {
return result;
}
+ private static void setPcmEncoding(Format format, MediaFormat result) {
+ int exoPcmEncoding = format.pcmEncoding;
+ setOptionalMediaFormatInt(result, "exo-pcm-encoding", format.pcmEncoding);
+ int mediaFormatPcmEncoding;
+ switch (exoPcmEncoding) {
+ case C.ENCODING_PCM_8BIT:
+ mediaFormatPcmEncoding = AudioFormat.ENCODING_PCM_8BIT;
+ break;
+ case C.ENCODING_PCM_16BIT:
+ mediaFormatPcmEncoding = AudioFormat.ENCODING_PCM_16BIT;
+ break;
+ case C.ENCODING_PCM_FLOAT:
+ mediaFormatPcmEncoding = AudioFormat.ENCODING_PCM_FLOAT;
+ break;
+ default:
+ // No matching value. Do nothing.
+ return;
+ }
+ result.setInteger(MediaFormat.KEY_PCM_ENCODING, mediaFormatPcmEncoding);
+ }
+
private static void setOptionalMediaFormatInt(MediaFormat mediaFormat, String key, int value) {
if (value != Format.NO_VALUE) {
mediaFormat.setInteger(key, value);