  <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=ConfEdin2013</id>
	<title>ConfEdin2013 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=ConfEdin2013"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ConfEdin2013&amp;action=history"/>
	<updated>2026-04-10T07:39:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ConfEdin2013&amp;diff=6684&amp;oldid=prev</id>
		<title>Lrg: Created page with &quot; == Audio Conference - Monday October 21st 2013 - Edinburgh ==    Attendees :-  -----------------------------------------------------------------------    Mark Brown, Liam Gir...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ConfEdin2013&amp;diff=6684&amp;oldid=prev"/>
		<updated>2013-10-31T16:56:22Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; == Audio Conference - Monday October 21st 2013 - Edinburgh ==    Attendees :-  -----------------------------------------------------------------------    Mark Brown, Liam Gir...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Audio Conference - Monday October 21st 2013 - Edinburgh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attendees :- &lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  Mark Brown, Liam Girdwood, Pierre Bossart, Patrick Lai, Lars-Peter Clausen,&lt;br /&gt;
  Eric Laurent, David Henningsson, Takashi Iwai, Colin Guthrie, Tanu Kaskinen,&lt;br /&gt;
  Arun Raghavan, Paul Handrigan, Daniel Mack, Dylan Reid, Sven Neuman,&lt;br /&gt;
  Dmimtris Papastamos, Charles Keepax, Nariman Poushin, João Paulo Rechi Vita,&lt;br /&gt;
  Alexander Patrakov, Micheal Wu, Lennart Poettering&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pulseaudio route management and UCM&lt;br /&gt;
-----------------------------------&lt;br /&gt;
&lt;br /&gt;
There was interest for shared policy configuration file format across&lt;br /&gt;
different systems. No such sharing has been planned. Tanu's initial reaction&lt;br /&gt;
is that it's not feasible, but he is open to discussing it.&lt;br /&gt;
&lt;br /&gt;
What to do if there are multiple paths from A to B? One will be chosen,&lt;br /&gt;
either arbitrarily or based on connection requirements or prioritization.&lt;br /&gt;
&lt;br /&gt;
How to control effect offloading? Tanu's vague idea is that if some kind of&lt;br /&gt;
filtering is required/preferred, it's expressed as a requirement for a&lt;br /&gt;
connection, and the node implementation will then enable the details of&lt;br /&gt;
enabling the effect if such effect is available. Tanu doesn't know how well&lt;br /&gt;
that would work in practice - and probably unaware of many details that&lt;br /&gt;
would have to be taken into account.  &lt;br /&gt;
&lt;br /&gt;
UCM being used by some people but missing good documentation. Liam to write&lt;br /&gt;
documentation and use examples from Arun as &amp;quot;gold standard&amp;quot; example&lt;br /&gt;
configurations. More UCM configs to go online in alsa-lib repo.&lt;br /&gt;
&lt;br /&gt;
UCM configs sometimes need updated for new kernel releases as Kcontrol strings&lt;br /&gt;
have changed. Suggestions made for additional UUID for each kcontrol to lessen UCM&lt;br /&gt;
config name changes (e.g. vendor-part-reg-shift-mask could be used as ASoC&lt;br /&gt;
kcontrol UUID). Naming changes also effect HDA kcontrols, but no HDA UCM configs&lt;br /&gt;
yet ? kcontrol UUID harder for DSP and HDA.&lt;br /&gt;
&lt;br /&gt;
Arun reported UCM issue with combination of devices. e.g. Enable dev 1 &amp;amp; 2 then &lt;br /&gt;
disable dev 1 &amp;amp; 2. Maybe virtual device that combines devices ??&lt;br /&gt;
&lt;br /&gt;
#include for UCM - should be easy to add. Simplifies config for family of similar&lt;br /&gt;
devices like Panda, PandaES etc&lt;br /&gt;
&lt;br /&gt;
Device Names in UCM names. There are some standard names in UCM header but need&lt;br /&gt;
more. Liam to add more names.&lt;br /&gt;
&lt;br /&gt;
Arbitration, UCM does not do arbitration but leaves that up to sound server.&lt;br /&gt;
&lt;br /&gt;
Controls names need more standardisation. Kcontrol naming mainly based on HW&lt;br /&gt;
specified within data sheets. Difficult for userspace to cope with great degree&lt;br /&gt;
of naming variations and provide enough information for userspace to know&lt;br /&gt;
which volume is master etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Audio Delay and Timing granularity&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
Some DMA drivers very bad at providing position information used to work out&lt;br /&gt;
buffer positions. Difficult for userspace to render audio and wake up correctly&lt;br /&gt;
with such HW unless we can provide mechanism for userspace to know the DMA position&lt;br /&gt;
accuracy. IOCTL suggested, info is in driver so easy to expose.&lt;br /&gt;
&lt;br /&gt;
There already is the SNDRV_PCM_INFO_BATCH flag which is supposed to indicated that&lt;br /&gt;
the granularity is period-size-ish. It makes sense for applications&lt;br /&gt;
like pulse-audio to check whether this flag is set or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hostless Audio&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Hostless should now use kcontrol to join the graph links to enable or disable and&lt;br /&gt;
not hostless PCM device (old Android hack).&lt;br /&gt;
e.g. FM playback loopback to codec, Modem PCM handling.&lt;br /&gt;
i.e. CODEC &amp;lt;-&amp;gt; CODEC type. Need mixer to expose set config changes as link&lt;br /&gt;
config is static e.g. WB/NB configs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Audio Offloading for Android&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Avail in KK, supports &amp;gt; 1 compressed devices. No guarantee on no dropped samples&lt;br /&gt;
when changing compressed to PCM and vice versa (or enabling effects ????)&lt;br /&gt;
Not available yet when in use with video, no tech reason to stop this. &lt;br /&gt;
AV sync good. Some effects can be offloaded and some not.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Compressed API&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Intel to upstream remaining fixes. AR - Liam, Vinod.&lt;br /&gt;
&lt;br /&gt;
Stable updates with no users. 3.10 is stable but we can changes core API since&lt;br /&gt;
there are no users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Android Audio Effects Framework Modifications&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Composite with HW and SW representations. Supports 3rd party GUI controls&lt;br /&gt;
but they must use the effect API and not bypass with private IOCTLs.&lt;br /&gt;
&lt;br /&gt;
How do we do library, like tiny effects ? API exists in use by Factory,&lt;br /&gt;
can we extend to alsa ?&lt;br /&gt;
&lt;br /&gt;
Nobody using compressed and effects outside of Android atm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
24 Bit HiRes Audio for Android&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
How do handle 24 bit audio at fast rates e.g. 192kHz. Being pushed by market. &lt;br /&gt;
Flac suggested as source media and not PCM.&lt;br /&gt;
 	&lt;br /&gt;
