Skip to content

Commit

Permalink
alsa_sound: Make low-latency audio feature optional
Browse files Browse the repository at this point in the history
 * This requires a baseband update on most devices, so make it optional.

Change-Id: I0be3b6d0c19c26663c9ce8a26d5769a8940b318c
  • Loading branch information
hyperb1iss committed Dec 2, 2012
1 parent 9eb1a4f commit b469b0e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
4 changes: 4 additions & 0 deletions alsa_sound/Android.mk
Expand Up @@ -22,6 +22,10 @@ ifeq ($(strip $(BOARD_USES_SEPERATED_AUDIO_INPUT)),true)
LOCAL_CFLAGS += -DSEPERATED_AUDIO_INPUT LOCAL_CFLAGS += -DSEPERATED_AUDIO_INPUT
endif endif


ifeq ($(strip $(BOARD_HAVE_LOW_LATENCY_AUDIO)),true)
LOCAL_CFLAGS += -DQCOM_LOW_LATENCY_AUDIO_ENABLED
endif

LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
AudioHardwareALSA.cpp \ AudioHardwareALSA.cpp \
AudioStreamOutALSA.cpp \ AudioStreamOutALSA.cpp \
Expand Down
18 changes: 17 additions & 1 deletion alsa_sound/AudioHardwareALSA.cpp
Expand Up @@ -905,7 +905,7 @@ AudioHardwareALSA::openOutputStream(uint32_t devices,


char *use_case; char *use_case;
snd_use_case_get(mUcMgr, "_verb", (const char **)&use_case); snd_use_case_get(mUcMgr, "_verb", (const char **)&use_case);

#ifdef QCOM_LOW_LATENCY_AUDIO_ENABLED
if (flag & AUDIO_OUTPUT_FLAG_DEEP_BUFFER) { if (flag & AUDIO_OUTPUT_FLAG_DEEP_BUFFER) {
ALOGD("openOutputStream: DeepBuffer Output"); ALOGD("openOutputStream: DeepBuffer Output");
alsa_handle.isDeepbufferOutput = true; alsa_handle.isDeepbufferOutput = true;
Expand All @@ -924,6 +924,14 @@ AudioHardwareALSA::openOutputStream(uint32_t devices,
strlcpy(alsa_handle.useCase, SND_USE_CASE_MOD_PLAY_LOWLATENCY_MUSIC, sizeof(alsa_handle.useCase)); strlcpy(alsa_handle.useCase, SND_USE_CASE_MOD_PLAY_LOWLATENCY_MUSIC, sizeof(alsa_handle.useCase));
} }
} }
#else
ALOGD("openOutputStream: Standard Output");
if ((use_case == NULL) || (!strcmp(use_case, SND_USE_CASE_VERB_INACTIVE))) {
strlcpy(alsa_handle.useCase, SND_USE_CASE_VERB_HIFI, sizeof(alsa_handle.useCase));
} else {
strlcpy(alsa_handle.useCase, SND_USE_CASE_MOD_PLAY_MUSIC, sizeof(alsa_handle.useCase));
}
#endif
free(use_case); free(use_case);
mDeviceList.push_back(alsa_handle); mDeviceList.push_back(alsa_handle);
ALSAHandleList::iterator it = mDeviceList.end(); ALSAHandleList::iterator it = mDeviceList.end();
Expand All @@ -937,6 +945,7 @@ AudioHardwareALSA::openOutputStream(uint32_t devices,
} }
#endif #endif
mALSADevice->route(&(*it), devices, mode()); mALSADevice->route(&(*it), devices, mode());
#ifdef QCOM_LOW_LATENCY_AUDIO_ENABLED
if (flag & AUDIO_OUTPUT_FLAG_DEEP_BUFFER) { if (flag & AUDIO_OUTPUT_FLAG_DEEP_BUFFER) {
if(!strcmp(it->useCase, SND_USE_CASE_VERB_HIFI)) { if(!strcmp(it->useCase, SND_USE_CASE_VERB_HIFI)) {
snd_use_case_set(mUcMgr, "_verb", SND_USE_CASE_VERB_HIFI); snd_use_case_set(mUcMgr, "_verb", SND_USE_CASE_VERB_HIFI);
Expand All @@ -950,6 +959,13 @@ AudioHardwareALSA::openOutputStream(uint32_t devices,
snd_use_case_set(mUcMgr, "_enamod", SND_USE_CASE_MOD_PLAY_LOWLATENCY_MUSIC); snd_use_case_set(mUcMgr, "_enamod", SND_USE_CASE_MOD_PLAY_LOWLATENCY_MUSIC);
} }
} }
#else
if(!strcmp(it->useCase, SND_USE_CASE_VERB_HIFI)) {
snd_use_case_set(mUcMgr, "_verb", SND_USE_CASE_VERB_HIFI);
} else {
snd_use_case_set(mUcMgr, "_enamod", SND_USE_CASE_MOD_PLAY_MUSIC);
}
#endif
err = mALSADevice->open(&(*it)); err = mALSADevice->open(&(*it));
if (err) { if (err) {
ALOGE("Device open failed"); ALOGE("Device open failed");
Expand Down

0 comments on commit b469b0e

Please sign in to comment.