diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2024-04-23 16:51:13 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-23 16:51:13 +0000 |
commit | 8b6342670cde054d4d2b354123b9aeb3148ef514 (patch) | |
tree | 78414b8ece1d2aaa758aec48175f14b0d480ebbe | |
parent | 2e05573105203fcaed808d1c8dc783e2440e9e7c (diff) | |
parent | 67c12fe44c460b4b698969287fffb37c484028bf (diff) | |
download | av-8b6342670cde054d4d2b354123b9aeb3148ef514.tar.gz |
Merge "HiRes: Check mixport samplerates" into main
-rw-r--r-- | services/audiopolicy/managerdefault/AudioPolicyManager.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp index 315e08defb..d427de45a4 100644 --- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp +++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp @@ -2086,7 +2086,14 @@ audio_io_handle_t AudioPolicyManager::selectOutput(const SortedVector<audio_io_h // sampling rate match if (samplingRate > SAMPLE_RATE_HZ_DEFAULT) { - currentMatchCriteria[4] = outputDesc->getSamplingRate(); + int diff; // avoid unsigned integer overflow. + __builtin_sub_overflow(outputDesc->getSamplingRate(), samplingRate, &diff); + + // prefer the closest output sampling rate greater than or equal to target + // if none exists, prefer the closest output sampling rate less than target. + // + // criteria is offset to make non-negative. + currentMatchCriteria[4] = diff >= 0 ? -diff + 200'000'000 : diff + 100'000'000; } // performance flags match |