File tree Expand file tree Collapse file tree 4 files changed +12
-28
lines changed
common/src/main/java/androidx/media3/common/audio
exoplayer/src/main/java/androidx/media3/exoplayer/util
extractor/src/main/java/androidx/media3/extractor Expand file tree Collapse file tree 4 files changed +12
-28
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 :
Original file line number Diff line number Diff 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 (
Original file line number Diff line number Diff 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.
You can’t perform that action at this time.
0 commit comments