# Global configuration section:
# - lists input
and output devices always present
on the device
# as well as the output device selected by
default.
# Devices are designated by a
string that corresponds
to the enum
in audio.h
# - defines whether the speaker output path uses DRC
#
"TRUE" means DRC
is enabled,
"FALSE" or omission means DRC isn
global_configuration {
attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX
default_output_device AUDIO_DEVICE_OUT_SPEAKER
attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_TELEPHONY_RX
speaker_drc_enabled
TRUE
}
# audio hardware module section: contains descriptors
for all audio hw modules present
on the
# device.
Each hw module node
is named after the corresponding hw module library base name.
#
For instance,
"primary" corresponds
to audio.primary.<device>.so.
# The
"primary" module
is mandatory
and must include at least one output
with
# AUDIO_OUTPUT_FLAG_PRIMARY flag.
#
Each module descriptor contains one
or more output profile descriptors
and zero
or more
# input profile descriptors.
Each profile lists all the parameters supported by a given output
#
or input stream category.
# The
"channel_masks",
"formats",
"devices" and "flags" are specified using strings corresponding
#
to enums
in audio.h
and audio_policy.h. They are concatenated by use of
"|" without
space or "\n".
audio_hw_modules {
primary {
outputs {
primary {
sampling_rates
44100|
48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL
flags AUDIO_OUTPUT_FLAG_PRIMARY
}
deep_buffer {
sampling_rates
8000|
11025|
12000|
16000|
22050|
24000|
32000|
44100|
48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL
flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
}
hdmi {
sampling_rates
44100|
48000
channel_masks dynamic
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_AUX_DIGITAL
flags AUDIO_OUTPUT_FLAG_DIRECT
}
compress_offload {
sampling_rates
8000|
11025|
12000|
16000|
22050|
24000|
32000|
44100|
48000
channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
}
voice_tx {
sampling_rates
8000|
16000|
48000
channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_TELEPHONY_TX
}
}
inputs {
primary {
sampling_rates
8000|
11025|
12000|
16000|
22050|
24000|
32000|
44100|
48000
channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC
}
voice_rx {
sampling_rates
8000|
16000|
48000
channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_TELEPHONY_RX
}
}
}
a2dp {
outputs {
a2dp {
sampling_rates
44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_ALL_A2DP
}
}
inputs {
a2dp {
sampling_rates
44100|
48000
channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP
}
}
}
usb {
outputs {
usb_accessory {
sampling_rates
44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_USB_ACCESSORY
}
usb_device {
sampling_rates dynamic
channel_masks dynamic
formats dynamic
devices AUDIO_DEVICE_OUT_USB_DEVICE
}
}
inputs {
usb_device {
sampling_rates dynamic
channel_masks dynamic
formats dynamic
devices AUDIO_DEVICE_IN_USB_DEVICE
}
}
}
r_submix {
outputs {
submix {
sampling_rates
48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
}
}
inputs {
submix {
sampling_rates
48000
channel_masks AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
}
}
}
}
float to short
void floattoshort(
float * floatbuffer,
short * shortbuffer,
int length) {
for(
int i=
0; i< length; i++) {
float f = floatbuffer[i];
f= f *
32768;
if(f>
32767) f=
32767;
if(f<-
32768) f= -
32768;
shortbuffer[i] = (
short)f;
}
}
Stero to Mono
uint32_t lengthIn = framesWritten;
int16_t
inShort[lengthIn] = {
0 };
if(channelNum ==
2) {
for (uint32_t i =
0; i < lengthIn; i++) {
inShort[i] = (int16_t) ((((int8_t *) shortbuffer)[i *
4] &
0xff)
| ((((int8_t *) shortbuffer)[i *
4+
1] <<
8) &
0xff00));
}
}
else /*channelNum ==
1*/ {
for (uint32_t i =
0; i < lengthIn; i++) {
inShort[i] = (int16_t) ((((int8_t *) shortbuffer)[i *
2] &
0xff)
| ((((int8_t *) shortbuffer)[i *
2+
1] <<
8) &
0xff00));
}
}
转载请注明原文地址: https://ju.6miu.com/read-1309774.html