Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db90897b authored by Geoffrey Pitsch's avatar Geoffrey Pitsch
Browse files

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
parent edaaef30
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -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};