Support multichannel sounds in bootanim
Manually handle the 1-2 channel cases to avoid the warning log when 0 is passed as the channelMask. Bug: 30820152 Change-Id: I4d2c8736ff442fae9a4c5eb16061646fb53151b6
This commit is contained in:
@@ -141,13 +141,27 @@ bool createBufferQueueAudioPlayer(const ChunkFormat* chunkFormat) {
|
|||||||
// configure audio source
|
// configure audio source
|
||||||
SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 1};
|
SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 1};
|
||||||
|
|
||||||
|
// Determine channelMask from num_channels
|
||||||
|
SLuint32 channelMask;
|
||||||
|
switch (chunkFormat->num_channels) {
|
||||||
|
case 1:
|
||||||
|
channelMask = SL_SPEAKER_FRONT_CENTER;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Default of 0 will derive mask from num_channels and log a warning.
|
||||||
|
channelMask = 0;
|
||||||
|
}
|
||||||
|
|
||||||
SLDataFormat_PCM format_pcm = {
|
SLDataFormat_PCM format_pcm = {
|
||||||
SL_DATAFORMAT_PCM,
|
SL_DATAFORMAT_PCM,
|
||||||
chunkFormat->num_channels,
|
chunkFormat->num_channels,
|
||||||
chunkFormat->sample_rate * 1000, // convert to milliHz
|
chunkFormat->sample_rate * 1000, // convert to milliHz
|
||||||
chunkFormat->bits_per_sample,
|
chunkFormat->bits_per_sample,
|
||||||
16,
|
16,
|
||||||
SL_SPEAKER_FRONT_CENTER,
|
channelMask,
|
||||||
SL_BYTEORDER_LITTLEENDIAN
|
SL_BYTEORDER_LITTLEENDIAN
|
||||||
};
|
};
|
||||||
SLDataSource audioSrc = {&loc_bufq, &format_pcm};
|
SLDataSource audioSrc = {&loc_bufq, &format_pcm};
|
||||||
|
|||||||
Reference in New Issue
Block a user