diff options
author | Cheng-Yi Chiang <cychiang@chromium.org> | 2016-06-03 17:25:50 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-06-24 04:35:44 -0700 |
commit | 3e9cedd2bd4a69bdd9189e707153c1f1b7a31e24 (patch) | |
tree | ff7377cf9b9de44a089d0f340a7892c96fc2be30 /cras | |
parent | 7c9a26c8ad7c005c5468e19ca7d5f6ef0f6badab (diff) | |
download | adhd-3e9cedd2bd4a69bdd9189e707153c1f1b7a31e24.tar.gz |
CRAS: alsa_ucm - Add method to enable no_stream ops
The flag will be used in the next patch to enable optimization of
no_stream ops on alsa_io.
BUG=chromium:519942
TEST=make check
Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org>
Change-Id: I124232d981d192a0e5116a31f77393f64b9016f6
Reviewed-on: https://chromium-review.googlesource.com/349520
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'cras')
-rw-r--r-- | cras/src/server/cras_alsa_ucm.c | 13 | ||||
-rw-r--r-- | cras/src/server/cras_alsa_ucm.h | 9 | ||||
-rw-r--r-- | cras/src/tests/alsa_ucm_unittest.cc | 18 |
3 files changed, 40 insertions, 0 deletions
diff --git a/cras/src/server/cras_alsa_ucm.c b/cras/src/server/cras_alsa_ucm.c index 32512e2f..b670e123 100644 --- a/cras/src/server/cras_alsa_ucm.c +++ b/cras/src/server/cras_alsa_ucm.c @@ -36,6 +36,7 @@ static const char max_software_gain[] = "MaxSoftwareGain"; static const char hotword_model_prefix[] = "Hotword Model"; static const char fully_specified_ucm_var[] = "FullySpecifiedUCM"; static const char main_volume_names[] = "MainVolumeNames"; +static const char optimize_no_stream[] = "OptimizeNoStream"; /* Represents a list of section names found in UCM. */ struct section_name { @@ -880,3 +881,15 @@ unsigned int ucm_get_period_frames_for_dev(snd_use_case_mgr_t *mgr, return 0; return value; } + +unsigned int ucm_get_optimize_no_stream_flag(snd_use_case_mgr_t *mgr) +{ + char *flag; + int ret = 0; + flag = ucm_get_flag(mgr, optimize_no_stream); + if (!flag) + return 0; + ret = !strcmp(flag, "1"); + free(flag); + return ret; +} diff --git a/cras/src/server/cras_alsa_ucm.h b/cras/src/server/cras_alsa_ucm.h index 3912ac9c..80e150f8 100644 --- a/cras/src/server/cras_alsa_ucm.h +++ b/cras/src/server/cras_alsa_ucm.h @@ -361,4 +361,13 @@ int ucm_get_jack_switch_for_dev(snd_use_case_mgr_t *mgr, const char *dev); unsigned int ucm_get_period_frames_for_dev(snd_use_case_mgr_t *mgr, const char *dev); +/* Gets the flag of optimization for no stream state. + * This flag enables no_stream ops in alsa_io. + * Args: + * mgr - The snd_use_case_mgr_t pointer returned from alsa_ucm_create. + * Returns: + * 1 if the flag is enabled. 0 otherwise. + */ +unsigned int ucm_get_optimize_no_stream_flag(snd_use_case_mgr_t *mgr); + #endif /* _CRAS_ALSA_UCM_H */ diff --git a/cras/src/tests/alsa_ucm_unittest.cc b/cras/src/tests/alsa_ucm_unittest.cc index 48a0805c..196322e6 100644 --- a/cras/src/tests/alsa_ucm_unittest.cc +++ b/cras/src/tests/alsa_ucm_unittest.cc @@ -721,6 +721,24 @@ TEST(AlsaUcm, MaxSoftwareGain) { ASSERT_TRUE(ret); } +TEST(AlsaUcm, OptimizeNoStream) { + snd_use_case_mgr_t* mgr = reinterpret_cast<snd_use_case_mgr_t*>(0x55); + std::string id = "=OptimizeNoStream//HiFi"; + std::string value = "1"; + + ResetStubData(); + + /* Value can be found in UCM. */ + snd_use_case_get_value[id] = value; + + EXPECT_EQ(1, ucm_get_optimize_no_stream_flag(mgr)); + + ResetStubData(); + + /* Value can not be found in UCM. */ + EXPECT_EQ(0, ucm_get_optimize_no_stream_flag(mgr)); +} + TEST(AlsaUCM, UseFullySpecifiedUCMConfig) { snd_use_case_mgr_t* mgr = reinterpret_cast<snd_use_case_mgr_t*>(0x55); int fully_specified_flag; |