USB audio on Android platform

本文详细介绍了Android设备作为OTG主机时,如何连接并使用音频设备的过程。从内核源码到应用程序层面,包括Qualcomm EHCH控制器检测、音频设备枚举、音频初始化及播放流程等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这种是android 手机为Host, audio设备为device. 

以MSM8x26  android 5.0/5.1 (Lolliop) 为例


1. source code

Kernel

 kernel/drivers/usb/otg

 kernel/sound/usb/pcm.c,card.c,stream.c

Frameworks/base

 services/usb/java/com/android/server/usb/UsbHostManager.java

 UsbAudioManager.java

hardware/libhardware

 hardware/libhardware/modules/usbaudio/audio_hw.c

Audio related

 AudioService.java, AudioSystem.java, AudioManager.java

 AudioPolicyIntefaceImpl.CPP AudioPolicyManager.cpp

  AudioFlinger.cpp  Threads.cpp


2. Qualcomm ehci HostController detection

msm_pmic_id_irqirq=288

msm_otg f9a55000.usb:IDstatus_w

PMIC: ID clear

msm_hsusb_ldo_enable mode=1

msm_otg f9a55000.usb:USB exited from low power mode

b_idle work

a_idle work

msm_hsusb_vbus_power on=1

usbin-valid triggered: 1host_mode: 1

a_wait_vrise work

msm_hsusb_hostmsm_hsusb_host: QualcommOn-Chip EHCI Host Controller

msm_otg_usbdev_notify action=3

msm_hsusb_hostmsm_hsusb_host: new USB busregistered, assigned bus number 1

msm_hsusb_hostmsm_hsusb_host:irq 166,iomem 0xf9a55000

msm_hsusb_hostmsm_hsusb_host: USB 2.0started, EHCI 1.00

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=1 index=0

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=2 index=0

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=2 index=0

usb usb1: New USB device found,idVendor=1d6b,idProduct=0002

usb usb1: New USB device strings:Mfr=3, Product=2,SerialNumber=1

usb usb1: Product: Qualcomm On-ChipEHCI Host Controller

usb usb1: Manufacturer: Linux3.4.0-g8148a0cf-00553-g364b55fehci_hcd

usb usb1: SerialNumber:msm_hsusb_host

usb_ueventPRODUCT=1d6b/2/304

usb_set_configuration 1

msm_otg_usbdev_notify action=5

usb_set_configuration sendUSB_REQ_SET_CONFIGURATION 1

usb_ueventPRODUCT=1d6b/2/304

hub 1-0:1.0: USB hub found

hub_configureget_hub_descriptor

hub 1-0:1.0: 1 port detected

msm_otg_usbdev_notify action=1

