你好!這里是風(fēng)箏的博客,
歡迎和我一起交流。
兩年前,我初來手機廠,還不會怎么分析log,當(dāng)時剛從珠海芯片廠出來,遇到問題都是接上串口線,然后自己手動復(fù)現(xiàn)問題,然后對著串口查看下打出來的log分析異常。
但是來到手機廠之后一切的都變了,之前的方式已經(jīng)不適用了。
原因有兩個:
- 手機都是整機,不會專門接出串口線。
- 問題可能是概率的,不一定能復(fù)現(xiàn),而且時間寶貴,自己一般不會去復(fù)現(xiàn)。
所以,過去的經(jīng)驗和分析模式已經(jīng)用不上啦,時代變了。。。。。。
現(xiàn)在都是測試開啟反饋工具箱,復(fù)現(xiàn)問題然后抓取log,開發(fā)就對著大量log(本質(zhì)還是logcat和dmesg等)查找自己需要的信息。
所以現(xiàn)在出問題一般我都不會花自己時間去復(fù)現(xiàn)一遍,除非問題不好處理需要自己驗證一些東西。
一開始我還天真的問,log信息里面那么多還雜,如何去分析我們自己audio模塊。到現(xiàn)在,我也只能說,無它,唯手熟爾(熟練得讓人心疼)…
一般出現(xiàn)問題的時候測試會通過截圖的方式標記時間戳,開發(fā)通過搜索"takescreenshot"可以找到問題時間戳。
如果沒有截圖,也可以通過測試描述的場景自行找到問題時間點。
一開始我都會過濾出audio的log,避免其他模塊的干擾,通過正則表達式可以篩選多個條件:
^(?=.*audio).*$
不過到后期我都懶得篩了,其他模塊有時也有報錯信息可以一并瞄一下…
針對我目前使用的MTK平臺,不同的場景會打出不同的log,通過這些log可以快速找到問題點。
插入模擬耳機:
I UsbPortManager: USB port changed: port=UsbPort{id=port0, supportedModes=dualsupportedContaminantProtectionModes=1supportsEnableContaminantPresenceProtection=falsesupportsEnableContaminantPresenceDetection=false, status=UsbPortStatus{connected=true, currentMode=audio_acc, currentPowerRole=sink, currentDataRole=device, supportedRoleCombinations=[source:host, sink:device], contaminantDetectionStatus=2, contaminantProtectionStatus=0}, canChangeMode=true, canChangePowerRole=false, canChangeDataRole=false, connectedAtMillis=7325896, lastConnectDurationMillis=0
I UsbDeviceManager: updateHostState UsbPort{id=port0, supportedModes=dualsupportedContaminantProtectionModes=1supportsEnableContaminantPresenceProtection=falsesupportsEnableContaminantPresenceDetection=false status=UsbPortStatus{connected=true, currentMode=audio_acc, currentPowerRole=sink, currentDataRole=device, supportedRoleCombinations=[source:host, sink:device], contaminantDetectionStatus=2, contaminantProtectionStatus=0}
D AudioManager: setWiredDeviceConnectionState type=4 state=1 address= name=
D AudioManager: setWiredDeviceConnectionState type=-2147483632 state=1 address= name=
V AudioPolicyIntefaceImpl: setDeviceConnectionState()
D APM_AudioPolicyManager: [MTK_APM_Route]setDeviceConnectionStateInt() +++ device: 0x4, state 1, name format 0x0
D AudioSystem: +setParameters(): connect=4
D AudioFlingerExtImpl: AudioFlingerExtImpl oplusSetParameters: keyvalue connect=4
D AudioALSAHardware: +setParameters(): connect=4
拔出模擬耳機:
D AudioManager: setWiredDeviceConnectionState type=4 state=0 address= name=
I AS.AudioDeviceInventory: dropping ACTION_AUDIO_BECOMING_NOISY
D AudioManager: setWiredDeviceConnectionState type=-2147483632 state=0 address= name=
V AudioPolicyIntefaceImpl: setDeviceConnectionState()
D APM_AudioPolicyManager: [MTK_APM_Route]setDeviceConnectionStateInt() +++ device: 0x4, state 0, name format 0x0
D AudioSystem: +setParameters(): disconnect=4
D AudioFlingerExtImpl: AudioFlingerExtImpl oplusSetParameters: keyvalue disconnect=4
D AudioALSAHardware: +setParameters(): disconnect=4
插入數(shù)字耳機:
D UsbDeviceManager: broadcasting Intent { act=android.hardware.usb.action.USB_STATE flg=0x31100000 (has extras) } extras: Bundle[{host_connected=true, audio_source=true, connected=false, unlocked=false, adb=true, configured=false}]
D UsbHostManager: USB device attached: vidpid 001f:0b21 mfg/product/ver/serial Anlya.cn??????????????????????????????/AB13X USB Audio??????????????????????????????????????????/1.00/08613544166500 hasAudio/HID/Storage: true/true/false
D UsbHostManager: Added device UsbDevice[mName=/dev/bus/usb/001/002,mVendorId=31,mProductId=2849,mClass=0,mSubclass=0,mProtocol=0,mManufacturerName=Anlya.cn??????????????????????????????,mProductName=AB13X USB Audio??????????????????????????????????????????,mVersion=1.00,mSerialNumberReader=com.android.server.usb.UsbSerialReader@a9fdc62, mHasAudioPlayback=true, mHasAudioCapture=true, mHasMidi=false, mHasVideoCapture=false, mHasVideoPlayback=false, mConfigurations=[
V AudioPolicyIntefaceImpl: setDeviceConnectionState()
D APM_AudioPolicyManager: [MTK_APM_Route]setDeviceConnectionStateInt() +++ device: 0x4000000, state 1, name format 0x0
D AudioSystem: +setParameters(): card=2;connect=67108864;device=0
D AudioFlingerExtImpl: AudioFlingerExtImpl oplusSetParameters: keyvalue card=2;connect=67108864;device=0
D AudioALSAHardware: +setParameters(): card=2;connect=67108864;device=0
D AudioUSBCenter: setUSBOutConnectionState(), devices 0x4000000, connect 1, card 2, device 0
拔出數(shù)字耳機:
I EventHub: Removing device Anlya.cn AB13X USB Audio due to epoll hang-up event.
I EventHub: Removed device: path=/dev/input/event5 name=Anlya.cn AB13X USB Audio id=6 fd=1054 classes=KEYBOARD | EXTERNAL
I InputReader: Device removed: id=5, eventHubId=6, name='Anlya.cn AB13X USB Audio', descriptor='904ec98e6cdb23900457df203f474550f3a37957', sources=0x00000101
D UsbHostManager: Removed device at /dev/bus/usb/001/002: AB13X USB Audio??????????????????????????????????????????
I UsbAlsaManager: USB Audio Device Removed: UsbAlsaDevice: [card: 2, device: 0, name: USB-Audio - AB13X USB Audio, hasOutput: true, hasInput: true]
V AudioPolicyIntefaceImpl: setDeviceConnectionState()
D APM_AudioPolicyManager: [MTK_APM_Route]setDeviceConnectionStateInt() +++ device: 0x4000000, state 0, name format 0x0
D AudioSystem: +setParameters(): card=2;device=0;disconnect=67108864
D AudioFlingerExtImpl: AudioFlingerExtImpl oplusSetParameters: keyvalue card=2;device=0;disconnect=67108864
D AudioALSAHardware: +setParameters(): card=2;device=0;disconnect=67108864
撥打電話
I CallsManager: UPDATECALLSTATE: setCallState CONNECTING -> DIALING, call: [Call id=TC@154, state=CONNECTING, tpac=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, cmgr=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, handle=***, vidst=A, childs(0), has_parent(false), cap=[ sup_hld mut !v2a], prop=[ m_volte]], voip=false
I CallsManager: UPDATECALLSTATE: setCallState DIALING -> DIALING, call: [Call id=TC@154, state=DIALING, tpac=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, cmgr=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, handle=***, vidst=A, childs(0), has_parent(false), cap=[ sup_hld mut !v2a], prop=[ m_volte]], voip=false
I CallsManager: UPDATECALLSTATE: setCallState DIALING -> ACTIVE, call: [Call id=TC@154, state=DIALING, tpac=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, cmgr=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, handle=***, vidst=A, childs(0), has_parent(false), cap=[ sup_hld mut VTlrx VTltx VTlbi VTrrx VTrtx VTrbi paus_VT], prop=[ m_volte]], voip=false
I CallsManager: UPDATECALLSTATE: setCallState ACTIVE -> DISCONNECTED, call: [Call id=TC@154, state=DISCONNECTING, tpac=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, cmgr=ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 11, UserHandle{0}, handle=***, vidst=A, childs(0), has_parent(false), cap=[ hld sup_hld mut VTlrx VTltx VTlbi VTrrx VTrtx VTrbi paus_VT add_participant], prop=[ m_volte]], voip=false
調(diào)節(jié)音量:
AudioSystem: +setParameters(): volumeDevice=1;volumeIndex=0;volumeStreamType=0
APM::AudioOutputDescriptor: setVolume output 93 for volumeSource 6, volume -15.000000, delay 0 stream=AUDIO_STREAM_MUSIC
AudioALSAStreamManager: setVolumeIndex() stream= 3, device= 2, index=
AudioMTKGainController: setVoiceVolume(), index =
custom_info vol_level=
查看當(dāng)前音量:adb shell dumpsys audio | grep STREAM_MUSIC: -A 7
切換設(shè)備:
APM_AudioPolicyManager: setOutputDevice()
APM_AudioPolicyManager: setDeviceConnectionStateInt()
設(shè)置輸出流:
APM_AudioPolicyManager: startOutput() output 37, stream 0, session 2697
APM_AudioPolicyManager: setOutputDevice() output 37 device {type:0x4,@:}
output 13(primary) 21(deepbuffer) 37(voip)29 (fast)
耳機按鍵:
Kernel log:
MediaSessionService: Sending KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_HEADSETHOOK,
MediaSessionService: Sending KeyEvent { action=ACTION_UP, keyCode=KEYCODE_HEADSETHOOK,
accdet_get_auxadc() vol_val:4 offset:-2 real vol:6 mv!
accdet_work_callback cancel_delayed_work_sync fb_delaywork
Accdet EINTx support,MODE_2 regs:
accdet (0x268a)=0x1 (0x268c)=0x67 (0x26a9)=0x0 (0x26ab)=0x7(0x26ad)=0x0 (0x26b1)=0x0
accdet (0x26b3)=0x0 (0x26b6)=0x0(0x26b8)=0x1 (0x26bc)=0x0 (0x26c0)=0x23 (0x26b6)=0x0
accdet cur cable type:[Headset_mic], status switch:[Headset_plug_in]->[Hook_switch]
Hal log:
//上層input接收到按鍵按下,第一次按下
InputLog: PhoneWindowManagerExtImpl : interceptKeyBeforeDispatching key: win=Window{77f7b0b u0 com.spotify.music/com.spotify.music.MainActivity} event = KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_HEADSETHOOK,
//上層input接收到按鍵彈起,第一次點擊完成
InputLog: PhoneWindowManagerExtImpl : interceptKeyBeforeDispatching key: win=Window{77f7b0b u0 com.spotify.music/com.spotify.music.MainActivity} event = KeyEvent { action=ACTION_UP, keyCode=KEYCODE_HEADSETHOOK
基本通過這些關(guān)鍵詞,就可以初步定位解決一些audio的問題了,之后的復(fù)雜問題,只能說,道阻且長…文章來源:http://www.zghlxwxcb.cn/news/detail-545155.html
附錄,Android Audio的一些頭文件定義:文章來源地址http://www.zghlxwxcb.cn/news/detail-545155.html
static CONST_ARRAY audio_devices_t AUDIO_DEVICE_OUT_ALL_ARRAY[] = {//system/media/audio/include/system/audio-base-utils.h
AUDIO_DEVICE_OUT_EARPIECE, // 0x00000001u
AUDIO_DEVICE_OUT_SPEAKER, // 0x00000002u
AUDIO_DEVICE_OUT_WIRED_HEADSET, // 0x00000004u
AUDIO_DEVICE_OUT_WIRED_HEADPHONE, // 0x00000008u
AUDIO_DEVICE_OUT_BLUETOOTH_SCO, // 0x00000010u
AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, // 0x00000020u
AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, // 0x00000040u
AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, // 0x00000080u
AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, // 0x00000100u
AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, // 0x00000200u
AUDIO_DEVICE_OUT_HDMI, // 0x00000400u, OUT_AUX_DIGITAL
AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, // 0x00000800u
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, // 0x00001000u
AUDIO_DEVICE_OUT_USB_ACCESSORY, // 0x00002000u
AUDIO_DEVICE_OUT_USB_DEVICE, // 0x00004000u
AUDIO_DEVICE_OUT_REMOTE_SUBMIX, // 0x00008000u
AUDIO_DEVICE_OUT_TELEPHONY_TX, // 0x00010000u
AUDIO_DEVICE_OUT_LINE, // 0x00020000u
AUDIO_DEVICE_OUT_HDMI_ARC, // 0x00040000u
AUDIO_DEVICE_OUT_HDMI_EARC, // 0x00040001u,
AUDIO_DEVICE_OUT_SPDIF, // 0x00080000u
AUDIO_DEVICE_OUT_FM, // 0x00100000u
AUDIO_DEVICE_OUT_AUX_LINE, // 0x00200000u
AUDIO_DEVICE_OUT_SPEAKER_SAFE, // 0x00400000u
AUDIO_DEVICE_OUT_IP, // 0x00800000u
AUDIO_DEVICE_OUT_BUS, // 0x01000000u
AUDIO_DEVICE_OUT_PROXY, // 0x02000000u
AUDIO_DEVICE_OUT_USB_HEADSET, // 0x04000000u
AUDIO_DEVICE_OUT_HEARING_AID, // 0x08000000u
AUDIO_DEVICE_OUT_ECHO_CANCELLER, // 0x10000000u
AUDIO_DEVICE_OUT_BLE_HEADSET, // 0x20000000u
AUDIO_DEVICE_OUT_BLE_SPEAKER, // 0x20000001u
AUDIO_DEVICE_OUT_DEFAULT, // 0x40000000u, BIT_DEFAULT
};
static CONST_ARRAY audio_devices_t AUDIO_DEVICE_IN_ALL_ARRAY[] = {
AUDIO_DEVICE_IN_COMMUNICATION, // 0x80000001u
AUDIO_DEVICE_IN_AMBIENT, // 0x80000002u
AUDIO_DEVICE_IN_BUILTIN_MIC, // 0x80000004u
AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, // 0x80000008u
AUDIO_DEVICE_IN_WIRED_HEADSET, // 0x80000010u
AUDIO_DEVICE_IN_HDMI, // 0x80000020u, IN_AUX_DIGITAL
AUDIO_DEVICE_IN_TELEPHONY_RX, // 0x80000040u, IN_VOICE_CALL
AUDIO_DEVICE_IN_BACK_MIC, // 0x80000080u
AUDIO_DEVICE_IN_REMOTE_SUBMIX, // 0x80000100u
AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET, // 0x80000200u
AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET, // 0x80000400u
AUDIO_DEVICE_IN_USB_ACCESSORY, // 0x80000800u
AUDIO_DEVICE_IN_USB_DEVICE, // 0x80001000u
AUDIO_DEVICE_IN_FM_TUNER, // 0x80002000u
AUDIO_DEVICE_IN_TV_TUNER, // 0x80004000u
AUDIO_DEVICE_IN_LINE, // 0x80008000u
AUDIO_DEVICE_IN_SPDIF, // 0x80010000u
AUDIO_DEVICE_IN_BLUETOOTH_A2DP, // 0x80020000u
AUDIO_DEVICE_IN_LOOPBACK, // 0x80040000u
AUDIO_DEVICE_IN_IP, // 0x80080000u
AUDIO_DEVICE_IN_BUS, // 0x80100000u
AUDIO_DEVICE_IN_PROXY, // 0x81000000u
AUDIO_DEVICE_IN_USB_HEADSET, // 0x82000000u
AUDIO_DEVICE_IN_BLUETOOTH_BLE, // 0x84000000u
AUDIO_DEVICE_IN_HDMI_ARC, // 0x88000000u
AUDIO_DEVICE_IN_HDMI_EARC, // 0x88000001u
AUDIO_DEVICE_IN_ECHO_REFERENCE, // 0x90000000u
AUDIO_DEVICE_IN_BLE_HEADSET, // 0xA0000000u
AUDIO_DEVICE_IN_DEFAULT, // 0xC0000000u
};
typedef enum { /* audio_output_flags_t */
AUDIO_OUTPUT_FLAG_NONE = 0x0,
AUDIO_OUTPUT_FLAG_DIRECT = 0x1,
AUDIO_OUTPUT_FLAG_PRIMARY = 0x2,
AUDIO_OUTPUT_FLAG_FAST = 0x4,
AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 0x8,
AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 0x10,
AUDIO_OUTPUT_FLAG_NON_BLOCKING = 0x20,
AUDIO_OUTPUT_FLAG_HW_AV_SYNC = 0x40,
AUDIO_OUTPUT_FLAG_TTS = 0x80,
AUDIO_OUTPUT_FLAG_RAW = 0x100,
AUDIO_OUTPUT_FLAG_SYNC = 0x200,
AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO = 0x400,
AUDIO_OUTPUT_FLAG_DIRECT_PCM = 0x2000,
AUDIO_OUTPUT_FLAG_MMAP_NOIRQ = 0x4000,
AUDIO_OUTPUT_FLAG_VOIP_RX = 0x8000,
AUDIO_OUTPUT_FLAG_INCALL_MUSIC = 0x10000,
AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD = 0x20000,
} audio_output_flags_t;
/* Audio stream types */
typedef enum {
/* These values must kept in sync with
* frameworks/base/media/java/android/media/AudioSystem.java
*/
AUDIO_STREAM_DEFAULT = -1, // (-1)
AUDIO_STREAM_MIN = 0,
AUDIO_STREAM_VOICE_CALL = 0,
AUDIO_STREAM_SYSTEM = 1,
AUDIO_STREAM_RING = 2,//鈴聲
AUDIO_STREAM_MUSIC = 3,
AUDIO_STREAM_ALARM = 4,
AUDIO_STREAM_NOTIFICATION = 5,
AUDIO_STREAM_BLUETOOTH_SCO = 6,
AUDIO_STREAM_ENFORCED_AUDIBLE = 7,
AUDIO_STREAM_DTMF = 8,//撥號
AUDIO_STREAM_TTS = 9,
AUDIO_STREAM_ACCESSIBILITY = 10,
AUDIO_STREAM_ASSISTANT = 11,
AUDIO_STREAM_REROUTING = 12,
AUDIO_STREAM_PATCH = 13,
AUDIO_STREAM_CALL_ASSISTANT = 14,
} audio_stream_type_t;
enum audio_mode {
MODE_INVALID = -2,
MODE_CURRENT = -1,
MODE_NORMAL = 0,
MODE_RINGTONE,
MODE_IN_CALL,
MODE_IN_COMMUNICATION,
NUM_MODES // not a valid entry, denotes end-of-list
};
typedef enum {
AUDIO_SOURCE_DEFAULT = 0,
AUDIO_SOURCE_MIC = 1,
AUDIO_SOURCE_VOICE_UPLINK = 2,
AUDIO_SOURCE_VOICE_DOWNLINK = 3,
AUDIO_SOURCE_VOICE_CALL = 4,
AUDIO_SOURCE_CAMCORDER = 5,
AUDIO_SOURCE_VOICE_RECOGNITION = 6,//語音識別
AUDIO_SOURCE_VOICE_COMMUNICATION = 7,//語音通信
AUDIO_SOURCE_REMOTE_SUBMIX = 8,
AUDIO_SOURCE_UNPROCESSED = 9,
AUDIO_SOURCE_VOICE_PERFORMANCE = 10,
AUDIO_SOURCE_ECHO_REFERENCE = 1997,
AUDIO_SOURCE_FM_TUNER = 1998,
#ifndef AUDIO_NO_SYSTEM_DECLARATIONS
/**
* A low-priority, preemptible audio source for for background software
* hotword detection. Same tuning as VOICE_RECOGNITION.
* Used only internally by the framework.
*/
AUDIO_SOURCE_HOTWORD = 1999,
#endif // AUDIO_NO_SYSTEM_DECLARATIONS
} audio_source_t;
typedef enum {
#ifndef AUDIO_NO_SYSTEM_DECLARATIONS
AUDIO_MODE_INVALID = -2, // (-2)
AUDIO_MODE_CURRENT = -1, // (-1)
#endif // AUDIO_NO_SYSTEM_DECLARATIONS
AUDIO_MODE_NORMAL = 0,
AUDIO_MODE_RINGTONE = 1,
AUDIO_MODE_IN_CALL = 2,//通話
AUDIO_MODE_IN_COMMUNICATION = 3,//語音?
AUDIO_MODE_CALL_SCREEN = 4,
} audio_mode_t;
typedef enum {
AUDIO_OUTPUT_FLAG_NONE = 0x0,
AUDIO_OUTPUT_FLAG_DIRECT = 0x1,
AUDIO_OUTPUT_FLAG_PRIMARY = 0x2,
AUDIO_OUTPUT_FLAG_FAST = 0x4,
AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 0x8,
AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 0x10,
AUDIO_OUTPUT_FLAG_NON_BLOCKING = 0x20,
AUDIO_OUTPUT_FLAG_HW_AV_SYNC = 0x40,
AUDIO_OUTPUT_FLAG_TTS = 0x80,
AUDIO_OUTPUT_FLAG_RAW = 0x100,
AUDIO_OUTPUT_FLAG_SYNC = 0x200,
AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO = 0x400,
AUDIO_OUTPUT_FLAG_DIRECT_PCM = 0x2000,
AUDIO_OUTPUT_FLAG_MMAP_NOIRQ = 0x4000,
AUDIO_OUTPUT_FLAG_VOIP_RX = 0x8000,
AUDIO_OUTPUT_FLAG_INCALL_MUSIC = 0x10000,
} audio_output_flags_t;
typedef enum {
AUDIO_INPUT_FLAG_NONE = 0x0,
AUDIO_INPUT_FLAG_FAST = 0x1,
AUDIO_INPUT_FLAG_HW_HOTWORD = 0x2,
AUDIO_INPUT_FLAG_RAW = 0x4,
AUDIO_INPUT_FLAG_SYNC = 0x8,
AUDIO_INPUT_FLAG_MMAP_NOIRQ = 0x10,
AUDIO_INPUT_FLAG_VOIP_TX = 0x20,
AUDIO_INPUT_FLAG_HW_AV_SYNC = 0x40,
AUDIO_INPUT_FLAG_DIRECT = 0x80,
} audio_input_flags_t;
//Aurisys
enum {
/* scene for library */
TASK_SCENE_PHONE_CALL = 0,
TASK_SCENE_VOICE_ULTRASOUND = 1,
TASK_SCENE_PLAYBACK_MP3 = 2,
TASK_SCENE_RECORD = 3,
TASK_SCENE_VOIP = 4,
TASK_SCENE_SPEAKER_PROTECTION = 5,
TASK_SCENE_VOW = 6,
TASK_SCENE_PRIMARY = 7,
TASK_SCENE_DEEPBUFFER = 8,
TASK_SCENE_AUDPLAYBACK = 9,
TASK_SCENE_CAPTURE_UL1 = 10,
TASK_SCENE_A2DP = 11,
TASK_SCENE_DATAPROVIDER = 12,
TASK_SCENE_MUSIC = 13,
TASK_SCENE_CALL_FINAL = 14,
TASK_SCENE_FAST = 15,
TASK_SCENE_KTV = 16,
TASK_SCENE_CAPTURE_RAW = 17,
TASK_SCENE_FM_ADSP = 18,
TASK_SCENE_PHONE_CALL_SUB = 19,
TASK_SCENE_BLEDL = 20,
TASK_SCENE_BLEUL = 21,
TASK_SCENE_BLEDEC = 22,
TASK_SCENE_BLEENC = 23,
TASK_SCENE_BLECALLDL = 24,
TASK_SCENE_BLECALLUL = 25,
/* control for driver */
TASK_SCENE_AUDIO_CONTROLLER_HIFI3_A,
TASK_SCENE_AUDIO_CONTROLLER_HIFI3_B,
TASK_SCENE_AUD_DAEMON_A,
TASK_SCENE_AUD_DAEMON_B,
TASK_SCENE_AUDIO_CONTROLLER_CM4,
TASK_SCENE_SIZE,
TASK_SCENE_INVALID
};
struct ipi_msg_t *p_ipi_msg->task_scene >= TASK_SCENE_SIZE
struct arsi_task_config_t *p_arsi_task_config->task_scene = TASK_SCENE_CALL_FINAL;
enum {
/* playback */
AURISYS_SCENARIO_PLAYBACK_NORMAL,
AURISYS_SCENARIO_PLAYBACK_LOW_LATENCY,
/* record */
AURISYS_SCENARIO_RECORD_LOW_LATENCY,
AURISYS_SCENARIO_RECORD_WITHOUT_AEC,
AURISYS_SCENARIO_RECORD_WITH_AEC,
AURISYS_SCENARIO_RECORD_IEM,
/* voip */
AURISYS_SCENARIO_VOIP,
AURISYS_SCENARIO_VOIP_WITHOUT_AEC,
/* call */
AURISYS_SCENARIO_PHONE_CALL,
/* smart pa */
AURISYS_SCENARIO_PLAYBACK_SMARTPA,
/* hdr record */
AURISYS_SCENARIO_HDR_RECORD,
/* control */
AURISYS_SCENARIO_SIZE,
AURISYS_SCENARIO_ALL,
AURISYS_SCENARIO_INVALID = 0xFFFFFFFF
};
mManagerConfig->aurisys_scenario = GetAurisysScenario();//AURISYS_SCENARIO_PLAYBACK_SMARTPA
到了這里,關(guān)于Android音頻子系統(tǒng)(十五)------Audio調(diào)試經(jīng)驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!