We could use offload, on roadmap for Hires audio on android PCM,&lt;br /&gt;
maybe float instead of 24 bit. Need for 192kHz, Probably not use effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Effect Support in ALSA&lt;br /&gt;
----------------------&lt;br /&gt;
&lt;br /&gt;
Several proposals for APIs.&lt;br /&gt;
&lt;br /&gt;
Control device type, do we need new control or use existing CTL ? Per card or&lt;br /&gt;
per DSP / CODEC. ? Not to use control API for everything , could confuse some&lt;br /&gt;
userspace. Get/set could be any control type, not just binary ? Binary blobs&lt;br /&gt;
used to hide workings of effects. &lt;br /&gt;
&lt;br /&gt;
Topology Query and edit - query the graph from HDA/DAPM -&lt;br /&gt;
used to establish connections and end points. per card based IOCTL. Could be new&lt;br /&gt;
alsamixer to allow users to control volumes.&lt;br /&gt;
&lt;br /&gt;
Media controller API. How do we match to ALSA. Need non LGPL library for android.&lt;br /&gt;
Missing certain features, someone needs to write code. MC API is Video oriented, &lt;br /&gt;
library is just wrappers around IOCTLs, 1 man week of simple work to implement&lt;br /&gt;
non LGPL version.&lt;br /&gt;
&lt;br /&gt;
Removal/creation - kernel can provide any type of information to user space key values. &lt;br /&gt;
Document new keys, generic structure. Channel mapping possible using tuples.&lt;br /&gt;
Need to support dynamic entity information. Handles static pipeline well,&lt;br /&gt;
and can also expose dynamic with some complexity (with more entities). &lt;br /&gt;
&lt;br /&gt;
Abstract away sink+sources in userspace library, maybe too complex.&lt;br /&gt;
&lt;br /&gt;
Trivial to use UUIDs for dynamic entities. Start with prototype and see what happens.&lt;br /&gt;
Action on Intel/Vinod ?&lt;br /&gt;
&lt;br /&gt;
Topology 2 NODES and EFFECT IOCTLS could be replaced with media controller as MediaC &lt;br /&gt;
provides good match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sending/Receiving Binary data to drivers&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
Use cases that go above 256/512 ?  byte limit for binary controls.&lt;br /&gt;
Extend for larger ? Do something about it. Action for ????? Tiwai/Mark ????&lt;br /&gt;
&lt;br /&gt;
MMAP for some parameters. Visualizer, peak meters. ? Multiple of 4k pages. &lt;br /&gt;
Can be used for DMA buffer positions on IPC IRQ based DSPs.&lt;br /&gt;
Avoid copying large amounts of data. trade off for DSP. Usable for DEBUG too.&lt;br /&gt;
Prototype and see what happens - Who ??&lt;br /&gt;
&lt;br /&gt;
Expose API for sending large chunks of data e.g. 2MB. Nice for generic code to send&lt;br /&gt;
this data (no special tooling) Needs new API for large data chunks. What about write().&lt;br /&gt;
Patrick to prototype some code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DSP resource management&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
Do we need pre-trigger to work out MIPS/MHz + buffer resources for DSP&lt;br /&gt;
resources. Tables used atm for most DSPs.&lt;br /&gt;
 &lt;br /&gt;