UsbHostManager: Added deviceUsbDevice[mName=/dev/bus/usb/001/001,mVendorId=7531,mProductId=2,mClass=9,mSubclass=0,mProtocol=1,mManufacturerName=Linux3.4.0-g8148a0cf-00553-g364b55fehci_hcd,mProductName=QualcommOn-Chip EHCI HostController,mSerialNumber=msm_hsusb_host,mConfigurations=[

UsbHostManager: UsbConfiguration[mId=1,mName=null,mAttributes=224,mMaxPower=0,mInterfaces=[

UsbHostManager: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=9,mSubclass=0,mProtocol=0,mEndpoints=[

UsbHostManager: UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=4,mInterval=12]]]]

a_wait_bcon work

msm_otg f9a55000.usb:USB in low power mode


3. enumeration audio device

usb 1-1: new full-speed USB devicenumber 2 usingmsm_hsusb_host

stk_als_poll_work_func:als input event145lux

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=1 index=0

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=2 index=0

usb_get_descriptorUSB_REQ_GET_DESCRIPTOR type=2 index=0

usb 1-1: New USB device found,idVendor=0d8c,idProduct=0012

usb 1-1: New USB device strings: Mfr=1,Product=2,SerialNumber=0

usb 1-1: Product: USB Audio Device

usb 1-1: Manufacturer: C-MediaElectronics Inc.

usb_ueventPRODUCT=d8c/12/100

usb_set_configuration 1

msm_otg_usbdev_notify action=5

usb_set_configuration sendUSB_REQ_SET_CONFIGURATION 1

usb_ueventPRODUCT=d8c/12/100

usb_set_interface interface=1alternates=1 state=7

usb_set_interface interface=1alternates=0 state=7

usb_set_interface interface=2alternates=1 state=7

usb_set_interface interface=2alternates=0 state=7

usb_ueventPRODUCT=d8c/12/100

usb_ueventPRODUCT=d8c/12/100

EventHub: No inputdevice configuration file found for device 'C-Media Electronics Inc. USB AudioDevice'.

input: C-Media Electronics Inc. USBAudio Device as /devices/platform/msm_hsusb_host/usb1/1-1/1-1:1.3/input/input10

generic-usb0003:0D8C:0012.0001: input,hidraw0: USB HID v1.00 Device [C-Media ElectronicsInc. USB Audio Device] on usb-msm_hsusb_host-1/input3

msm_otg_usbdev_notify action=1

EventHub: Unable todisable kernel key repeat for /dev/input/event10: Function not implemented

EventHub: New device:id=11,fd=251,path='/dev/input/event10', name='C-Media Electronics Inc. USB Audio Device',classes=0x80000001, configuration='',keyLayout='/system/usr/keylayout/Generic.kl',keyCharacterMap='/system/usr/keychars/Generic.kcm',builtinKeyboard=false,wakeMechanism=EVIOCSSUSPENDBLOCK,usingClockIoctl=true

InputReader: Deviceadded: id=11, name='C-Media Electronics Inc. USB Audio Device',sources=0x00000101

UsbHostManager: Added deviceUsbDevice[mName=/dev/bus/usb/001/002,mVendorId=3468,mProductId=18,mClass=0,mSubclass=0,mProtocol=0,mManufacturerName=C-MediaElectronicsInc.,mProductName=USB AudioDevice,mSerialNumber=null,mConfigurations=[

UsbHostManager: UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=50,mInterfaces=[

UsbHostManager: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=1,mSubclass=1,mProtocol=0,mEndpoints=[]

UsbHostManager: UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[]

UsbHostManager: UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[

UsbHostManager: UsbEndpoint[mAddress=1,mAttributes=9,mMaxPacketSize=200,mInterval=1]]

UsbHostManager: UsbInterface[mId=2,mAlternateSetting=0,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[]

UsbHostManager: UsbInterface[mId=2,mAlternateSetting=1,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[

UsbHostManager: UsbEndpoint[mAddress=130,mAttributes=13,mMaxPacketSize=100,mInterval=1]]

UsbHostManager: UsbInterface[mId=3,mAlternateSetting=0,mName=null,mClass=3,mSubclass=0,mProtocol=0,mEndpoints=[

UsbHostManager: UsbEndpoint[mAddress=135,mAttributes=3,mMaxPacketSize=4,mInterval=2]]]]


4. Audio init and play

UsbAudioManager: sendDeviceNotification

 send Intent AudioManager.ACTION_USB_AUDIO_DEVICE_PLUG

   setWiredDeviceConnectionState(outDevice, state,params);

          sendMsgMSG_SET_WIRED_DEVICE_CONNECTION_STATE

            onSetWiredDeviceConnectionState()

               handleDeviceConnection()

                    AudioSystem.setDeviceConnectionState() (AudioSystem.java->AudioSystem.cpp)

                         AudioPolicyIntefaceImpl:setDeviceConnectionState()

                            AudioPolicyManager::setDeviceConnectionState()

                               AudioPolicyManager::setDeviceConnectionStateInt()


AudioPolicyManager::setDeviceConnectionStateInt()

  AudioPolicyManager::checkOutputsForDevice()

    mpClientInterface->openOutput()     frameworks/av/services/audiopolicy/AudioPolicyClientImpl.cpp

      af->openOutput()

frameworks/av/services/audioflinger/AudioFlinger.cpp

AudioFlinger::openOutput

  AudioFlinger::openOutput_l()

    hwDevHal->open_output_stream()

       adev_open_output_stream() 

hardware/libhardware/modules/usbaudio/audio_hw.c

    adev->hw_device.open_output_stream =adev_open_output_stream;


AudioFlinger: MixerThread::threadLoop_write  Threads.cpp

 AudioFlinger::PlaybackThread::threadLoop_write()

    ssize_tframesWritten =mNormalSink->write()

    bytesWritten =mOutput->stream->write()

          out_write() inusbaudio/audio_hw.c

hardware/libhardware/modules/usbaudio/audio_hw.c          

out->stream.write =out_write;


system/core/include/system/audio.h

audio_devices_t;

AUDIO_DEVICE_OUT_USB_ACCESSORY       = 0x2000,

AUDIO_DEVICE_OUT_USB_DEVICE                = 0x4000

frameworks/base/media/java/android/media/AudioSystem.java

public static final intDEVICE_OUT_USB_ACCESSORY = 0x2000;

public static final intDEVICE_OUT_USB_DEVICE = 0x4000;


5. Debug

Check device /dev/bus/usb/001/001exists or not
Check enumeration Ok or not
Use ellisys to check USBdata
Enable log in kernel/sound/usb, hardware/libhardware/modules/usbaudio
第一步 先检查枚举是否成功,不成功, 查kernel/drivers/usb
第二步 检查setDeviceConnectionState是否被调用,device/connected是否正确
第三步 usb_audio.c, open是否被调用
第四步 usb_audio.c   out_write是否被调用
第五步 usb_audio.c  out_write数据是否正确


6. Ellisys data



7. typical log

7.1. Connect OTG cable
20:50:29.966   626   626 D kernel  : [43050.705554] msm_pmic_id_irq irq=288
20:50:29.977   626   626 D kernel  : [43050.709883] msm_otg f9a55000.usb: ID status_w
20:50:29.977   626   626 D kernel  : [43050.709907] PMIC: ID clear
20:50:29.977   626   626 D kernel  : [43050.717245] msm_otg f9a55000.usb: USB exited from low power mode
20:50:29.977   626   626 D kernel  : [43050.717262] msm_otg_sm_work b_idle work
20:50:29.977   626   626 D kernel  : [43050.717279] msm_otg_sm_work a_idle work
20:50:30.206   626   626 D kernel  : [43050.939695] msm_otg_sm_work a_wait_vrise work
20:50:30.206   626   626 D kernel  : [43050.939714] msm_otg f9a55000.usb: host on
20:50:30.206   626   626 D kernel  : [43050.939724] msm_hsusb_host msm_hsusb_host: Qualcomm On-Chip EHCI Host Controller
20:50:30.207   626   626 D kernel  : [43050.940054] msm_hsusb_host msm_hsusb_host: new USB bus registered, assigned bus number 1
20:50:30.236   626   626 D kernel  : [43050.969700] msm_hsusb_host msm_hsusb_host: irq 166, io mem 0xf9a55000
20:50:30.256   626   626 D kernel  : [43050.989856] msm_hsusb_host msm_hsusb_host: USB 2.0 started, EHCI 1.00
20:50:30.256   626   626 D kernel  : [43050.989967] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
20:50:30.256   626   626 D kernel  : [43050.989978] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
20:50:30.256   626   626 D kernel  : [43050.989987] usb usb1: Product: Qualcomm On-Chip EHCI Host Controller
20:50:30.256   626   626 D kernel  : [43050.989995] usb usb1: Manufacturer: Linux 3.4.0+ ehci_hcd
20:50:30.256   626   626 D kernel  : [43050.990003] usb usb1: SerialNumber: msm_hsusb_host
20:50:30.256   626   626 D kernel  : [43050.990332] usb usb1: usb_probe_device
20:50:30.256   626   626 D kernel  : [43050.990357] usb_set_configuration send USB_REQ_SET_CONFIGURATION 1
20:50:30.256   626   626 D kernel  : [43050.990510] hub 1-0:1.0: usb_probe_interface
20:50:30.256   626   626 D kernel  : [43050.990521] hub 1-0:1.0: USB hub found
20:50:30.257   626   626 E kernel  : [43050.990530] hub_configure get_hub_descriptor
20:50:30.257   626   626 D kernel  : [43050.990554] hub 1-0:1.0: 1 port detected

20:50:30.269   928  1329 D UsbHostManager: Added device UsbDevice[mName=/dev/bus/usb/001/001,mVendorId=7531,mProductId=2,mClass=9,mSubclass=0,mProtocol=1,mManufacturerName=Linux 3.4.0+ ehci_hcd,mProductName=Qualcomm On-Chip EHCI Host Controller,mSerialNumber=msm_hsusb_host,mConfigurations=[
20:50:30.269   928  1329 D UsbHostManager: UsbConfiguration[mId=1,mName=null,mAttributes=224,mMaxPower=0,mInterfaces=[
20:50:30.269   928  1329 D UsbHostManager: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=9,mSubclass=0,mProtocol=0,mEndpoints=[
20:50:30.269   928  1329 D UsbHostManager: UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=4,mInterval=12]]]]

20:50:30.456   626   626 D kernel  : [43051.189669] hub 1-0:1.0: hub_port_connect_change port 1, status 0101, change 0000, 12 Mb/s
20:50:30.457   626   626 D kernel  : [43051.189720] hub_port_init
20:50:30.576   626   626 D kernel  : [43051.309614] usb 1-1: new full-speed USB device number 2 using msm_hsusb_host
20:50:30.727   626   626 D kernel  : [43051.464400] usb 1-1: New USB device found, idVendor=0d8c, idProduct=000c
20:50:30.727   626   626 D kernel  : [43051.464433] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
20:50:30.727   626   626 D kernel  : [43051.464450] usb 1-1: Product: xxx USB Headphone Set 
20:50:30.727   626   626 D kernel  : [43051.465261] usb 1-1: usb_probe_device
20:50:30.727   626   626 D kernel  : [43051.465338] usb_set_configuration send USB_REQ_SET_CONFIGURATION 1
20:50:30.727   626   626 D kernel  : [43051.466980] snd-usb-audio 1-1:1.0: usb_probe_interface
20:50:30.727   626   626 D kernel  : [43051.467017] usb_audio_probe
20:50:30.727   626   626 D kernel  : [43051.467027] snd_usb_audio_probe
20:50:30.727   626   626 D kernel  : [43051.467041] snd_usb_audio_create
20:50:30.727   626   626 D kernel  : [43051.468374] snd_usb_audio_create longname=xxx USB Headphone Set at usb-msm_hsusb_host-1, full speed
20:50:30.727   626   626 D kernel  : [43051.468408] snd_usb_create_streams protocol=0
20:50:30.727   626   626 D kernel  : [43051.468421] snd_usb_create_stream
20:50:30.727   626   626 D kernel  : [43051.468541] snd_usb_parse_audio_interface int=1 alt=1
20:50:30.727   626   626 D kernel  : [43051.468556] usb_set_interface interface=1 alternates=1 state=7
20:50:30.738   626   626 D kernel  : [43051.471339] snd_usb_create_stream int=1 alt=0
20:50:30.738   626   626 D kernel  : [43051.471361] usb_set_interface interface=1 alternates=0 state=7
20:50:30.738   626   626 D kernel  : [43051.472359] snd_usb_create_stream
20:50:30.738   626   626 D kernel  : [43051.472477] snd_usb_parse_audio_interface int=2 alt=1
20:50:30.738   626   626 D kernel  : [43051.472491] usb_set_interface interface=2 alternates=1 state=7
20:50:30.738   626   626 D kernel  : [43051.475304] snd_usb_create_stream int=2 alt=0
20:50:30.738   626   626 D kernel  : [43051.475322] usb_set_interface interface=2 alternates=0 state=7
20:50:30.738   626   626 D kernel  : [43051.478430] usbhid 1-1:1.3: usb_probe_interface
20:50:30.766   626   626 D kernel  : [43051.500065] input: xxx USB Headphone Set   as /devices/platform/msm_hsusb_host/usb1/1-1/1-1:1.3/input/input9
20:50:30.766   626   626 D kernel  : [43051.500549] generic-usb 0003:0D8C:000C.0001: input,hidraw0: USB HID v1.00 Device [xxx USB Headphone Set  ] on usb-msm_hsusb_host-1/input3

20:50:30.777   928  1329 D UsbHostManager: Added device UsbDevice[mName=/dev/bus/usb/001/002,mVendorId=3468,mProductId=12,mClass=0,mSubclass=0,mProtocol=0,mManufacturerName=null,mProductName=xxx USB Headphone Set  ,mSerialNumber=null,mConfigurations=[
20:50:30.777   928  1329 D UsbHostManager: UsbConfiguration[mId=1,mName=null,mAttributes=160,mMaxPower=50,mInterfaces=[
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=1,mSubclass=1,mProtocol=0,mEndpoints=[]
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[]
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[
20:50:30.777   928  1329 D UsbHostManager: UsbEndpoint[mAddress=1,mAttributes=9,mMaxPacketSize=200,mInterval=1]]
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=2,mAlternateSetting=0,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[]
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=2,mAlternateSetting=1,mName=null,mClass=1,mSubclass=2,mProtocol=0,mEndpoints=[
20:50:30.777   928  1329 D UsbHostManager: UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=100,mInterval=1]]
20:50:30.777   928  1329 D UsbHostManager: UsbInterface[mId=3,mAlternateSetting=0,mName=null,mClass=3,mSubclass=0,mProtocol=0,mEndpoints=[
20:50:30.777   928  1329 D UsbHostManager: UsbEndpoint[mAddress=131,mAttributes=3,mMaxPacketSize=4,mInterval=32]]]]

20:50:30.812   928  1235 D EventHub: No input device configuration file found for device 'xxx USB Headphone Set  '.
20:50:30.820   928  1235 W EventHub: Unable to disable kernel key repeat for /dev/input/event9: Function not implemented
20:50:30.820   928  1235 I EventHub: New device: id=9, fd=268, path='/dev/input/event9', name='xxx USB Headphone Set  ', classes=0x80000001, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, wakeMechanism=EVIOCSSUSPENDBLOCK, usingClockIoctl=true
20:50:30.820   928  1235 W EventHub: Unable to disable kernel key repeat for /dev/input/event9: Function not implemented
20:50:30.823   928  1235 I InputReader: Device added: id=9, name='xxx USB Headphone Set  ', sources=0x00000101

20:50:30.829   318  1255 V usb_audio_hw: usb:audio_hw::out adev_open_output_stream() handle:0x493, device:0x4000, flags:0x0
20:50:30.829   318  1255 V usb_audio_hw: out_get_sample_rate() = 44100
20:50:30.829   318  1255 I AudioFlinger: HAL output buffer size 448 frames, normal sink buffer size 896 frames
20:50:30.829   318  1255 V usb_audio_hw: out_get_sample_rate() = 44100
20:50:30.831   318  2845 I AudioFlinger: AudioFlinger's thread 0xb7265898 ready to run
20:50:30.835   318  2845 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:card=1;device=0

20:50:30.836   626   626 D kernel  : [43051.578538] snd_usb_playback_open
20:50:30.836   626   626 D kernel  : [43051.578547] snd_usb_pcm_open
20:50:30.836   626   626 D kernel  : [43051.578553] setup_hw_info
20:50:30.836   626   626 D kernel  : [43051.578559] snd_usb_autoresume
20:50:30.836   626   626 D kernel  : [43051.578762] snd_usb_playback_close
20:50:30.836   626   626 D kernel  : [43051.578769] snd_usb_pcm_close
20:50:30.846   626   626 D kernel  : [43051.584447] snd_usb_playback_open
20:50:30.846   626   626 D kernel  : [43051.584462] snd_usb_pcm_open
20:50:30.846   626   626 D kernel  : [43051.584468] setup_hw_info
20:50:30.846   626   626 D kernel  : [43051.584544] snd_usb_playback_close
20:50:30.846   626   626 D kernel  : [43051.584551] snd_usb_pcm_close
20:50:30.846   626   626 D kernel  : [43051.584622] snd_usb_playback_open
20:50:30.846   626   626 D kernel  : [43051.584629] snd_usb_pcm_open
20:50:30.847   626   626 D kernel  : [43051.584634] setup_hw_info
20:50:30.847   626   626 D kernel  : [43051.584695] snd_usb_hw_params
20:50:30.847   626   626 D kernel  : [43051.584741] set_format
20:50:30.847   626   626 D kernel  : [43051.584749] set_format usb_set_interface int:1 alt:1
20:50:30.847   626   626 D kernel  : [43051.584758] usb_set_interface interface=1 alternates=1 state=7
20:50:30.856   626   626 D kernel  : [43051.594431] snd_usb_playback_close
20:50:30.856   626   626 D kernel  : [43051.594443] snd_usb_pcm_close
20:50:30.856   626   626 D kernel  : [43051.594450] snd_usb_pcm_close usb_set_interface int:1 alt: 0

20:50:30.856   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters() keys:sup_sampling_rates
20:50:30.856   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters = sup_sampling_rates=48000|44100
20:50:30.856   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters() keys:sup_formats
20:50:30.857   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters = sup_formats=AUDIO_FORMAT_PCM_16_BIT
20:50:30.857   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters() keys:sup_channels
20:50:30.857   318  1255 V usb_audio_hw: usb:audio_hw::device_get_parameters = sup_channels=AUDIO_CHANNEL_OUT_STEREO

20:50:30.856   626   626 D kernel  : [43051.594458] usb_set_interface interface=1 alternates=0 state=7
20:50:30.857   626   626 D kernel  : [43051.595588] snd_usb_playback_open
20:50:30.857   626   626 D kernel  : [43051.595595] snd_usb_pcm_open
20:50:30.857   626   626 D kernel  : [43051.595600] setup_hw_info
20:50:30.857   626   626 D kernel  : [43051.595674] snd_usb_hw_params
20:50:30.857   626   626 D kernel  : [43051.595711] set_format
20:50:30.857   626   626 D kernel  : [43051.595718] set_format usb_set_interface int:1 alt:1
20:50:30.857   626   626 D kernel  : [43051.595726] usb_set_interface interface=1 alternates=1 state=7
20:50:30.857   626   626 D kernel  : [43051.598487] snd_usb_playback_close
20:50:30.857   626   626 D kernel  : [43051.598497] snd_usb_pcm_close
20:50:30.857   626   626 D kernel  : [43051.598504] snd_usb_pcm_close usb_set_interface int:1 alt: 0
20:50:30.857   626   626 D kernel  : [43051.598512] usb_set_interface interface=1 alternates=0 state=7

20:50:30.857   318  1255 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:exiting=1
20:50:30.867   318  1255 V usb_audio_hw: usb:audio_hw::out adev_close_output_stream()
20:50:30.867   318  1255 V usb_audio_hw: usb:audio_hw::out adev_open_output_stream() handle:0x493, device:0x4000, flags:0x0
20:50:30.867   318  1255 V usb_audio_hw: out_get_sample_rate() = 48000
20:50:30.867   318  1255 I AudioFlinger: HAL output buffer size 480 frames, normal sink buffer size 960 frames
20:50:30.867   318  1255 V usb_audio_hw: out_get_sample_rate() = 48000
20:50:30.868   318  2854 I AudioFlinger: AudioFlinger's thread 0xb7265898 ready to run
20:50:30.872   318  1255 V usb_audio_hw: out_get_sample_rate() = 48000
20:50:30.872   318  1255 I AudioFlinger: HAL output buffer size 480 frames, normal sink buffer size 480 frames
20:50:30.872   318  1255 V usb_audio_hw: out_get_sample_rate() = 48000
20:50:30.873   318  2855 I AudioFlinger: AudioFlinger's thread 0xb36a4008 ready to run
20:50:30.875   318  1197 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0
20:50:30.876   318  1197 E audio_a2dp_hw: adev_set_parameters: ERROR: set param called even when stream out is null
20:50:30.876   318  1197 V usb_audio_hw: audio_hw:usb adev_set_parameters(card=1;connect=16384;device=0)
20:50:30.883   318  1199 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0

20:50:31.830   318  1256 V usb_audio_hw: usb: in adev_open_input_stream() rate:0, chanMask:0xC, fmt:1
20:50:31.831   318  1256 V usb_audio_hw: in_get_sample_rate() = 44100
20:50:31.831   318  1256 V usb_audio_hw: in_get_buffer_size() = 1792
20:50:31.831   318  1256 V usb_audio_hw: in_get_buffer_size() = 1792
20:50:31.831   318  1256 V usb_audio_hw: in_get_sample_rate() = 44100
20:50:31.833   318  2859 I AudioFlinger: AudioFlinger's thread 0xb3663008 ready to run
20:50:31.842   318  2859 V usb_audio_hw: usb: audio_hw::in in_set_parameters() keys:card=1;device=0

20:50:31.847   626   626 D kernel  : [43052.585544] snd_usb_capture_open
20:50:31.847   626   626 D kernel  : [43052.585575] snd_usb_pcm_open
20:50:31.847   626   626 D kernel  : [43052.585584] setup_hw_info
20:50:31.847   626   626 D kernel  : [43052.585601] snd_usb_autoresume
20:50:31.847   626   626 D kernel  : [43052.585785] snd_usb_capture_close
20:50:31.847   626   626 D kernel  : [43052.585801] snd_usb_pcm_close
20:50:31.847   626   626 D kernel  : [43052.585933] snd_usb_capture_open
20:50:31.847   626   626 D kernel  : [43052.585948] snd_usb_pcm_open
20:50:31.847   626   626 D kernel  : [43052.585959] setup_hw_info
20:50:31.847   626   626 D kernel  : [43052.586047] snd_usb_capture_close
20:50:31.847   626   626 D kernel  : [43052.586059] snd_usb_pcm_close
20:50:31.847   626   626 D kernel  : [43052.586187] snd_usb_capture_open
20:50:31.847   626   626 D kernel  : [43052.586199] snd_usb_pcm_open
20:50:31.847   626   626 D kernel  : [43052.586208] setup_hw_info
20:50:31.847   626   626 D kernel  : [43052.586304] snd_usb_hw_params
20:50:31.847   626   626 D kernel  : [43052.586377] set_format
20:50:31.847   626   626 D kernel  : [43052.586390] set_format usb_set_interface int:2 alt:1
20:50:31.847   626   626 D kernel  : [43052.586405] usb_set_interface interface=2 alternates=1 state=7
20:50:31.857   626   626 D kernel  : [43052.590706] snd_usb_capture_close
20:50:31.857   626   626 D kernel  : [43052.590726] snd_usb_pcm_close
20:50:31.857   626   626 D kernel  : [43052.590738] snd_usb_pcm_close usb_set_interface int:2 alt: 0
20:50:31.857   626   626 D kernel  : [43052.590752] usb_set_interface interface=2 alternates=0 state=7
20:50:31.857   626   626 D kernel  : [43052.592010] snd_usb_capture_open
20:50:31.857   626   626 D kernel  : [43052.592024] snd_usb_pcm_open
20:50:31.857   626   626 D kernel  : [43052.592034] setup_hw_info
20:50:31.857   626   626 D kernel  : [43052.592044] snd_usb_autoresume
20:50:31.857   626   626 D kernel  : [43052.592187] snd_usb_hw_params
20:50:31.857   626   626 D kernel  : [43052.592272] set_format
20:50:31.857   626   626 D kernel  : [43052.592302] set_format usb_set_interface int:2 alt:1
20:50:31.857   626   626 D kernel  : [43052.592319] usb_set_interface interface=2 alternates=1 state=7
20:50:31.857   626   626 D kernel  : [43052.595640] snd_usb_capture_close
20:50:31.857   626   626 D kernel  : [43052.595658] snd_usb_pcm_close
20:50:31.857   626   626 D kernel  : [43052.595669] snd_usb_pcm_close usb_set_interface int:2 alt: 0
20:50:31.857   626   626 D kernel  : [43052.595684] usb_set_interface interface=2 alternates=0 state=7

20:50:31.858   318  1256 V usb_audio_hw: usb:audio_hw::device_get_parameters() keys:sup_sampling_rates
20:50:31.858   318  1256 V usb_audio_hw: usb:audio_hw::device_get_parameters = sup_sampling_rates=48000|44100
20:50:31.859   318  1197 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0
20:50:31.859   318  1197 E audio_a2dp_hw: adev_set_parameters: ERROR: set param called even when stream out is null
20:50:31.859   318  1197 V usb_audio_hw: audio_hw:usb adev_set_parameters(card=1;connect=-2147479552;device=0)

7.2. Music play
20:50:33.944   318  2854 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:card=1;device=0;routing=16384
20:50:33.956   318  2852 V usb_audio_hw: usb:audio_hw::out start_output_stream(card:1 device:0)

20:50:33.956   626   626 D kernel  : [43054.698997] snd_usb_playback_open
20:50:33.956   626   626 D kernel  : [43054.699009] snd_usb_pcm_open
20:50:33.956   626   626 D kernel  : [43054.699014] setup_hw_info
20:50:33.956   626   626 D kernel  : [43054.699097] snd_usb_hw_params
20:50:33.956   626   626 D kernel  : [43054.699143] set_format
20:50:33.956   626   626 D kernel  : [43054.699152] set_format usb_set_interface int:1 alt:1
20:50:33.956   626   626 D kernel  : [43054.699160] usb_set_interface interface=1 alternates=1 state=7

20:50:33.960   318  2852 D usb_audio_hw: usb out_write (1920 of 0)
20:50:33.960   318  2852 D usb_audio_hw: usb out_write (1920 of 0)

20:50:33.966   626   626 D kernel  : [43054.702458] snd_usb_pcm_prepare
20:50:37.046   626   626 D kernel  : [43057.779614] snd_usb_playback_close
20:50:37.046   626   626 D kernel  : [43057.779636] snd_usb_pcm_close
20:50:37.046   626   626 D kernel  : [43057.779644] snd_usb_pcm_close usb_set_interface int:1 alt: 0
20:50:37.046   626   626 D kernel  : [43057.779653] usb_set_interface interface=1 alternates=0 state=7
20:50:37.046   626   626 D kernel  : [43057.781456] snd_usb_autosuspend
20:50:44.146   626   626 D kernel  : [43064.879917] snd_usb_playback_open
20:50:44.146   626   626 D kernel  : [43064.879928] snd_usb_pcm_open
20:50:44.146   626   626 D kernel  : [43064.879933] setup_hw_info
20:50:44.146   626   626 D kernel  : [43064.879938] snd_usb_autoresume
20:50:44.146   626   626 D kernel  : [43064.880010] snd_usb_hw_params
20:50:44.146   626   626 D kernel  : [43064.880056] set_format
20:50:44.146   626   626 D kernel  : [43064.880064] set_format usb_set_interface int:1 alt:1
20:50:44.146   626   626 D kernel  : [43064.880072] usb_set_interface interface=1 alternates=1 state=7
20:50:44.146   626   626 D kernel  : [43064.883336] snd_usb_pcm_prepare

20:50:44.161   318  2852 D usb_audio_hw: usb out_write (1920 of 0)
20:50:44.171   318  2852 D usb_audio_hw: usb out_write (1920 of 0)
20:50:47.190   318  2852 D usb_audio_hw: usb out_write (1920 of 0)

20:50:47.217   626   626 D kernel  : [43067.949861] snd_usb_playback_close
20:50:47.217   626   626 D kernel  : [43067.949882] snd_usb_pcm_close
20:50:47.217   626   626 D kernel  : [43067.949894] snd_usb_pcm_close usb_set_interface int:1 alt: 0
20:50:47.217   626   626 D kernel  : [43067.949908] usb_set_interface interface=1 alternates=0 state=7 enter
20:50:47.217   626   626 D kernel  : [43067.951614] usb_set_interface interface=1 alternates=0 state=7 exit

20:50:49.178   318  2854 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:routing=0
20:50:49.188   318  2854 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:card=1;device=0;routing=16384
20:50:49.199   318  2852 V usb_audio_hw: usb:audio_hw::out start_output_stream(card:1 device:0)
20:50:49.204   318  2852 D usb_audio_hw: usb out_write (1920 of 0)
20:50:49.204   318  2852 D usb_audio_hw: usb out_write (1920 of 0)

20:50:49.206   626   626 D kernel  : [43069.942613] snd_usb_playback_open
20:50:49.207   626   626 D kernel  : [43069.942623] snd_usb_pcm_open
20:50:49.207   626   626 D kernel  : [43069.942629] setup_hw_info
20:50:49.207   626   626 D kernel  : [43069.942709] snd_usb_hw_params
20:50:49.207   626   626 D kernel  : [43069.942755] set_format
20:50:49.207   626   626 D kernel  : [43069.942764] set_format usb_set_interface int:1 alt:1
20:50:49.207   626   626 D kernel  : [43069.942772] usb_set_interface interface=1 alternates=1 state=7
20:50:49.207   626   626 D kernel  : [43069.946454] snd_usb_pcm_prepare
20:50:49.234   318  2852 D usb_audio_hw: usb out_write (1920 of 0)

7.3. Disconnect OTG cable
20:52:02.215   318  2852 D usb_audio_hw: usb out_write (1920 of -1)

20:52:02.216   626   626 D kernel  : [43142.957768] hub 1-0:1.0: hub_port_connect_change port 1, status 0100, change 0003, 12 Mb/s
20:52:02.216   626   626 D kernel  : [43142.957793] usb 1-1: USB disconnect, device number 2
20:52:02.216   626   626 D kernel  : [43142.957801] msm_pmic_id_irq irq=288
20:52:02.216   626   626 D kernel  : [43142.957881] usb_unbind_interface snd-usb-audio
20:52:02.216   626   626 D kernel  : [43142.957892] usb_audio_disconnect
20:52:02.216   626   626 D kernel  : [43142.957899] snd_usb_audio_disconnect
20:52:02.216   626   626 D kernel  : [43142.958659] snd_usb_stream_disconnect
20:52:02.224   318  2852 D usb_audio_hw: usb out_write (1920 of -1)
20:52:02.226   626   626 D kernel  : [43142.960809] msm_otg f9a55000.usb: ID status_w
20:52:02.226   626   626 D kernel  : [43142.960841] PMIC: ID set
20:52:02.226   626   626 D kernel  : [43142.960857] msm_otg_sm_work a_host work
20:52:02.226   626   626 D kernel  : [43142.960869] msm_otg f9a55000.usb: host off
20:52:02.226   626   626 D kernel  : [43142.960880] msm_hsusb_host msm_hsusb_host: remove, state 1
20:52:02.226   626   626 D kernel  : [43142.960908] usb usb1: USB disconnect, device number 1
20:52:02.226   626   626 D kernel  : [43142.967718] usb_unbind_interface snd-usb-audio
20:52:02.226   626   626 D kernel  : [43142.967744] usb_audio_disconnect
20:52:02.226   626   626 D kernel  : [43142.967754] snd_usb_audio_disconnect
20:52:02.226   626   626 D kernel  : [43142.967770] usb_set_interface interface=1 alternates=0 state=0 enter
20:52:02.226   626   626 D kernel  : [43142.967932] usb_unbind_interface snd-usb-audio
20:52:02.226   626   626 D kernel  : [43142.967945] usb_audio_disconnect
20:52:02.226   626   626 D kernel  : [43142.967953] snd_usb_audio_disconnect
20:52:02.226   626   626 D kernel  : [43142.968136] usb_unbind_interface usbhid

20:52:02.237   928  1235 I EventHub: Removing device xxx USB Headphone Set   due to epoll hang-up event.
20:52:02.237   928  1235 I EventHub: Removed device: path=/dev/input/event9 name=xxx USB Headphone Set   id=9 fd=268 classes=0x80000001
20:52:02.267   928  1235 I InputReader: Device removed: id=9, name='xxx USB Headphone Set  ', sources=0x00000101
20:52:02.268   928  1235 I EventHub: Removing device '/dev/input/event9' due to inotify event

20:52:02.316   626   626 D kernel  : [43143.051828] usb_unbind_device
20:52:02.317   626   626 D kernel  : [43143.051850] generic_disconnect
20:52:02.317   626   626 E kernel  : [43143.052159] hub 1-0:1.0: hub_port_status failed (err = -19)
20:52:02.317   626   626 E kernel  : [43143.052201] hub 1-0:1.0: connect-debounce failed, port 1 disabled
20:52:02.317   626   626 D kernel  : [43143.052424] usb_unbind_interface hub
20:52:02.317   626   626 D kernel  : [43143.052738] usb_unbind_device
20:52:02.317   626   626 D kernel  : [43143.052746] generic_disconnect
20:52:02.317   626   626 D kernel  : [43143.053212] msm_hsusb_host msm_hsusb_host: USB bus 1 deregistered

20:52:02.616   318  1197 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0
20:52:02.616   318  1197 E audio_a2dp_hw: adev_set_parameters: ERROR: set param called even when stream out is null
20:52:02.616   318  1197 V usb_audio_hw: audio_hw:usb adev_set_parameters(card=1;device=0;disconnect=16384)
20:52:02.617   318  1255 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:exiting=1
20:52:02.631   318  2854 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:routing=0
20:52:02.632   318  2852 D usb_audio_hw: usb out_write (1920 of -1)
20:52:02.644   318  2854 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:closing=true
20:52:02.645   318  2852 D usb_audio_hw: usb out_write (1920 of -1)
20:52:02.646   318  1255 V usb_audio_hw: usb:audio_hw::out out_set_parameters() keys:exiting=1
20:52:02.656   318  1255 V usb_audio_hw: usb:audio_hw::out adev_close_output_stream()

20:52:02.656   626   626 D kernel  : [43143.399228] snd_usb_playback_close
20:52:02.656   626   626 D kernel  : [43143.399240] snd_usb_pcm_close
20:52:02.656   626   626 D kernel  : [43143.399320] snd_usb_audio_free
20:52:02.826   626   626 D kernel  : [43143.559783] msm_otg_sm_work a_wait_vfall work
20:52:02.826   626   626 D kernel  : [43143.559800] msm_otg_sm_work a_idle work
20:52:02.826   626   626 D kernel  : [43143.559817] msm_otg_sm_work b_idle work
20:52:02.826   626   626 D kernel  : [43143.559843] msm_otg_reset
20:52:02.826   626   626 D kernel  : [43143.562561] msm_otg f9a55000.usb: phy_reset: success
20:52:02.936   626   626 D kernel  : [43143.674736] msm_otg f9a55000.usb: USB in low power mode

20:52:03.316   318  1197 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0
20:52:03.316   318  1197 E audio_a2dp_hw: adev_set_parameters: ERROR: set param called even when stream out is null
20:52:03.316   318  1197 V usb_audio_hw: audio_hw:usb adev_set_parameters(card=1;device=0;disconnect=-2147479552)
20:52:06.872   928  1230 I MediaFocusControl:  AudioFocus  abandonAudioFocus() from android.media.AudioManager

 


<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- Copyright (c) 2016-2017, 2019, 2021 The Linux Foundation. All rights reserved Not a Contribution. --> <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” --> <!-- Global configuration Decalaration --> <globalConfiguration speaker_drc_enabled="true"/> <!-- Modules section: There is one section per audio HW module present on the platform. Each module section will contains two mandatory tags for audio HAL “halVersion” and “name”. The module names are the same as in current .conf file: “primary”, “A2DP”, “remote_submix”, “USB” Each module will contain the following sections: “devicePorts”: a list of device descriptors for all input and output devices accessible via this module. This contains both permanently attached devices and removable devices. “mixPorts”: listing all output and input streams exposed by the audio HAL “routes”: list of possible connections between input and output devices or between stream and devices. "route": is defined by an attribute: -"type": <mux|mix> means all sources are mutual exclusive (mux) or can be mixed (mix) -"sink": the sink involved in this route -"sources": all the sources than can be connected to the sink via vis route “attachedDevices”: permanently attached devices. The attachedDevices section is a list of devices names. The names correspond to device names defined in <devicePorts> section. “defaultOutputDevice”: device to be used by default when no policy rule applies --> <modules> <module name="primary" halVersion="2.0"> <attachedDevices> <item>Speaker</item> <item>Speaker Safe</item> <item>Earpiece</item> <item>Telephony Tx</item> <item>Built-In Mic</item> <item>Built-In Back Mic</item> <item>Telephony Rx</item> </attachedDevices> <defaultOutputDevice>Speaker</defaultOutputDevice> <mixPorts> <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="hifi_playback" role="source" /> <mixPort name="deep_buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER"> <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="compressed_offload" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD"> <profile name="" format="AUDIO_FORMAT_MP3" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_LC" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_HE_V1" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_HE_V2" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> </mixPort> <mixPort name="voice_tx" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="voip_rx" role="source" flags="AUDIO_OUTPUT_FLAG_VOIP_RX"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="incall_music_uplink" role="source" flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="primary input" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="hifi_input" role="sink" /> <mixPort name="voice_rx" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </mixPort> <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="voip_tx" role="sink" flags="AUDIO_INPUT_FLAG_VOIP_TX"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink"> </devicePort> <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink"> </devicePort> <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink"> </devicePort> <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink"> </devicePort> <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink"> </devicePort> <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink"> </devicePort> <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink"> </devicePort> <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink"> </devicePort> <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink"> </devicePort> <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source"> </devicePort> <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source"> </devicePort> <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source"> </devicePort> <devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source"> </devicePort> <!-- TODO: Enable multi-channel recording --> <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source"> </devicePort> <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source"> </devicePort> </devicePorts> <routes> <route type="mix" sink="Earpiece" sources="primary output,raw,deep_buffer,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Speaker" sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Speaker Safe" sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="BT SCO" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="BT SCO Headset" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="BT SCO Car Kit" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="USB Device Out" sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="USB Headset Out" sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Telephony Tx" sources="voice_tx,incall_music_uplink"/> <route type="mix" sink="primary input" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="fast input" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="voice_rx" sources="Telephony Rx"/> <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" /> <route type="mix" sink="mmap_no_irq_in" sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/> <route type="mix" sink="voip_tx" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="BT A2DP Out" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> <route type="mix" sink="BT A2DP Headphones" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> <route type="mix" sink="BT A2DP Speaker" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> </routes> </module> <!-- A2DP Input Audio HAL --> <module name="a2dp" halVersion="2.0"> <mixPorts> <mixPort name="a2dp input" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </devicePort> </devicePorts> <routes> <route type="mix" sink="a2dp input" sources="BT A2DP In"/> </routes> </module> <!-- Usb Audio HAL --> <module name="usb" halVersion="2.0"> <mixPorts> <mixPort name="usb_accessory output" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> </devicePorts> <routes> <route type="mix" sink="USB Host Out" sources="usb_accessory output"/> </routes> </module> <!-- Remote Submix Audio HAL --> <xi:include href="r_submix_audio_policy_configuration.xml"/> </modules> <!-- End of Modules section --> <!-- Volume section --> <xi:include href="audio_policy_volumes.xml"/> <xi:include href="default_volume_tables.xml"/> <!-- End of Volume section --> </audioPolicyConfiguration> 以上是完整文件,路径:/vendor/etc/audio_policy_configuration.xml 一加13 Coloros15,安卓版本15,已ROOT,修改该文件,绕过安卓音频SRC实现系统全局自适应采样率(Dynamic sampling rates)、自适应位深(Bit_perfect)(保持音频文件原始位深,16bit文件不升级位深)、禁用升频和重采样,关闭所有音频音效(effect)以及影响音频质量无损输出的一切音频处理,最大程度上抑制并降低音频抖动(jitter)(最大化优化时钟管理和同步)、最大程度抑制并降低音频失真和噪声以及电源纹波和噪声,以输出和输入最干净无污染最高质量的HIFI无损原始音频信号直出,并且输出修改过的完整文件(不要片段)
最新发布
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值