MediaCodec and 24 bit PCM

2020-06-04 02:47发布

I am successfully using MediaCodec to decode audio, however when I load a file with 24-bit samples, I have no way of knowing this has occurred. Since the application was assuming 16-bit samples, it fails.

When I print the MediaFormat, I see

{mime=audio/raw, durationUs=239000000, bits-format=6, channel-count=2, channel-mask=0, sample-rate=96000}

I assume that the "bits-format" would be a hint, however this key is not declared in the API, and is not actually emitted when the output format changes. I get

{mime=audio/raw, what=1869968451, channel-count=2, channel-mask=0, sample-rate=96000}

(By the way what is the "what" key? I notice if I interpret as a 4charcode, it is "outC"... just a flag that it is an output format?)

So what is the best recourse here? If I feed the ByteBuffer straight to the AudioTrack it plays static of course (assuming PCM 16).

If I know the value, then I can convert it myself! I understand from other questions that you cannot dictate the output format either.

0条回答
登录 后发表回答