From e303cad342f128f5072c20702705903bc2a783e5 Mon Sep 17 00:00:00 2001 From: Jasmine Cha Date: Wed, 27 Oct 2021 14:40:00 +0800 Subject: [PATCH] audio: waves: add test file for unit test Bug: 204272480 Test: atest audio_waves_halcontroller_tests Signed-off-by: Jasmine Cha Change-Id: I7aa5205c7443692c95b96ac6537d404e0e15d165 --- audio/oriole/audio-tables.mk | 6 ++ .../oriole/tuning/waves/tests/test_config.ini | 58 ++++++++++++++++++ .../oriole/tuning/waves/tests/test_preset.mps | Bin 0 -> 186955 bytes audio/raven/audio-tables.mk | 6 ++ .../raven/tuning/waves/tests/test_config.ini | 58 ++++++++++++++++++ .../raven/tuning/waves/tests/test_preset.mps | Bin 0 -> 186955 bytes audio/slider/audio-tables.mk | 6 ++ .../slider/tuning/waves/tests/test_config.ini | 58 ++++++++++++++++++ .../slider/tuning/waves/tests/test_preset.mps | Bin 0 -> 186955 bytes audio/whitefin/audio-tables.mk | 6 ++ .../tuning/waves/tests/test_config.ini | 58 ++++++++++++++++++ .../tuning/waves/tests/test_preset.mps | Bin 0 -> 186955 bytes 12 files changed, 256 insertions(+) create mode 100644 audio/oriole/tuning/waves/tests/test_config.ini create mode 100644 audio/oriole/tuning/waves/tests/test_preset.mps create mode 100644 audio/raven/tuning/waves/tests/test_config.ini create mode 100644 audio/raven/tuning/waves/tests/test_preset.mps create mode 100644 audio/slider/tuning/waves/tests/test_config.ini create mode 100644 audio/slider/tuning/waves/tests/test_preset.mps create mode 100644 audio/whitefin/tuning/waves/tests/test_config.ini create mode 100644 audio/whitefin/tuning/waves/tests/test_preset.mps diff --git a/audio/oriole/audio-tables.mk b/audio/oriole/audio-tables.mk index 6c3fc3a..52e4858 100644 --- a/audio/oriole/audio-tables.mk +++ b/audio/oriole/audio-tables.mk @@ -69,4 +69,10 @@ PRODUCT_COPY_FILES += \ # Mixer Path Configuration for Audio Speaker Calibration Tool crus_sp_cal PRODUCT_COPY_FILES += \ device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/cs35l41/crus_sp_cal_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/crus_sp_cal_mixer_paths.xml + +# Waves ini/mps files for unit tests of halcontroller +PRODUCT_COPY_FILES += \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/test_config.ini \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/test_preset.mps + endif diff --git a/audio/oriole/tuning/waves/tests/test_config.ini b/audio/oriole/tuning/waves/tests/test_config.ini new file mode 100644 index 0000000..ba12a8e --- /dev/null +++ b/audio/oriole/tuning/waves/tests/test_config.ini @@ -0,0 +1,58 @@ +######################################################################################################## +# (Optional) The supported features list for platform vendors to query from. +# Platform vendors should call maxxaudio_qdsp_is_feature_supported with a string to query from the list. +# This config has no effect in the MaxxAudioQdspHalController. It's only meaningful for platform vendors. +# Putting any value other than 1 would be equivalent to not supported. +######################################################################################################## +[HAL_SUPPORTED_FEATURES] +CUSTOM_ACTION_256=1 + +######################################################################################################## +# This defined the options of supported sample rates. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_SAMPLE_RATES] +SR_COMMON = 48000 + +######################################################################################################## +# (Optional) The subtypes that applies to different angles(0, 90, 180, 270). Can be empty if not applicable. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_ORIENTATION_SUBTYPES] +OST_SPEAKER = 0:12,90:13,180:12,270:0|13 + +######################################################################################################## +# This defines available preset configurations. +# This should be configured by Waves only unless platform vendor is familiar with MPS structure. +######################################################################################################## +[HAL_SUPPORTED_PRESETS] +SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_MUSIC = OM:10,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_CALL = OM:10,SM:2,OST:OST_SPEAKER +HEADSET_MUSIC = OM:2,SM:2 + +######################################################################################################## +# This defines available CONTROL configurations. Only define the CONTROL if you need it. +# The numbers could vary from device to device. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_CONTROLS] +SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL +A2DP_INSTANCE = INSTANCE:2,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC +USB_HEADPHONE_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC + +[COEFS_CONVERTER_SETTING] +AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so +AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so +# do not modify the following if not necessary +#AudioFormatType=0 +#AudioFormatChannels=2 +#AudioFormatSampleRate=48000 +#AudioFormatBitsPerSample=32 +#AudioFormatSampleSize=4 +#AudioFormatIncrement=8 + +[CUSTOM_ACTION_256] +CASE_1=PRIORITY:0,NUMBERS:2:0|1,PRESET:SPEAKER_MUSIC +CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4,PRESET:SPEAKER_SAFE_CALL +CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1,PRESET:SPEAKER_SAFE_MUSIC diff --git a/audio/oriole/tuning/waves/tests/test_preset.mps b/audio/oriole/tuning/waves/tests/test_preset.mps new file mode 100644 index 0000000000000000000000000000000000000000..bd08ee30a1ee969ddde614206486e06935e0a2d3 GIT binary patch literal 186955 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 U8d?@0+c_E?Kw9FLKuz%f0jHY*L;wH) literal 0 HcmV?d00001 diff --git a/audio/raven/audio-tables.mk b/audio/raven/audio-tables.mk index cc64f06..b79674e 100644 --- a/audio/raven/audio-tables.mk +++ b/audio/raven/audio-tables.mk @@ -69,4 +69,10 @@ PRODUCT_COPY_FILES += \ # Mixer Path Configuration for Audio Speaker Calibration Tool crus_sp_cal PRODUCT_COPY_FILES += \ device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/cs35l41/crus_sp_cal_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/crus_sp_cal_mixer_paths.xml + +# Waves ini/mps files for unit tests of halcontroller +PRODUCT_COPY_FILES += \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/test_config.ini \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/test_preset.mps + endif diff --git a/audio/raven/tuning/waves/tests/test_config.ini b/audio/raven/tuning/waves/tests/test_config.ini new file mode 100644 index 0000000..ba12a8e --- /dev/null +++ b/audio/raven/tuning/waves/tests/test_config.ini @@ -0,0 +1,58 @@ +######################################################################################################## +# (Optional) The supported features list for platform vendors to query from. +# Platform vendors should call maxxaudio_qdsp_is_feature_supported with a string to query from the list. +# This config has no effect in the MaxxAudioQdspHalController. It's only meaningful for platform vendors. +# Putting any value other than 1 would be equivalent to not supported. +######################################################################################################## +[HAL_SUPPORTED_FEATURES] +CUSTOM_ACTION_256=1 + +######################################################################################################## +# This defined the options of supported sample rates. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_SAMPLE_RATES] +SR_COMMON = 48000 + +######################################################################################################## +# (Optional) The subtypes that applies to different angles(0, 90, 180, 270). Can be empty if not applicable. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_ORIENTATION_SUBTYPES] +OST_SPEAKER = 0:12,90:13,180:12,270:0|13 + +######################################################################################################## +# This defines available preset configurations. +# This should be configured by Waves only unless platform vendor is familiar with MPS structure. +######################################################################################################## +[HAL_SUPPORTED_PRESETS] +SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_MUSIC = OM:10,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_CALL = OM:10,SM:2,OST:OST_SPEAKER +HEADSET_MUSIC = OM:2,SM:2 + +######################################################################################################## +# This defines available CONTROL configurations. Only define the CONTROL if you need it. +# The numbers could vary from device to device. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_CONTROLS] +SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL +A2DP_INSTANCE = INSTANCE:2,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC +USB_HEADPHONE_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC + +[COEFS_CONVERTER_SETTING] +AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so +AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so +# do not modify the following if not necessary +#AudioFormatType=0 +#AudioFormatChannels=2 +#AudioFormatSampleRate=48000 +#AudioFormatBitsPerSample=32 +#AudioFormatSampleSize=4 +#AudioFormatIncrement=8 + +[CUSTOM_ACTION_256] +CASE_1=PRIORITY:0,NUMBERS:2:0|1,PRESET:SPEAKER_MUSIC +CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4,PRESET:SPEAKER_SAFE_CALL +CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1,PRESET:SPEAKER_SAFE_MUSIC diff --git a/audio/raven/tuning/waves/tests/test_preset.mps b/audio/raven/tuning/waves/tests/test_preset.mps new file mode 100644 index 0000000000000000000000000000000000000000..bd08ee30a1ee969ddde614206486e06935e0a2d3 GIT binary patch literal 186955 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 U8d?@0+c_E?Kw9FLKuz%f0jHY*L;wH) literal 0 HcmV?d00001 diff --git a/audio/slider/audio-tables.mk b/audio/slider/audio-tables.mk index 5bab01f..03783c2 100644 --- a/audio/slider/audio-tables.mk +++ b/audio/slider/audio-tables.mk @@ -63,4 +63,10 @@ PRODUCT_COPY_FILES += \ # Mixer Path Configuration for Audio Speaker Calibration Tool crus_sp_cal PRODUCT_COPY_FILES += \ device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/cs35l41/crus_sp_cal_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/crus_sp_cal_mixer_paths.xml + +# Waves ini/mps files for unit tests of halcontroller +PRODUCT_COPY_FILES += \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/test_config.ini \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/test_preset.mps + endif diff --git a/audio/slider/tuning/waves/tests/test_config.ini b/audio/slider/tuning/waves/tests/test_config.ini new file mode 100644 index 0000000..ba12a8e --- /dev/null +++ b/audio/slider/tuning/waves/tests/test_config.ini @@ -0,0 +1,58 @@ +######################################################################################################## +# (Optional) The supported features list for platform vendors to query from. +# Platform vendors should call maxxaudio_qdsp_is_feature_supported with a string to query from the list. +# This config has no effect in the MaxxAudioQdspHalController. It's only meaningful for platform vendors. +# Putting any value other than 1 would be equivalent to not supported. +######################################################################################################## +[HAL_SUPPORTED_FEATURES] +CUSTOM_ACTION_256=1 + +######################################################################################################## +# This defined the options of supported sample rates. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_SAMPLE_RATES] +SR_COMMON = 48000 + +######################################################################################################## +# (Optional) The subtypes that applies to different angles(0, 90, 180, 270). Can be empty if not applicable. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_ORIENTATION_SUBTYPES] +OST_SPEAKER = 0:12,90:13,180:12,270:0|13 + +######################################################################################################## +# This defines available preset configurations. +# This should be configured by Waves only unless platform vendor is familiar with MPS structure. +######################################################################################################## +[HAL_SUPPORTED_PRESETS] +SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_MUSIC = OM:10,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_CALL = OM:10,SM:2,OST:OST_SPEAKER +HEADSET_MUSIC = OM:2,SM:2 + +######################################################################################################## +# This defines available CONTROL configurations. Only define the CONTROL if you need it. +# The numbers could vary from device to device. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_CONTROLS] +SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL +A2DP_INSTANCE = INSTANCE:2,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC +USB_HEADPHONE_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC + +[COEFS_CONVERTER_SETTING] +AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so +AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so +# do not modify the following if not necessary +#AudioFormatType=0 +#AudioFormatChannels=2 +#AudioFormatSampleRate=48000 +#AudioFormatBitsPerSample=32 +#AudioFormatSampleSize=4 +#AudioFormatIncrement=8 + +[CUSTOM_ACTION_256] +CASE_1=PRIORITY:0,NUMBERS:2:0|1,PRESET:SPEAKER_MUSIC +CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4,PRESET:SPEAKER_SAFE_CALL +CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1,PRESET:SPEAKER_SAFE_MUSIC diff --git a/audio/slider/tuning/waves/tests/test_preset.mps b/audio/slider/tuning/waves/tests/test_preset.mps new file mode 100644 index 0000000000000000000000000000000000000000..bd08ee30a1ee969ddde614206486e06935e0a2d3 GIT binary patch literal 186955 zcmeI537i$h)%MS@$OTabL8Echk&pn2D61ku9kvJwnn7>{Wd@i56k%A@fF|CkxV}bW zK1Eb;Kqc;A68B}=B?}2ejERcbFh+!EOe=z0l<(B->3Yrp_sy^ji0|nicZUB|cirmh z>h9{Qr=QcWr0)s+Uu!`75>Y`D`9TdEP{E!=d;9;(@-z7~*po5?%cfRNC?8W^P&jzf z^zx~b$|e>Mt1K@&r+jLI7AFtu*S~mBdD+;?@slT&Pixq;-^BCEr%#?deSD)9H7gZQ zm{dGq@|bfPH!GR&-SUaW{mvUZt;^ounKZm?^u+SwZXTFPPMd~cZzm*NB(O2n`wgnCRF3*sk1+?ejVWS3>O&U9>eBxOD*Np#>TM9JD zx=3lLp%I`rHx5uTp7#hqv6D(qGw9CpzZw`(%}oQy*ER!mW;s6THbl)e>;;IO9K&?A zB5nZ~9u)$*aLWMMvZz%6DO+m|(nQkSVs{{bs7S*>fNoq2Ao{w7b{g7ikVBV#PhURF zL)YALNOZV|o9FsvrR#{*Vs`|fkUIgGj|31M3Hfi%GDi83;gIp1S znn&XR86FRa-2?#9*?=lO2S79tkl}LyM3Xd31}x!90MQgchNl8zHw{2E9k7JY0}!1L z$nXUKqVH;$0f=}efapR%hA#rd?t1{D?*k&f7(kQ-WcUXFqDvI;r2+O^&X)zC!f2L< z7jtLhYIiwOVs{0A_)5SEz6wBewTCo=Yjn!B8g9^VBOrEj0z||3rU2Ozo*O`#<;{TN z=oUby=vDynJPq>!tK4lKHg4Q_$OFf(byXhT-nenpb&-3!R@eSkiEKY;iFK;n4uIr}AR~r~y9?AbLW>lNz1^#O`STQ8i!yM}VIEjE4>*uX}cV z`K7eSQh7SVVaXqj1knF;0 zw;`m+E_?`x-A5We*6;~{=uH&Y!hs%gd+@+IR}@m{ z=;$B-(ZPV&9ReUK)^KQm@y~M`56Lbx=dXnn*@d=%*nJ&9^bJ7l+5w2#2ar;C2oRml zhk2Ow_RvQUp4E{L4=LFmQO5xCrAKJ!q~S;pxjWzieWIguN@opSG<4O_9T2-70HUJ- zU87?FL_IYetKmdI>`DMcLjkcH4j?)i(3ejE92}kMA-TP;bf+ODcBccR;~XHG$|C~M zDmT(Yn!%Y!iQQQMqEP`#E4b7{1L;6lRP4iL9@0mi(P1??oyP#A;|#cp%RMAty4F=7 zCBx$Yu^SH{nh+pc#%BkhgZUf}(mbS%yzeF=C3fcmh$jWOXaP_5kd$C)b!AAACzdII z*i8ixO$(5n%+oz28SKU9g%ru)d_e3j07%CfP{}g@L^A;yz7Rlkk%sRD$js;Odq_&~ zarMO^MM{tb#O?}~@PRRNap0szrMK!$Gz5Z$5S&H#UTniqLU+QDPhKk?u@ zpd+u_;O+{m$=P@}fao4T#PVV4bNzJR>N}|p4adT4ZqazD-BBl z^2h@y;ukcm(D0&$-)neD!yf>h_>X`hep$mS8eY|~Qp0N+UI)lS3LtiG0zPo70d4s$ zfINx-dPQpivHNELzL?+kkX*b!b?<}}X%zng5WlN{{vBY+!yE^oLVgdB;r9WtTNj|J zj6VnMdf79hiy1Egc7;aWgz{vm+qIt@2^NKTB_JjX+F zH*3i^VKwPW0i-Jhh}|t3Zq+bP!+ZeIZ5paHEYPq}!##l5-3w^MG2nD=EK{lJRfG1{ z&_Y9@hL#%k(a;JIyL|zJd4E9c4ge5+Rl|WAiZmRg;b0AiXeicjsD?HgzNVq0h9fj| z0u1LP1IWGPD8ORw;^7_ty#978?&={olH9BeAe`pzx9)?hny?RV@G4<&v?Q zn#J#1%~G@NSV6sQA7Q<1lXU%P%mCu?0}7&v@>|zcx&rxIf%Bi`%Z60@Pr9$eH~9{k z$g1@nz8?LudEVTY$bVL`{FV=Kn&+nbJYN!Zxi{HoC&@0|cGEU-+a}vK63#7ZKRb+E z?EL4s^;fzny}uRm+O!;1vSGe*T-f?u=Rf(%v2c@Zw^R;UCATj!zwPTeL>wO5h+q#06De*se}}|X#o_baWSBd0;EFj zfNeMtAo>0D%i%sH>44S}Aj#waw%MTqBq~V+NXhrhQx?8Qp0WTkQ=s7(z%~hxs5dew z4FaTGA>`7KR=hl>0f_o)=m*$Q0;IGK1|#cQ0wkhuBV~sQkSLo7kkS(56ClYviY~z^ zfbA6^(dIlmKb|?Rf=AMEL|rL=T1BWOpCd@Q4NokmM$j6CfqyB%ip)^=eN5V)rC~ z=qW&c0a77HVKsTQdnSO~_@4z3J*VM$4ZqOvOAWsQl-8dBsZa@!WEYeGDR$C_O`8}| zJ^>QZAM|Q})bKK(vi<}}g<7fK-Se`si-p-@9h4f_C=)J=dCyZx{Y(N_TZ1xSTk5Fn+y zpae)n`2>xnOUZe#`GK8r!Py!?w!qgQ4 z0g~KLOLa;aAj6{pGK8rC0;I}0i2x}*Bo$b#mH>$;j{u2EwE&4ICqPPa%diq4$q**8 z)&itUsuBTGT7pWfR!e|HG!-dYfJBvv04dENp8$#I0-eDQ6d=h%S5APGmLQ)1iRcHq z1eXA|SAZnb5#kmRB3dh8ETJ^>QZt`;E4teGxo6<~V>NOB=wgxrX7 z0;J@SWLOE1i0VmzBnq8GfRwg_d;%nSTT&I&1W058BtJfyPk&ICwAN`Mq= z0TNL@0TR)F5g?@}tr8#+X#o=D5g^g&T7X1afF$oi;K<3l5CQlFEkGht0;JgG1W0Ld z>LfrSQUavObrT@TdksNwz>Bv^fRvVPa{*GSMlt~skqMB9{*MWek`p772$0gVq)q}P zA|*f~QUWB=a)IgIi)}XA38?8 z?O>$?>ZlmgMUiBce~gK>Vh6V2xPZoIC8`cewq@N8mLlC*<8 zd5Ztiq#dkwqR7Nis4u0!K93|;B}pALjV{EO)~8hoT^hcJ=Os#kqy$UdET59V%5AqQ zNh|T1@I7)eU8~_n4G;%pzpcapJY0(d^1G9Kqn0}f%|q75B;tVNt?f4wcalLlW2W_q zI3R(hi8vr}%s47>CrRv^UQ66b5*7KD+)1_|4(Or90bP|ifR57QfK}R^M2iFDjimdq z3vKg?19qr8N%oX2hy&*2Otc=W-cE5qYb6elI>?CwHh9hS`qr$(0f%p=J4xmFTM!2% zP5D6n4QiC=w;GlK^1G90aR42chy#)q(n`CN9JQV9B(v{M!~w60<4v{qm6AK&1B$deNsTxl zd8ea^b|-0**PX<~0lrtW2c{pk#ht{&0lpGe2~9%vmTspwU`35MAh`#B>~i9OvlNfb=;li#^@J?j(Fg$a>Z2L>!O|8SKG1aX|X4xl`Op-ukH)2Q<>| zB>V3icalawO591(=d7GNN&1YjQ`|`wEzs^Ht)iSbz}pHod!?Zk2h^K837vI!A`a-5 ztAsZacar2>c+1JK9G*3|MjVhnXFY-p#HIsAA=~CoQpK<*cXorj2$zle zd$BBawyt@o_)C?M!VkGdRxYh>*#F#jqMyeu1{y{*QSc)aAyGx8Q7DZ!eYw zXX~T{>#Fm;SZ2=F;>>8y)^g)FXX_%~9i6Sk<08Bywk^)q*&XX_Z7-JjVP12#HfL+! z4ldCzV(nCCYya&sx|_UMmg^C(K6&zF<+4|!) z5)8YLXheeod9f^0GI{Fssbv$yOHofoiJ~Btw@A2c4V%AF=C>pZex0j^cDkzaNdzqT zwRl+t?^z3eoqJ`&f?vy9q!#>It|B|>jWP>v#^Ve$&evNxQyk{-=wVaFjUoWep zM8JYy)0aRZV8O3*=R#9VN?P!1-`_tN6=K1!eT8hj_w2R>zgBOQS-fk1o62K1E3*q{ zqm5d;>$!6+-u1F&7VmoQT#I*262s5pUGM04*A|1>Vlc~axW!-=OFfIhY%!R9=XB>- zpw^1PEXIS{_R(T66Lms`SPW+Wuxc@wCG2i!6c&Sdi}9Q-1~ZY^TZ&XbuH<3>>ld-> z%gF=MIM|JIf0cDMi|@>REe5kxj*0~>B=5tMvlz^1PjaiS)t+*G7P&UHdCc+S zvd5@n++`wVk73#u)4oXKT{cg=&Hm`Id$gRYDWyyzR10NmpfvJ4Ph?Sa^i&0Cd#=fC!PHa z?-V!X8y`&EloKmP)4rJY#Wz3GzW7?WH+UCF7w5hJ*^0W_F)s<*NN%QmG3|?KU;KGx z+7}WVsF~V+;X;4}N(1almxjcutaakjkaRR#?v^eMrhV~eUB@715I91EXk2XL zi)mkK&AE%OL$WBXf@xn&`;s(@nFB6t{jT#LFTU{liy`vSI*f(Fekvu^1Z}B3NwR5Q zHmSFrrG2@wZI_(tWrqALpq3IQ<~x&ymyMoSKI)rgW6Dpilwv6jj2v0ai^&!MGlL;I z2o=(eivcEx@vZ1sR7i$<0fKsYiTZTwBR9I(eG)1} z@KZn`|0jUVoPHKS=BqvrknL>oVk}-vt|7I9yNAT243Hhf9RftB^I;xly**SS&voR( zLrS(s)G>hMcZ7z`V~yuV$PehFV~rE-$XMgsW(Jcl*0?#t_)CpB!w_Ah+x7PXm^y~Y z)GCX7`L-zElf*R2cIj9mc#!hcPeGVa$tk81o{23Aq*N znC6{yO!FdsS+DkrhF3N0j`3oMwl7{x)sBr96T8ntjq*6&7=Q|yv`C`>5W5C|Gq@q3 zkQ)Ica)gFGJS2jP4X%lYBnk#9^VqCztK9e})%qhV+OGvP7KQSK^anj>Eg zH--~KF2treGR=|9ZAZ_cQ4l>3h}|y$M8DMVs{qlt{A&-%u;(XkX-JXw_8Wj{jz|;> zfAbZRi~~32Rj3^^;UP2OkrT#Dc!zL@mI zU%yTIlGMWPEPeUJOJ9mD09A4%P5ZKJ**@Ie-vVBr+4_OwU*F(*VAd;kM*~dz;+u?k zj-`F9NCBY{5JTqC0i?Z|_J#UMefK3=)3-ok$;iLW0tT7(W##~XZAupzWOn|ueA$p{|4D5+ zhRX`R{!-1*Jo&%Y4EcKWOF=Yo0IA?zL@f31KdV@N%ZE74b5rY&`I4yfY#^L0xiaR0 zHl^Ec8u;lpSy6AhB@I)Dk&B)GJh%QzH>LNtLJ+A<%TcvSUb-9>fNJ-)eYvu2*WBT> z08~+{Ft;K1q}CeD48{a8%a*-UJs6Eb9{2#U`!>J?G5#J^iVB&{WdIYz_}V!i6_Vi# z05Zt0VFthiF}~hR5MzRv_3c~ovp6wK5MzQEe`$!_+h`O-?*Iz|ZVjb8*oj0K=t>nd<+nlp@CsZ1Rsb#NUT zg{fowwaU~nM2ocl%VG`Y3{$V_7z;pU0jT^%$O2GV04m=@VaSDuzNz7Oz!Dw=AQ}uX zC6ceisi+VcQ`Im7U;(K7qr3&6G9{9~|CkGpDUrP2_hc`bdTxFDk=H%jlq-XND%&fX z5ybPZ5i!QDJafHYZlngEG(#%dB& zQ$s&MDfb5uiLx|3^cfxqkmo!N#{(*Pkcae5(VZ_qx^F(8Yz<@riVK!dpCRK_I>%Ru$r8wqX0Wp zfb{BvT!E~cN8jLC0V-3>* zOZYs%HVBZuQq41w!AI^w4@s!-4elbO5PeU>_W==K3?Rw^GW-Jo(IpD_(g6D{=gT}K zSELrvEDtaCy0~I~)oOQnSWVi&6#(KZ0W0__0MXSR(hRQADc5SaLBmcGAdyJF(=%(8 z6D@a!Huw(t`Zcb~L()C}%q{ScoEYtRAz-b$-NQRW{SjL0?(mQ-vAYwi?a7Of(kuE2 z;1s?qK;<;PJAmYJ4>2?Q(Qi>4qGf>CEe8<&4p71`1XwkL zR|F90%Zq?-M85|Ry#$Ee9{@yu)bMhE`gG(uzHW{@heof5;z%3)J0Ny%0Eqsf;mrX1 z&*Ie{Qd6O~LW<aNX(}ogM*_}JtVjHmF_g8#O`!} zbesV*cm#lGq=z(vy4dq%E4b8elbnG2aG8hPJ#XZPZZxuv-57vaSq7+_!{r{5FI`%_ z)dHl_GCtd9Q1jr)=Xgjun(w=b;d`W;cP@ZGJHGWzY36& zqwuNwiQmR|Ku2D;!QG`ZxLd8I&xej4#-0OFqmR`5drqK7@C89bs>On^jmS8$f0o_sf8Ckc?UgZYW@r28Pk@vy;}5W>8D6hpgNNiAQpYf0M4yKYcrtGcAkIt#35Psl zXlM|C7jwe^vP~mE?uBhUitM3Nns`Wh8>?MLLsPw4GYxxcFe@YzAju=}mqvi(pQQZ$ z%<+vp*CSqiG~a|4pW(RxqMHG+yG6sT8s=%(IRYd(>$QAgZw)Op6l!RxVIK{x01`0+ zFqroT#O?q9(N{GbsKKm|zRUuoU*FBA`J?TliOg&*(_Z?}p8@y+3y?DR@;F~mKkZi8 z`*SxQr6!u7;cNwb4j^_D0Yv8p$PVO5fI171Iu(~U@Yg2O3rHpGSi=(23;2e0EQYc( z+zUW-oQB>2(+iO41&B;9KxBFWe+k)Hh9#yKkUOC11&Drwn~~`S{2b}ue1#+}U^Z6* z>e3!1My97x3+%N0<#3I9kIo0MiTjs`|o)PWmG11)4RWLa!Gn@b4v+OrAP@ zYS{#NMHYj?<}cve)PcG}iZmPq=*GnW(+l`kWO@Oj6VWI#{2hRV#MCe}fawKHFW^re z(+l`oFuj1(f%yyUk^m>B7cjj*?ixhv!rfW;g8-%%km@kKfawL2v!t`0(d(k2tA_3X z8QB0xH3GUu#{kSaK=7gMQ3w`!ON=)&^>rWYXb zBrt!0A~t^k^B3^fk@lEDCh7nv;llt#hXXR)5kS;MLsvj0cLNZ02V}ShK;DGY&>JwD z`v8cdAG_`v zOfO*m0)EI~$NCE#SuA>i;>2HosOgZhNn@vtDXT2^H{SGSW`Y3|40uzI4Xy_og=m%l zM8^P1xF^5_1O7}h!2r={G>Qz50f?`v2D$RoTzAZ1zyt&ST{jY8b~-vea$eL(Ei1+ahw{sK!DkiY^G$g{cyB#^s|84Q@gfbVUXV88?ez8&mX z!9atr6*M3w8j%Z2(DJ16^UJ4BD=*F?9FUcuB50_g5ui6W4p1_l_Xr?`ZvyDfl2uJ^ zBdWP+0J;A+1N7xR0n#(juoob9djpEN1z>n2{t0QRyKu_@*|Mlr04ZB*4f|@?dUFAy zuOkDZb{g7i=m6-;hj~a0tqzF}_mEhtt#lo+TI`Mh6mlm3^N|3eqdcS;bk-?dG;|FR zm2)=_$=e0{aCZ+rP;32a1y}_mIEwq!6sJl?ovNLOH*(?9H#ljf>0yjrUjR`*Kq>bJ z5Dfricp!l2n;MP>RPrDXNgcdXJs2s{B?H9n+W?{=fJ#0Aunk&)W%KwXpFwiuKCT{y z+%h~I5WABBM5h33}7C9)Re4K!z^>h*nF(3_!#)0Yn!9GJFvrcHaXKeIF3<#Q>r#Aj3ZZ zNDNj5d})CFmh)u+s4$x4Aq|6hIZ|SG1%UWUzzV(!KyX0kL~X!>-l}4B!aG z>B-M{=#UHKyi3dlV)t7VhiDlfcFO@0$rDh*F9cXMgI5HQnDZ|JI!3<-5WNJ5-5&r% zf7I}DfFalOD<0CA^RI>!X>lt7v3m_b^d~^<{tO`c3!sSq8sL8kM$j>OJ**~Q`gcI= z-T)B&L&KW^_MgS8J*2zvR!EWD)&OF+7C`(@K$p(yn%aRzPeM(Go?1tl>mJ z?1pL>4j?)i(3ejE92}kMA$?3b4JolZ9Uy(>0MS$)5r9^?t&TrXTEV40g9g%PuBh0D z%RHn{IirzvUOxf4ip%|KNvYSm3T%_%ae&y32S~)j05Z*Rb^tn<&+(8%5PsiHL`v+= z1rSdPaM1#u>>(+^((1~PBBQob0I{12Aet5+JDI0@NHW-q&kHG%!TEst^ApI-=kKEg zA6H+DFU@ck5W61$q^}If@}+=nkO#ZG%VL(egd1w16~hPywZCA4v5{GfL-E=PxS9l zf+gE9WnERqAA}6#;=NwO1`o;gtyT1)hcr(8M;boEHnICW0FUF10b~YU#)Z*`Eda!> z0pJX72q@%60EwopVGj>UzjuS%+!H@3^-Hd)-lmy`JvG>rwM|*elh~JL$~rkQT669l z_vGH#l5awbm+(RW2`>crf=yYU&W-hZ*LwqqT4*TL&{BiF<8JS`lRW7SN28G07l6#Z zXgD=M+k5yl4}J=5W^0*!2`SPGI0Ntn_Qb#GULNNQnvP$ON2%qBQp4E__#D8Fp0X~W zhC><+kqRu3Puxs?$kIqYzHcyO!ld#tnV<2TTX@QVg6w$%#BfeNYx>IH`pH)Edre;% zAIs&jX=K@*&Op`_Ih>9MYe%{rdZiyVeMQhTY%>p1zV&okY} zV)?%=my93OEPmf=mYQwH3hHh92V4DYxUluR&VTZiW8o&-ZmAryN^W0d zn$_2H$ZOL&mN|r4+!6IBi-k=~>sxBQ4ja$6k68uIAH6o_C+heUE&T%U}`EWDS#Bo*Icqly#eGPr;uL|BeA%!T7E%HELKz@x6a!j zh-s|^F;R&Y#B|z8f*6ao;oHcuIE)$Y1<1Aiw7C%VMoL*Ch)Fu&OPyRJ(vhn79Ah=2 zz8d-gc9b9{DZySm7+LQmL5xM)uxK0pPEmw2j!Er7L7q0Erzh0}|=XT#Y&= zCjuS$p&K1mlM`?ZKwRenRL;@rn5ESfAw{NV>Y|P*tx?A$Gk}L|y*lR68?-vc%rpGi zaG5>|vj9YwYq%mnTxseUTEe%63Xw{j2gvYz08xFbW0G^>Qjs!bgu z?EtC>i?-ndY*dE|v1l7|ov>&dGA6LSN+cqsM4DVTC6egugAjrjZ5j^a0^NcPz;eeTE zn0bboXGq`G%rnT$Go&4uc?OwzhM8yh$9Y*E4FZMPQ~9v~)PNrc5Iv#cNe!ZsOvPcb zdm2Dg4KVWz-@!BU3^UIlc~$T~;lwcWjNC=2rJgO?C%~Tt3I@)*(f<+E>GV z8omOE-TnZg0|0&bs{zDF=0Fd*7hxV)=ZZoK9UUD6AUYTjyF&m(#TpI`F#dUN<009F z=KQsgBD>HQ5WBAfh`s@cT|0n8C=MW{?hqh4oe%Rc>+PX3BHNJ<4=LFmQO5xCrAKJ! zq`}NH%shk4JVVYAGtUqg3!bAd4mSbh?OK4mU8~_1Kpo`)W}e}@hGw48lWz<2JwD`vByHO+bbjAm+jv zY|5HwGAd*?R|3RX7x3kovQ8dF%sfNx9%SYjHf3$*8L!-4+52;6<{3Fd0W;4q^9+A$ z@a7U`o{_VqlP58l*X&N_8SSZ{fj95)AELd!Gj&4wr0HeTCrq9+sxy^fs3Lalsac)Z z>{917yVh~dA;n`GP+@BF@r{zfrwtrZd{VdKVI>3metY0a!}@-6VDSlqPb==(rTCjC z4;fNCWZ)?Sy`fC*!1&*}T}-FpMCYqh%=v@pAXG>oW>cE^oc1b84bN(>rkK8rLoIhmRstF!zq@N2g=MQuKNX`;-{vg`wxH#tg zA&sXpiHnoWAnm;i;^M5?<#BP$`9s=49i=_y{9)1_f6Lijr9F=a(T^B+JfY!94Nqx! zT7x-%6!EK}Ld^L?&INP+@K=QP5Z0KC%2&uxR7k`p0f>eHB*Z#EVsvO20Vv^-0HQMi z89oajwsacG0hL?( zMDmV|u8>ZE;e2EOHs=rTx z=FYV^BK|C~I3h&#W)xy-0#g(Clg!ivKB!0(rqu=QKR8;TIZyso_@|mIjcj z{~e%+U(m2Z!;2bzui+&Pe*kpiKLU#QWeu-rFf~CLe}D=xHG#h(n3_PwmGxA-sR@WI zj!5k0p;5$cK0vxs8mcrb(6CU$Jpc)83~0nLz|;i(iqsLa;-)6>71B>vNPi6j0H!9O z%)LC$S4i(>Uldc8oSJ}5O&|v)Sximf>%r6n;-sf%3yufWL>fs(6!+r6NRi-gfY^N- zAOA^;q=*dnUjX8F0kQjcfF%!e96+KBz6Z$g`+(T33y?K6 zfj{`o_57u&2~17k8^w2ZqcAmrsR?|eI1sbda?j9kkcNXb9HOCE!=W15X!x22Qxg#N z)fHlDg4m7K6;iIDBET0>O;B!;4k8KlU}^%?fvE}nt;N&?GAODW#fShBCVixbWOT4i zbf$+pD!oW*Up_0WCJ#!Z07RvL*<1!NHGyw$rY0b|+Bb@HWb7KTj0MaaP1{6oP06Imt0*L1+p!tAR?lun_+K;^M+4XB&m51lnd-}{R@Q|Ds z?RX(zt-IaBJ3b!#+iTq&9+D+?cVe|Yc@a{2MLz+Y!gmFzoW^$tkX%enU}^&2m`qJz zY64ReB$w5F!oNsUV_tNRc)7)v%w2uK;4VKY-`}Kwti90P`lu)x3EVn3_Nu zf~g6l5-tfB2g>rL08B-pw z4GjYDVs02fwrK>&g|$w{Lqw#kQ<`{4%a+m5RIk=d!=4&UO(3ti=?XD#0#g(C+wQGs z6s9Kdw+T}d#O|0dTP+pRQ^T2H-T>lm#C?0zBIso%lR@7$wO(2XqJam3~+f^O**bu0En*ytl+Bv zrY4v>*VF|5Ip=BJD5?R4907XrGafp4Nk@BA6ZrGg)C8s`Fg1Zc6NpSrK=cjFU&gK- zKpbBKhz6oVfar8S%!40SK6q9~K0Kskdqf=rNcA3}p_2wv6PTJn8i=V0q!LU`Am(AX zI8^Z*fT;DXNevUAh8La(D0;&r!+jRp<07QIxsbXJSm%+Ku$FC zCNOUTf7>;00#g(CcJNiq;hLJj_d`rgAW!dT6tNotkT`{a*qsR=It$Q~M+K14mC^v> U8d?@0+c_E?Kw9FLKuz%f0jHY*L;wH) literal 0 HcmV?d00001 diff --git a/audio/whitefin/audio-tables.mk b/audio/whitefin/audio-tables.mk index 4b13502..b299e4b 100644 --- a/audio/whitefin/audio-tables.mk +++ b/audio/whitefin/audio-tables.mk @@ -63,4 +63,10 @@ PRODUCT_COPY_FILES += \ # Mixer Path Configuration for Audio Speaker Calibration Tool crus_sp_cal PRODUCT_COPY_FILES += \ device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/cs35l41/crus_sp_cal_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/crus_sp_cal_mixer_paths.xml + +# Waves ini/mps files for unit tests of halcontroller +PRODUCT_COPY_FILES += \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/test_config.ini \ + device/google/raviole/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/tests/test_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/test_preset.mps + endif diff --git a/audio/whitefin/tuning/waves/tests/test_config.ini b/audio/whitefin/tuning/waves/tests/test_config.ini new file mode 100644 index 0000000..ba12a8e --- /dev/null +++ b/audio/whitefin/tuning/waves/tests/test_config.ini @@ -0,0 +1,58 @@ +######################################################################################################## +# (Optional) The supported features list for platform vendors to query from. +# Platform vendors should call maxxaudio_qdsp_is_feature_supported with a string to query from the list. +# This config has no effect in the MaxxAudioQdspHalController. It's only meaningful for platform vendors. +# Putting any value other than 1 would be equivalent to not supported. +######################################################################################################## +[HAL_SUPPORTED_FEATURES] +CUSTOM_ACTION_256=1 + +######################################################################################################## +# This defined the options of supported sample rates. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_SAMPLE_RATES] +SR_COMMON = 48000 + +######################################################################################################## +# (Optional) The subtypes that applies to different angles(0, 90, 180, 270). Can be empty if not applicable. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_ORIENTATION_SUBTYPES] +OST_SPEAKER = 0:12,90:13,180:12,270:0|13 + +######################################################################################################## +# This defines available preset configurations. +# This should be configured by Waves only unless platform vendor is familiar with MPS structure. +######################################################################################################## +[HAL_SUPPORTED_PRESETS] +SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_MUSIC = OM:10,SM:2,OST:OST_SPEAKER +SPEAKER_SAFE_CALL = OM:10,SM:2,OST:OST_SPEAKER +HEADSET_MUSIC = OM:2,SM:2 + +######################################################################################################## +# This defines available CONTROL configurations. Only define the CONTROL if you need it. +# The numbers could vary from device to device. +# This can be configured by Waves or platform vendor. +######################################################################################################## +[HAL_SUPPORTED_CONTROLS] +SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL +A2DP_INSTANCE = INSTANCE:2,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC +USB_HEADPHONE_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC + +[COEFS_CONVERTER_SETTING] +AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so +AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so +# do not modify the following if not necessary +#AudioFormatType=0 +#AudioFormatChannels=2 +#AudioFormatSampleRate=48000 +#AudioFormatBitsPerSample=32 +#AudioFormatSampleSize=4 +#AudioFormatIncrement=8 + +[CUSTOM_ACTION_256] +CASE_1=PRIORITY:0,NUMBERS:2:0|1,PRESET:SPEAKER_MUSIC +CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4,PRESET:SPEAKER_SAFE_CALL +CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1,PRESET:SPEAKER_SAFE_MUSIC diff --git a/audio/whitefin/tuning/waves/tests/test_preset.mps b/audio/whitefin/tuning/waves/tests/test_preset.mps new file mode 100644 index 0000000000000000000000000000000000000000..bd08ee30a1ee969ddde614206486e06935e0a2d3 GIT binary patch literal 186955 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 U8d?@0+c_E?Kw9FLKuz%f0jHY*L;wH) literal 0 HcmV?d00001