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

Commit a10a2f5c authored by Songyue Han's avatar Songyue Han Committed by Gerrit Code Review
Browse files

Merge "CodecCapabilities: use optional instead of 0 to represent null in supports()." into main

parents 1e8f9baa 84ad37f5
Loading
Loading
Loading
Loading
+14 −11
Original line number Original line Diff line number Diff line
@@ -94,30 +94,31 @@ void AudioCapabilities::initWithPlatformLimits() {
    mSampleRateRanges.push_back(Range<int>(minSampleRate, maxSampleRate));
    mSampleRateRanges.push_back(Range<int>(minSampleRate, maxSampleRate));
}
}


bool AudioCapabilities::supports(int sampleRate, int inputChannels) {
bool AudioCapabilities::supports(std::optional<int> sampleRate,
        std::optional<int> inputChannels) {
    // channels and sample rates are checked orthogonally
    // channels and sample rates are checked orthogonally
    if (inputChannels != 0
    if (inputChannels
            && !std::any_of(mInputChannelRanges.begin(), mInputChannelRanges.end(),
            && !std::any_of(mInputChannelRanges.begin(), mInputChannelRanges.end(),
            [inputChannels](const Range<int> &a) { return a.contains(inputChannels); })) {
            [inputChannels](const Range<int> &a) { return a.contains(inputChannels.value()); })) {
        return false;
        return false;
    }
    }
    if (sampleRate != 0
    if (sampleRate
            && !std::any_of(mSampleRateRanges.begin(), mSampleRateRanges.end(),
            && !std::any_of(mSampleRateRanges.begin(), mSampleRateRanges.end(),
            [sampleRate](const Range<int> &a) { return a.contains(sampleRate); })) {
            [sampleRate](const Range<int> &a) { return a.contains(sampleRate.value()); })) {
        return false;
        return false;
    }
    }
    return true;
    return true;
}
}


bool AudioCapabilities::isSampleRateSupported(int sampleRate) {
bool AudioCapabilities::isSampleRateSupported(int sampleRate) {
    return supports(sampleRate, 0);
    return supports(std::make_optional<int>(sampleRate), std::nullopt);
}
}


void AudioCapabilities::limitSampleRates(std::vector<int> rates) {
void AudioCapabilities::limitSampleRates(std::vector<int> rates) {
    std::vector<Range<int>> sampleRateRanges;
    std::vector<Range<int>> sampleRateRanges;
    std::sort(rates.begin(), rates.end());
    std::sort(rates.begin(), rates.end());
    for (int rate : rates) {
    for (int rate : rates) {
        if (supports(rate, 0 /* channels */)) {
        if (supports(std::make_optional<int>(rate), std::nullopt /* channels */)) {
            sampleRateRanges.push_back(Range<int>(rate, rate));
            sampleRateRanges.push_back(Range<int>(rate, rate));
        }
        }
    }
    }
@@ -372,10 +373,12 @@ void AudioCapabilities::getDefaultFormat(sp<AMessage> &format) {
}
}


bool AudioCapabilities::supportsFormat(const sp<AMessage> &format) {
bool AudioCapabilities::supportsFormat(const sp<AMessage> &format) {
    int32_t sampleRate;
    int32_t sampleRateValue;
    format->findInt32(KEY_SAMPLE_RATE, &sampleRate);
    std::optional<int> sampleRate = format->findInt32(KEY_SAMPLE_RATE, &sampleRateValue)
    int32_t channels;
            ? std::make_optional<int>(sampleRateValue) : std::nullopt;
    format->findInt32(KEY_CHANNEL_COUNT, &channels);
    int32_t channelsValue;
    std::optional<int> channels = format->findInt32(KEY_CHANNEL_COUNT, &channelsValue)
            ? std::make_optional<int>(channelsValue) : std::nullopt;


    if (!supports(sampleRate, channels)) {
    if (!supports(sampleRate, channels)) {
        return false;
        return false;
+1 −1
Original line number Original line Diff line number Diff line
@@ -121,7 +121,7 @@ private:
    void init(std::string mediaType, std::vector<ProfileLevel> profLevs,
    void init(std::string mediaType, std::vector<ProfileLevel> profLevs,
            const sp<AMessage> &format);
            const sp<AMessage> &format);
    void initWithPlatformLimits();
    void initWithPlatformLimits();
    bool supports(int sampleRate, int inputChannels);
    bool supports(std::optional<int> sampleRate, std::optional<int> inputChannels);
    void limitSampleRates(std::vector<int> rates);
    void limitSampleRates(std::vector<int> rates);
    void createDiscreteSampleRates();
    void createDiscreteSampleRates();
    void limitSampleRates(std::vector<Range<int>> rateRanges);
    void limitSampleRates(std::vector<Range<int>> rateRanges);