MediaCodec and 24 bit PCM

时间秒杀一切 提交于 2019-12-04 11:24:33

问题


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.

来源:https://stackoverflow.com/questions/30246737/mediacodec-and-24-bit-pcm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!