Skip to content

Commit 8ccd1ce

Browse files
committed
Tidy up pcm format handling in some places
- refactor a few usages that manually handle all pcm formats to the Util methods that already exist.
1 parent fde16e9 commit 8ccd1ce

File tree

4 files changed

+12
-28
lines changed

4 files changed

+12
-28
lines changed

libraries/common/src/main/java/androidx/media3/common/audio/ToInt16PcmAudioProcessor.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,7 @@ public final class ToInt16PcmAudioProcessor extends BaseAudioProcessor {
4444
public AudioFormat onConfigure(AudioFormat inputAudioFormat)
4545
throws UnhandledAudioFormatException {
4646
@C.PcmEncoding int encoding = inputAudioFormat.encoding;
47-
if (encoding != C.ENCODING_PCM_8BIT
48-
&& encoding != C.ENCODING_PCM_16BIT
49-
&& encoding != C.ENCODING_PCM_16BIT_BIG_ENDIAN
50-
&& encoding != C.ENCODING_PCM_24BIT
51-
&& encoding != C.ENCODING_PCM_24BIT_BIG_ENDIAN
52-
&& encoding != C.ENCODING_PCM_32BIT
53-
&& encoding != C.ENCODING_PCM_32BIT_BIG_ENDIAN
54-
&& encoding != C.ENCODING_PCM_FLOAT
55-
&& encoding != C.ENCODING_PCM_DOUBLE) {
47+
if (!Util.isEncodingLinearPcm(encoding)) {
5648
throw new UnhandledAudioFormatException(inputAudioFormat);
5749
}
5850
return encoding != C.ENCODING_PCM_16BIT

libraries/exoplayer/src/main/java/androidx/media3/exoplayer/util/EventLogger.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,8 @@ private static String encodingAsString(@C.Encoding int encoding) {
807807
return "dts-hd";
808808
case C.ENCODING_DTS_UHD_P2:
809809
return "dts-uhd-p2";
810+
case C.ENCODING_DSD:
811+
return "dsd";
810812
case C.ENCODING_E_AC3:
811813
return "eac3";
812814
case C.ENCODING_E_AC3_JOC:
@@ -829,6 +831,8 @@ private static String encodingAsString(@C.Encoding int encoding) {
829831
return "pcm-32";
830832
case C.ENCODING_PCM_32BIT_BIG_ENDIAN:
831833
return "pcm-32be";
834+
case C.ENCODING_PCM_DOUBLE:
835+
return "pcm-double";
832836
case C.ENCODING_PCM_FLOAT:
833837
return "pcm-float";
834838
case C.ENCODING_INVALID:

libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2437,15 +2437,8 @@ public void initializeFormat(int trackId) throws ParserException {
24372437
break;
24382438
case CODEC_ID_PCM_INT_BIG:
24392439
mimeType = MimeTypes.AUDIO_RAW;
2440-
if (audioBitDepth == 8) {
2441-
pcmEncoding = C.ENCODING_PCM_8BIT;
2442-
} else if (audioBitDepth == 16) {
2443-
pcmEncoding = C.ENCODING_PCM_16BIT_BIG_ENDIAN;
2444-
} else if (audioBitDepth == 24) {
2445-
pcmEncoding = C.ENCODING_PCM_24BIT_BIG_ENDIAN;
2446-
} else if (audioBitDepth == 32) {
2447-
pcmEncoding = C.ENCODING_PCM_32BIT_BIG_ENDIAN;
2448-
} else {
2440+
pcmEncoding = Util.getPcmEncoding(audioBitDepth, ByteOrder.BIG_ENDIAN);
2441+
if (pcmEncoding == C.ENCODING_INVALID) {
24492442
pcmEncoding = Format.NO_VALUE;
24502443
mimeType = MimeTypes.AUDIO_UNKNOWN;
24512444
Log.w(

libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,18 +2130,13 @@ private static void parseAudioSampleEntry(
21302130
boolean isFloat = (formatSpecificFlags & 1) != 0;
21312131
boolean isBigEndian = (formatSpecificFlags & (1 << 1)) != 0;
21322132
if (!isFloat) {
2133-
if (bitsPerSample == 8) {
2134-
pcmEncoding = C.ENCODING_PCM_8BIT;
2135-
} else if (bitsPerSample == 16) {
2136-
pcmEncoding = isBigEndian ? C.ENCODING_PCM_16BIT_BIG_ENDIAN : C.ENCODING_PCM_16BIT;
2137-
} else if (bitsPerSample == 24) {
2138-
pcmEncoding = isBigEndian ? C.ENCODING_PCM_24BIT_BIG_ENDIAN : C.ENCODING_PCM_24BIT;
2139-
} else if (bitsPerSample == 32) {
2140-
pcmEncoding = isBigEndian ? C.ENCODING_PCM_32BIT_BIG_ENDIAN : C.ENCODING_PCM_32BIT;
2141-
}
2142-
} else if (bitsPerSample == 32) {
2133+
pcmEncoding = Util.getPcmEncoding(bitsPerSample, isBigEndian ? BIG_ENDIAN : LITTLE_ENDIAN);
2134+
} else if (!isBigEndian && bitsPerSample == 32) {
21432135
pcmEncoding = C.ENCODING_PCM_FLOAT;
21442136
}
2137+
if (pcmEncoding == C.ENCODING_INVALID) {
2138+
pcmEncoding = Format.NO_VALUE;
2139+
}
21452140
parent.skipBytes(8); // constBytesPerAudioPacket, constLPCMFramesPerAudioPacket
21462141
} else {
21472142
// Unsupported version.

0 commit comments

Comments
 (0)