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

Commit 8d72b4b9 authored by Dean Wheatley's avatar Dean Wheatley
Browse files

Allow getInputBufferSize for compressed formats

For cases where the primary hardware device does not support querying
the buffer size for a compressed format, the implementation falls back
to querying buffer size using PCM. This should be improved later to use
a format -> nominal buffer size lookup.

Change-Id: I0feff62651f2b39f6f53cc1b6ed62525cd2bcb78
parent a404ff4f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1889,7 +1889,7 @@ size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, audio_format_t form
        return 0;
    }
    if ((sampleRate == 0) ||
            !audio_is_valid_format(format) || !audio_has_proportional_frames(format) ||
            !audio_is_valid_format(format) ||
            !audio_is_input_channel(channelMask)) {
        return 0;
    }
@@ -1912,6 +1912,10 @@ size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, audio_format_t form

    std::vector<audio_format_t> formats = {format};
    if (format != AUDIO_FORMAT_PCM_16_BIT) {
        // For compressed format, buffer size may be queried using PCM. Allow this for compatibility
        // in cases the primary hw dev does not support the format.
        // TODO: replace with a table of formats and nominal buffer sizes (based on nominal bitrate
        // and codec frame size).
        formats.push_back(AUDIO_FORMAT_PCM_16_BIT);
    }