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
|
||||
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 = {
|
||||
SL_DATAFORMAT_PCM,
|
||||
chunkFormat->num_channels,
|
||||
chunkFormat->sample_rate * 1000, // convert to milliHz
|
||||
chunkFormat->bits_per_sample,
|
||||
16,
|
||||
SL_SPEAKER_FRONT_CENTER,
|
||||
channelMask,
|
||||
SL_BYTEORDER_LITTLEENDIAN
|
||||
};
|
||||
SLDataSource audioSrc = {&loc_bufq, &format_pcm};
|
||||
|
||||
Reference in New Issue
Block a user