Something for policy or UCM to specify ? Could change for different FWs. &lt;br /&gt;
Peak and average loading gives difficulty. &lt;br /&gt;
&lt;br /&gt;
Might not get feedback, latency in the pipe and need to agree on units of&lt;br /&gt;
measurements. Complex problem. Estimate worst case.&lt;br /&gt;
&lt;br /&gt;
OMAP4 example uses DAPM, expose reource usage numbers, expose capability limits.&lt;br /&gt;
&lt;br /&gt;
Liam to publish clock resource management logic for Haswell DSP. Can be used as&lt;br /&gt;
starting point for investigations into feasibility etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HDMI - Hotplug&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Can cause changes to audio path. Do we need to tell userspace card has changed ?&lt;br /&gt;
Specific for ELD or generic problem ?&lt;br /&gt;
&lt;br /&gt;
Suggestion to remove and then insert card not usable&lt;br /&gt;
&lt;br /&gt;
Signal for monitor re-pluging, ELD not available right away. &lt;br /&gt;
How to sync ELD information, ELD time out signal ? DSPs can change capabilities,&lt;br /&gt;
ELDS can be garbage. PA maybe ask to quickly for ELD info, expose new jack for HDA&lt;br /&gt;
when ELD is known.  Generic event to tell userspace that card has changed.&lt;br /&gt;
HDA/MIMI specific solution.&lt;br /&gt;
&lt;br /&gt;
Generic API to talk between audio and DRM devices. Bespoke atm. Code lives in&lt;br /&gt;
the wrong place atm. Need to sync. Code is already upstream.&lt;br /&gt;
&lt;br /&gt;
David to prototype a solution based on deferring the probe until ELD is ready.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mic/LED hotkey&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Few different scenarios - from slides. Multiple cards and multiple mics. &lt;br /&gt;
Which Mic will LED represent ? card or system or other.&lt;br /&gt;
&lt;br /&gt;
We'll not use the LED class because it does not buy us anything: LED &lt;br /&gt;
class is writable for root only, and PA does not run as root.&lt;br /&gt;
 &lt;br /&gt;
