Merge changes I4dde722b,Ic24860a2 into audio-userspace.lnx.2.2-dev
* changes:
mm-audio: aac: modify aac encoding test app
mm-audio: aac: modify aac encoding test app
diff --git a/configs/msm8998/audio_platform_info.xml b/configs/msm8998/audio_platform_info.xml
index daa0ea7..3bc8c11 100644
--- a/configs/msm8998/audio_platform_info.xml
+++ b/configs/msm8998/audio_platform_info.xml
@@ -90,6 +90,9 @@
</gain_db_to_level_mapping>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" backend="bt-sco" interface="SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_BT_A2DP" backend="bt-a2dp" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
diff --git a/configure.ac b/configure.ac
index 0db83d0..188bf15 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,7 @@
AM_CONDITIONAL([WMA_SUPPORT], [test x$AUDIO_FEATURE_ENABLED_EXTN_WMA_DECODER = xtrue])
AM_CONDITIONAL([COMPRESS_INPUT], [test x$AUDIO_FEATURE_ENABLED_COMPRESS_INPUT = xtrue])
AM_CONDITIONAL([AUDIO_HW_EXTN_API], [test x$BOARD_SUPPORTS_QAHW = xtrue])
+AM_CONDITIONAL([AFE_PROXY], [test x$AUDIO_FEATURE_ENABLED_PROXY_DEVICE = xtrue])
AC_CONFIG_FILES([ \
Makefile \
diff --git a/hal/Makefile.am b/hal/Makefile.am
index 03b60ce..9f5214a 100644
--- a/hal/Makefile.am
+++ b/hal/Makefile.am
@@ -133,6 +133,10 @@
c_sources += audio_hw_extn_api.c
endif
+if AFE_PROXY
+AM_CFLAGS += -DAFE_PROXY_ENABLED
+endif
+
h_sources = audio_extn/audio_defs.h \
audio_extn/audio_extn.h \
audio_hw.h \
@@ -149,5 +153,5 @@
audio_primary_default_la_CFLAGS += -Dstrlcat=g_strlcat
audio_primary_default_la_CFLAGS += -DINT_MAX=0x7fffffff
audio_primary_default_la_CFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
-audio_primary_default_la_CFLAGS += -DLINUX_ENABLED $(TARGET_CFLAGS)
+audio_primary_default_la_CFLAGS += -DLINUX_ENABLED $(TARGET_CFLAGS) -DAUDIO_EXTN_FORMATS_ENABLED
audio_primary_default_la_LDFLAGS = -module -shared -avoid-version
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index d0959e8..4ac94ca 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -788,7 +788,9 @@
bool audio_extn_a2dp_is_force_device_switch()
{
//During encoder reconfiguration mode, force a2dp device switch
- return a2dp.is_handoff_in_progress;
+ // Or if a2dp device is selected but earlier start failed ( as a2dp
+ // was suspended, force retry.
+ return a2dp.is_handoff_in_progress || !a2dp.a2dp_started;
}
void audio_extn_a2dp_get_apptype_params(uint32_t *sample_rate,
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 659b013..1ea6754 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1051,8 +1051,10 @@
((usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
(usecase->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) ||
(usecase->devices & AUDIO_DEVICE_OUT_USB_DEVICE) ||
- (force_restart_session)) &&
- (platform_check_backends_match(snd_device, usecase->out_snd_device))) {
+ (usecase->devices & AUDIO_DEVICE_OUT_ALL_A2DP) ||
+ (usecase->devices & AUDIO_DEVICE_OUT_ALL_SCO)) &&
+ ((force_restart_session) ||
+ (platform_check_backends_match(snd_device, usecase->out_snd_device)))) {
ALOGD("%s:becf: check_usecases (%s) is active on (%s) - disabling ..",
__func__, use_case_table[usecase->id],
@@ -1398,9 +1400,11 @@
}
// Force all a2dp output devices to reconfigure for proper AFE encode format
+ //Also handle a case where in earlier a2dp start failed as A2DP stream was
+ //in suspended state, hence try to trigger a retry when we again get a routing request.
if((usecase->stream.out) &&
(usecase->stream.out->devices & AUDIO_DEVICE_OUT_ALL_A2DP) &&
- audio_extn_a2dp_is_force_device_switch()) {
+ audio_extn_a2dp_is_force_device_switch()) {
ALOGD("Force a2dp device switch to update new encoder config");
ret = true;
}
@@ -2607,7 +2611,10 @@
/* To avoid a2dp to sco overlapping force route BT usecases
* to speaker based on Phone state
*/
- if ((val & AUDIO_DEVICE_OUT_ALL_A2DP) &&
+ if ((((val & AUDIO_DEVICE_OUT_SPEAKER) &&
+ (val & AUDIO_DEVICE_OUT_ALL_A2DP)) ||
+ ((adev->snd_dev_ref_cnt[SND_DEVICE_OUT_BT_A2DP] == 0) &&
+ (val & AUDIO_DEVICE_OUT_ALL_A2DP))) &&
((adev->mode == AUDIO_MODE_RINGTONE) ||
(adev->mode == AUDIO_MODE_IN_CALL))) {
ALOGD("Forcing a2dp routing to speaker for ring/call mode");
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 81b50b6..90fffb4 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -56,14 +56,15 @@
#define MIXER_XML_PATH_I2S "/system/etc/mixer_paths_i2s.xml"
#define MIXER_XML_PATH_WCD9306 "/system/etc/mixer_paths_wcd9306.xml"
#define MIXER_XML_PATH_WCD9330 "/system/etc/mixer_paths_wcd9330.xml"
-#define MIXER_XML_PATH_WCD9335 "/system/etc/mixer_paths_wcd9335.xml"
#define MIXER_XML_PATH_WCD9340 "/system/etc/mixer_paths_wcd9340.xml"
#ifdef LINUX_ENABLED
+/* For LE platforms */
#define MIXER_XML_PATH "/etc/mixer_paths.xml"
#define MIXER_XML_PATH_MSM8909_PM8916 "/etc/mixer_paths_msm8909_pm8916.xml"
#define MIXER_XML_PATH_MTP "/etc/mixer_paths_mtp.xml"
#define MIXER_XML_PATH_SKU2 "/etc/mixer_paths_qrd_sku2.xml"
#define MIXER_XML_PATH_WCD9326 "/etc/mixer_paths_wcd9326.xml"
+#define MIXER_XML_PATH_WCD9335 "/etc/mixer_paths_wcd9335.xml"
#define PLATFORM_INFO_XML_PATH_EXTCODEC "/etc/audio_platform_info_extcodec.xml"
#define PLATFORM_INFO_XML_PATH "/etc/audio_platform_info.xml"
#define MIXER_XML_PATH_WCD9326_I2S "/etc/mixer_paths_wcd9326_i2s.xml"
@@ -76,6 +77,7 @@
#define MIXER_XML_PATH_SKU2 "/system/etc/mixer_paths_qrd_sku2.xml"
#define PLATFORM_INFO_XML_PATH_EXTCODEC "/system/etc/audio_platform_info_extcodec.xml"
#define MIXER_XML_PATH_WCD9326 "/system/etc/mixer_paths_wcd9326.xml"
+#define MIXER_XML_PATH_WCD9335 "/system/etc/mixer_paths_wcd9335.xml"
#define MIXER_XML_PATH_SKUN "/system/etc/mixer_paths_qrd_skun.xml"
#define PLATFORM_INFO_XML_PATH "/system/etc/audio_platform_info.xml"
#define MIXER_XML_PATH_WCD9326_I2S "/system/etc/mixer_paths_wcd9326_i2s.xml"
@@ -281,6 +283,7 @@
};
static bool is_external_codec = false;
+static bool is_slimbus_interface = false;
int pcm_device_table[AUDIO_USECASE_MAX][2] = {
[USECASE_AUDIO_PLAYBACK_DEEP_BUFFER] = {DEEP_BUFFER_PCM_DEVICE,
@@ -852,6 +855,13 @@
#define LOW_LATENCY_PLATFORM_DELAY (13*1000LL)
#define ULL_PLATFORM_DELAY (6*1000LL)
+static void update_interface(const char *snd_card_name) {
+ if (!strncmp(snd_card_name, "apq8009-tashalite-snd-card",
+ sizeof("apq8009-tashalite-snd-card"))) {
+ is_slimbus_interface = false;
+ }
+}
+
static void update_codec_type(const char *snd_card_name) {
if (!strncmp(snd_card_name, "msm8939-tapan-snd-card",
@@ -897,6 +907,7 @@
{
ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
is_external_codec = true;
+ is_slimbus_interface = true;
}
}
static void query_platform(const char *snd_card_name,
@@ -1357,6 +1368,7 @@
hw_interface_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = strdup("SLIMBUS_0_RX-and-USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("AFE_PCM_RX");
+ hw_interface_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("PROXY_PORT_RX");
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -1793,6 +1805,7 @@
}
adev->snd_card = snd_card_num;
update_codec_type(snd_card_name);
+ update_interface(snd_card_name);
ALOGD("%s: Opened sound card:%d", __func__, snd_card_num);
break;
}
@@ -2041,7 +2054,7 @@
my_data->current_backend_cfg[idx].channels_mixer_ctl = NULL;
}
- if (is_external_codec) {
+ if (is_slimbus_interface) {
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].bitwidth_mixer_ctl =
strdup("SLIM_0_RX Format");
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].samplerate_mixer_ctl =
@@ -2088,6 +2101,8 @@
strdup("MI2S_RX Format");
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].samplerate_mixer_ctl =
strdup("MI2S_RX SampleRate");
+ my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].channels_mixer_ctl =
+ strdup("MI2S_RX Channels");
my_data->current_backend_cfg[DEFAULT_CODEC_TX_BACKEND].bitwidth_mixer_ctl =
strdup("MI2S_TX Format");
@@ -4775,6 +4790,14 @@
int na_mode = platform_get_native_support();
bool channels_updated = false;
+ /*BT devices backend is not configured from HAL hence skip*/
+ if (snd_device == SND_DEVICE_OUT_BT_A2DP ||
+ snd_device == SND_DEVICE_OUT_BT_SCO ||
+ snd_device == SND_DEVICE_OUT_BT_SCO_WB) {
+ backend_change = false;
+ return backend_change;
+ }
+
backend_idx = platform_get_backend_index(snd_device);
bit_width = backend_cfg->bit_width;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 83a859c..ffcb862 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1207,6 +1207,7 @@
hw_interface_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = strdup("SLIMBUS_0_RX-and-USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("AFE_PCM_RX");
+ hw_interface_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("PROXY_PORT_RX");
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
@@ -4704,6 +4705,14 @@
int na_mode = platform_get_native_support();
bool channels_updated = false;
+ /*BT devices backend is not configured from HAL hence skip*/
+ if (snd_device == SND_DEVICE_OUT_BT_A2DP ||
+ snd_device == SND_DEVICE_OUT_BT_SCO ||
+ snd_device == SND_DEVICE_OUT_BT_SCO_WB) {
+ backend_change = false;
+ return backend_change;
+ }
+
backend_idx = platform_get_backend_index(snd_device);
bit_width = backend_cfg->bit_width;
diff --git a/mm-audio/aenc-aac/qdsp6/Makefile.am b/mm-audio/aenc-aac/qdsp6/Makefile.am
index d5103a4..cb89ec1 100644
--- a/mm-audio/aenc-aac/qdsp6/Makefile.am
+++ b/mm-audio/aenc-aac/qdsp6/Makefile.am
@@ -24,8 +24,8 @@
libOmxAacEnc_la_SOURCES = $(c_sources)
libOmxAacEnc_la_CFLAGS = $(AM_CFLAGS) -fPIC $(GLIB_CFLAGS) -include glib.h -Dstrlcpy=g_strlcpy
libOmxAacEnc_la_CPPFLAGS = $(AM_CPPFLAGS) -fPIC $(GLIB_CFLAGS) -include glib.h -Dstrlcpy=g_strlcpy
-libOmxAacEnc_la_LDLIBS = -lmm-omxcore -lstdc++ -lpthread $(GLIB_LIBS) -ldl -llog
-libOmxAacEnc_la_LDFLAGS = -shared $(GLIB_LIBS) -version-info $(OMXAUDIO_LIBRARY_VERSION)
+libOmxAacEnc_la_LIBADD = -lmm-omxcore -lstdc++ -lpthread $(GLIB_LIBS) -ldl -llog
+libOmxAacEnc_la_LDFLAGS = -shared $(GLIB_LIBS) -avoid-version $(OMXAUDIO_LIBRARY_VERSION)
bin_PROGRAMS = mm-aenc-omxaac-test
mm_aenc_omxaac_test_SOURCES = ./test/omx_aac_enc_test.c
diff --git a/mm-audio/aenc-amrnb/qdsp6/Makefile.am b/mm-audio/aenc-amrnb/qdsp6/Makefile.am
index b63130c..13379a3 100644
--- a/mm-audio/aenc-amrnb/qdsp6/Makefile.am
+++ b/mm-audio/aenc-amrnb/qdsp6/Makefile.am
@@ -31,7 +31,7 @@
libOmxAmrEnc_la_LIBADD = -lcutils -llog
libOmxAmrEnc_la_CFLAGS = $(AM_CFLAGS) $(AM_CPPFLAGS) $(GLIB_CFLAGS) -include glib.h -Dstrlcpy=g_strlcpy
libOmxAmrEnc_la_CPPFLAGS = $(AM_CFLAGS) $(AM_CPPFLAGS) $(GLIB_CFLAGS) -include glib.h -Dstrlcpy=g_strlcpy
-libOmxAmrEnc_la_LDFLAGS = $(GLIB_LIBS) -shared -version-info 1:0:0
+libOmxAmrEnc_la_LDFLAGS = $(GLIB_LIBS) -shared -avoid-version
bin_PROGRAMS = mm_aenc_omxamr_test
diff --git a/mm-audio/aenc-g711/qdsp6/Makefile.am b/mm-audio/aenc-g711/qdsp6/Makefile.am
index 572b87d..f5ccca8 100644
--- a/mm-audio/aenc-g711/qdsp6/Makefile.am
+++ b/mm-audio/aenc-g711/qdsp6/Makefile.am
@@ -21,7 +21,8 @@
libOmxG711Enc_la_SOURCES = $(C_SOURCES)
libOmxG711Enc_la_CFLAGS = $(AM_CFLAGS) -Dstrlcpy=g_strlcpy $(GLIB_CFLAGS) -include glib.h
libOmxG711Enc_la_CPPFLAGS = $(AM_CFLAGS) -Dstrlcpy=g_strlcpy $(GLIB_CFLAGS) -include glib.h
-libOmxG711Enc_la_LDFLAGS = $(GLIB_LIBS) -lcutils -llog -lstdc++
+libOmxG711Enc_la_LIBADD = $(GLIB_LIBS) -lcutils -llog -lstdc++
+libOmxG711Enc_la_LDFLAGS = -shared -avoid-version
bin_PROGRAMS = mm_aenc_omxg711_test
mm_aenc_omxg711_test_SOURCES = ./test/omx_g711_enc_test.c
diff --git a/qahw_api/test/qahw_multi_record_test.c b/qahw_api/test/qahw_multi_record_test.c
index eab100d..81924a3 100644
--- a/qahw_api/test/qahw_multi_record_test.c
+++ b/qahw_api/test/qahw_multi_record_test.c
@@ -339,6 +339,7 @@
while(true) {
if(time_elapsed < params->record_delay) {
usleep(1000000*(params->record_delay - time_elapsed));
+ time_elapsed = difftime(time(0), start_time);
continue;
} else if (time_elapsed > params->record_delay + params->record_length) {
fprintf(log_file, "\n Test for session with handle(%d) completed.\n", params->handle);
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index a739970..86244e8 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -102,6 +102,12 @@
AAC_HE_V2
} aac_format_type_t;
+typedef enum {
+ WMA = 1,
+ WMA_PRO,
+ WMA_LOSSLESS
+} wma_format_type_t;
+
static pthread_mutex_t write_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t write_cond = PTHREAD_COND_INITIALIZER;
static pthread_mutex_t drain_lock = PTHREAD_MUTEX_INITIALIZER;
@@ -139,6 +145,8 @@
"music_offload_wma_block_align=%d;" \
"music_offload_wma_channel_mask=%d;" \
"music_offload_wma_encode_option=%d;" \
+ "music_offload_wma_encode_option1=%d;" \
+ "music_offload_wma_encode_option2=%d;" \
"music_offload_wma_format_tag=%d;"
void read_kvpair(char *kvpair, char* kvpair_values, int filetype)
@@ -524,6 +532,7 @@
printf(" -r --sample-rate <sampling rate> - Required for Non-WAV streams\n");
printf(" For AAC-HE pls specify half the sample rate\n\n");
printf(" -c --channel count <channels> - Required for Non-WAV streams\n\n");
+ printf(" -b --bitwidth <bitwidth> - Give either 16 or 24.Default value is 16.\n\n");
printf(" -v --volume <float volume level> - Volume level float value between 0.0 - 1.0.\n");
printf(" -d --device <decimal value> - see system/media/audio/include/system/audio.h for device values\n");
printf(" Optional Argument and Default value is 2, i.e Speaker\n\n");
@@ -532,6 +541,8 @@
printf(" Required for non WAV formats\n\n");
printf(" -a --aac-type <aac type> - Required for AAC streams\n");
printf(" 1: LC 2: HE_V1 3: HE_V2\n\n");
+ printf(" -w --wma-type <wma type> - Required for WMA clips.Default vlaue is 1\n");
+ printf(" 1: WMA 2: WMAPRO 3:WMA_LOSSLESS \n\n");
printf(" -k --kvpairs <values> - Metadata information of clip\n");
printf(" See Example for more info\n\n");
printf(" -l --log-file <ABSOLUTE FILEPATH> - File path for debug msg, to print\n");
@@ -574,7 +585,7 @@
printf(" -> Play vorbis clip (-t = 7)\n");
printf(" -> kvpair(-k) values represent media-info of clip & values should be in below mentioned sequence\n");
printf(" ->avg_bit_rate,sample_rate,vorbis_bitstream_fmt\n");
- printf(" hal_play_test -f /etc/file.wma -k 192000,48000,16,8192,3,15,353 -t 8 -r 48000 -c 2 -v 0.5 \n");
+ printf(" hal_play_test -f /etc/file.wma -k 192000,48000,16,8192,3,15,0,0,353 -t 8 -w 1 -r 48000 -c 2 -v 0.5 \n");
printf(" -> Play wma clip (-t = 8)\n");
printf(" -> kvpair(-k) values represent media-info of clip & values should be in below mentioned sequence\n");
printf(" ->avg_bit_rate,sample_rate,wma_bit_per_sample,wma_block_align\n");
@@ -604,7 +615,9 @@
int filetype = FILE_WAV;
int sample_rate = 44100;
int channels = 2;
+ int bitwidth = 16;
aac_format_type_t format_type = AAC_LC;
+ wma_format_type_t wma_format_type = WMA;
log_file = stdout;
audio_devices_t output_device = AUDIO_DEVICE_OUT_SPEAKER;
audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE;
@@ -616,11 +629,13 @@
{"device", required_argument, 0, 'd'},
{"sample-rate", required_argument, 0, 'r'},
{"channels", required_argument, 0, 'c'},
+ {"bitwidth", required_argument, 0, 'b'},
{"volume", required_argument, 0, 'v'},
{"log-file", required_argument, 0, 'l'},
{"dump-file", required_argument, 0, 'D'},
{"file-type", required_argument, 0, 't'},
{"aac-type", required_argument, 0, 'a'},
+ {"wma-type", required_argument, 0, 'w'},
{"kvpairs", required_argument, 0, 'k'},
{"flags", required_argument, 0, 'F'},
{"kpi-mode", no_argument, 0, 'K'},
@@ -645,7 +660,7 @@
proxy_params.hdr.data_sz = 0;
while ((opt = getopt_long(argc,
argv,
- "-f:r:c:d:v:l:t:a:k:D:KF:h",
+ "-f:r:c:b:d:v:l:t:a:w:k:D:KF:h",
long_options,
&option_index)) != -1) {
switch (opt) {
@@ -655,9 +670,12 @@
case 'r':
sample_rate = atoi(optarg);
break;
- case 'c':;
+ case 'c':
channels = atoi(optarg);
break;
+ case 'b':
+ bitwidth = atoi(optarg);
+ break;
case 'd':
output_device = atoll(optarg);
break;
@@ -681,6 +699,9 @@
case 'a':
format_type = atoi(optarg);
break;
+ case 'w':
+ wma_format_type = atoi(optarg);
+ break;
case 'k':
kvpair_values = optarg;
break;
@@ -717,6 +738,7 @@
fprintf(stdout, "Sample Rate:%d\n", sample_rate);
fprintf(stdout, "Channels:%d\n", channels);
+ fprintf(stdout, "Bitwidth:%d\n", bitwidth);
fprintf(stdout, "Log file:%s\n", log_filename);
fprintf(stdout, "Volume level:%f\n", vol_level);
fprintf(stdout, "Output Device:%d\n", output_device);
@@ -771,7 +793,13 @@
}
memcpy (&channels, &header[22], 2);
memcpy (&sample_rate, &header[24], 4);
- config.offload_info.format = AUDIO_FORMAT_PCM_16_BIT;
+ memcpy (&bitwidth, &header[34], 2);
+ if (bitwidth == 32)
+ config.offload_info.format = AUDIO_FORMAT_PCM_32_BIT;
+ else if (bitwidth == 24)
+ config.offload_info.format = AUDIO_FORMAT_PCM_24_BIT_PACKED;
+ else
+ config.offload_info.format = AUDIO_FORMAT_PCM_16_BIT;
if (!flags_set)
flags = AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD;
break;
@@ -798,7 +826,10 @@
config.offload_info.format = AUDIO_FORMAT_VORBIS;
break;
case FILE_WMA:
- config.offload_info.format = AUDIO_FORMAT_WMA;
+ if (wma_format_type == WMA)
+ config.offload_info.format = AUDIO_FORMAT_WMA;
+ else
+ config.offload_info.format = AUDIO_FORMAT_WMA_PRO;
break;
case FILE_MP2:
config.offload_info.format = AUDIO_FORMAT_MP2;
@@ -824,6 +855,7 @@
config.format = config.offload_info.format;
config.offload_info.channel_mask = config.channel_mask;
config.offload_info.sample_rate = sample_rate;
+ config.offload_info.bit_width = bitwidth;
config.offload_info.version = AUDIO_OFFLOAD_INFO_VERSION_CURRENT;
config.offload_info.size = sizeof(audio_offload_info_t);