Topology: HDA Generic: Headset filters configuration from CMakeLists.txt - #3796
Conversation
This patch eases the definition of headset post processing filters blobs. First, the macro name PPROC is changed to HSPROC to indicate the processing targets headset endpoint. The CMakeLists.txt for topologies is edited to add build of topology sof-hda-generic-eq.tplg that does not include DMIC endpoints for devices without such. Previously there was no variant without DMIC enable. The main macro sof-hda-generic.m4 is enhanced to define HSPROC as volume to use pipeline pipe-volume-playback.m4 when it has not been defined in CMakeLists.txt. The definitions for PIPELINE_FILTERx are copied from endpoint specific HSPROC_FILTERx if they were defined. If they were left undefined the pipeline will apply default processing configuration (e.g. for EQs pass-through). In the example the EQs are left to pass-through. The topology sof-hda-generic-eq.tplg shows an example of explicitly setting the filter coefficients at the top level. The FILTER1 is impacts the first algorithm in pipeline (IIR) and FILTER2 the second algorithm algorithm (FIR) in the used HSPROC definition eq-iir-eq-fir-volume. In this case volume does not support such but for future there could be FILTER3, FILTER4, ... added if need. The current m4 macros support now only HSPROC_FILTER1 and HSPROC_FILTER2. The patch adds undefine to PIPELINE_FILTERx in intel-generic-dmic.m4 to make sure the macro is not set by other than DMICPROC_FILTERx. The same is done for 16 kHz DMIC capture. Currently there were no issues caused by it. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
When doing comparison (diff -udr topology.old topology) of ALSA topology .conf files before and after the PR I noticed that there was a change in HDA capture EQ filter coefficients for sof-hda-generic-eq*.conf. It was because previous version of topology defined PIPELINE_FILTER1 and continued without undefine. It replaced in those topologies the intended high-pass filter (to mitigate codec capture settling ) with pass-trough. The mistake was before unnoticed. The sof-hda-generic-eq*.tplg are not used by default so there's not much harm from this. Also not all HDA codecs have issues with DC pulse from headset capture that the high-pass filter was added for. The normal sof-hda-generic-1/2/3/4ch.tplg were not impacted. |
juimonen
left a comment
There was a problem hiding this comment.
lgtm, let's still see final CI report.
This patch eases the definition of headset post processing filters
blobs. First, the macro name PPROC is changed to HSPROC to indicate
the processing targets headset endpoint.
The CMakeLists.txt for topologies is edited to add build of topology
sof-hda-generic-eq.tplg that does not include DMIC endpoints for
devices without such. Previously there was no variant without
DMIC enable.
The main macro sof-hda-generic.m4 is enhanced to define HSPROC as
volume to use pipeline pipe-volume-playback.m4 when it has not been
defined in CMakeLists.txt.
The definitions for PIPELINE_FILTERx are copied from endpoint specific
HSPROC_FILTERx if they were defined. If they were left undefined
the pipeline will apply default processing configuration (e.g.
for EQs pass-through).
In the example the EQs are left to pass-through. The topology
sof-hda-generic-eq.tplg shows an example of explicitly setting
the filter coefficients at the top level. The FILTER1 is impacts the
first algorithm in pipeline (IIR) and FILTER2 the second algorithm
algorithm (FIR) in the used HSPROC definition eq-iir-eq-fir-volume.
In this case volume does not support such but for future there could
be FILTER3, FILTER4, ... added if need. The current m4 macros support
now only HSPROC_FILTER1 and HSPROC_FILTER2.
The patch adds undefine to PIPELINE_FILTERx in intel-generic-dmic.m4 to
make sure the macro is not set by other than DMICPROC_FILTERx. The
same is done for 16 kHz DMIC capture. Currently there were no issues
caused by it.
Signed-off-by: Seppo Ingalsuo seppo.ingalsuo@linux.intel.com