Nobody seemed to have a firm convincing argument in any direction. As such,&lt;br /&gt;
keeping the current behaviour (reflect mute state of internal card) will be&lt;br /&gt;
kept for now.&lt;br /&gt;
&lt;br /&gt;
Alexander suggested looking at what NetworkManager does with the wifi-off&lt;br /&gt;
indicator in the presence of multiple wireless devices with&lt;br /&gt;
(potentially) their own wifi-off switches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Performance - Use case startup&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
Discussing optimisation from DPCM - users QC, TI and Intel. DSP can route to&lt;br /&gt;
multiple endpoints from a single PCM.&lt;br /&gt;
&lt;br /&gt;
Startup call back -&amp;gt; PCM -&amp;gt; FE -&amp;gt; BE. Then hw_params(), followed by prepare()&lt;br /&gt;
and trigger(). Cold start latency 113ms since some slow ops on QDSP are serialised.&lt;br /&gt;
Solution to shift some prepare() work into DAPM. DAPM ops are tun in parrallel&lt;br /&gt;
and a workq.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compressed offload&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
Video/Audio offload - pass audio timestamp. Metadata for QDSP stored at front of &lt;br /&gt;
compressed data by QC. Transport stream already supported by compressed API.&lt;br /&gt;
Timestamps may differ in DSP implementations. AV sync topic requested by V4Linux&lt;br /&gt;
for long time. Only discussed for PCM not offload, need TS for offload and support&lt;br /&gt;
of V4Linux guys.&lt;br /&gt;
&lt;br /&gt;
Compressed offload transcoding. - How do we specify this transform. New API for&lt;br /&gt;
userspace to spec output of decoder. All sorts of routing combinations are possible&lt;br /&gt;
making implementation very difficult. Query the the BE connected to the FE, we may&lt;br /&gt;
be able to call existing PCM API's on the BE PCM. Patrick to prototype some&lt;br /&gt;
code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Firmware based Kcontrols and Graphs&lt;br /&gt;
-----------------------------------&lt;br /&gt;
&lt;br /&gt;
Patches have been developed to attach Kcontrol and Graph meta data to DSP FW.&lt;br /&gt;
This allows single DSP driver to be used with multiple FWs without modification.&lt;br /&gt;
Patch V1 reviewed last year before TI layoff and we should be ready for V2 before&lt;br /&gt;
end of year.&lt;br /&gt;
&lt;br /&gt;
Consists of kernel patch and userspace tool to generate the control and graph&lt;br /&gt;
data. Current userspace tool is needing work to improve config generation.&lt;br /&gt;
There is no config file format at present. Paul and some Wolfson guys have&lt;br /&gt;
volunteered to assist in this effort. Code currently works on OMAP4 platforms.&lt;br /&gt;
&lt;br /&gt;
Kernel code is here (top 5 patches) :-&lt;br /&gt;
&lt;br /&gt;
https://git.kernel.org/cgit/linux/kernel/git/lrg/asoc.git/log/?h=topic/firmware&lt;br /&gt;
&lt;br /&gt;
Userspace tool is here :-&lt;br /&gt;
&lt;br /&gt;
git@gitorious.org:omap-audio/asoc-fw.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Clean up ALSA code&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
Move plugins to their projects - move ffmpeg plugin to ffmpeg  project, etc.&lt;br /&gt;
&lt;br /&gt;
Drivers, requests to move to device probe model, away from alsa model.&lt;br /&gt;
Need to reg dev files at end of driver creation. &lt;br /&gt;
Input susbsys uses possible method that could be copied. sysfs files need sync&lt;br /&gt;
to avoid races for creation. Agreement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Process, How do we work&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
Bug reports. Who looks at bugs. No takers.&lt;br /&gt;
&lt;br /&gt;
New mailing lists. Use filters to hide emails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Misc&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Softvol, add SND_CTL for no softvol in ctl open. Use alsa conf file or ctl.&lt;br /&gt;
Arun encouraged to revive the email thread on the topic.&lt;br /&gt;
&lt;br /&gt;
Possible bug where specially crafted javascript can set PA volume to 100%.&lt;br /&gt;
Defined pulseaudio behviour (Colin), related to flat volumes.&lt;br /&gt;
&lt;br /&gt;
New ASoC drivers must now use generic DMA engine PCM driver.&lt;br /&gt;
&lt;br /&gt;
Non atomic trigger requirments from DSP drivers. DSPs mostly sleep when performing&lt;br /&gt;
IPC and need a trigger call that can sleep. Patrick will investigate.&lt;br /&gt;
&lt;br /&gt;
Propagate errors from BEs to FEs. Patrick to investigate. This will also include&lt;br /&gt;
reporting underruns too.&lt;br /&gt;
&lt;br /&gt;
System restart for DSP FW crashes. This requires reloading all FW and trying to&lt;br /&gt;
recover all active streams. Patrick to investigate.&lt;br /&gt;
&lt;br /&gt;
Lennart asked about the support of audio &amp;quot;mute&amp;quot; via systemd session management, &lt;br /&gt;
like input and drm drivers already do. Takashi took a look at input evdev code, &lt;br /&gt;
and actually it's revoking instead of muting.  The advantage of revoking over&lt;br /&gt;
muting is that it's simpler and doesn't need the capability check, as far as he&lt;br /&gt;
read through discussion threads.  But Takashi is not sure whether revoking&lt;br /&gt;
behavior is good for PA at all.&lt;/div&gt;</summary>
		<author><name>Lrg</name></author>
	</entry>
</feed>