  <?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=Detailed_changes_v1.2.3.1_v1.2.3.2</id>
	<title>Detailed changes v1.2.3.1 v1.2.3.2 - 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=Detailed_changes_v1.2.3.1_v1.2.3.2"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.3.1_v1.2.3.2&amp;action=history"/>
	<updated>2026-04-11T16:56:52Z</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=Detailed_changes_v1.2.3.1_v1.2.3.2&amp;diff=7377&amp;oldid=prev</id>
		<title>Perex: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.3.1_v1.2.3.2&amp;diff=7377&amp;oldid=prev"/>
		<updated>2020-07-07T13:07:56Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:07, 7 July 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.3.1_v1.2.3.2&amp;diff=7376&amp;oldid=prev</id>
		<title>Perex at 13:07, 7 July 2020</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.3.1_v1.2.3.2&amp;diff=7376&amp;oldid=prev"/>
		<updated>2020-07-07T13:07:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed changelog between 1.2.3.1 and 1.2.3.2 releases=&lt;br /&gt;
=Changelog between 1.2.3.1 and 1.2.3.2 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
- Release v1.2.3.2&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Control API===&lt;br /&gt;
- control: Fix a bug that prevented namehint behaviour&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Looks like the documented behaviour was broken in commit 1ba513f9 in&lt;br /&gt;
 2006, with the introduction of multiple fields.&lt;br /&gt;
 &lt;br /&gt;
 I've chosen to match the described behaviour. Prior to this patch,&lt;br /&gt;
 using namehint could be made to work by exploiting the lack of escaping&lt;br /&gt;
 of the &amp;quot;name&amp;quot;, populating the other fields:&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;plug:front|DESCDo all conversions for front speakers&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 rather than that which is documented and presumed to be the intention&lt;br /&gt;
 for asoundrc files:&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;plug:front|Do all conversions for front speakers&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Everything seems to strongly suggest nobody is using this feature; I can&lt;br /&gt;
 find no working examples through a web search and probably someone&lt;br /&gt;
 would have hit this bug. It's not documented in configuration, only in&lt;br /&gt;
 the snd_device_name_hint() call. So it would probably clutter things to&lt;br /&gt;
 provide compatibility for the old behaviour.&lt;br /&gt;
 &lt;br /&gt;
 I have found it to be very useful since working in Chromium, where it is&lt;br /&gt;
 the only way to expose chosen ALSA devices to web applications.&lt;br /&gt;
 &lt;br /&gt;
 A temporary buffer is required to null-terminate the string.  I see no&lt;br /&gt;
 use of alloca() in the code, presumably to avoid unbounded stack size.&lt;br /&gt;
 So memory is allocated on the heap.&amp;lt;/code&amp;gt;&lt;br /&gt;
- control: Fix typos in the namehint example&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Ths &amp;quot;namehint&amp;quot; is a list, and there doesn't seem to have been any&lt;br /&gt;
 history where the separator would be a colon.&amp;lt;/code&amp;gt;&lt;br /&gt;
===PCM API===&lt;br /&gt;
- pcm: Annotate the _avail functions&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 I took time to understand these functions in the context of the&lt;br /&gt;
 rest of the code, which would have been a lot quicker with a comment&lt;br /&gt;
 like this.&amp;lt;/code&amp;gt;&lt;br /&gt;
- dsnoop: Make use of the (previously unused) function&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Match the equivalent funciton for playback. This is on the assumption&lt;br /&gt;
 that values should be capped at zero, which is what _rewindable()&lt;br /&gt;
 implements.&amp;lt;/code&amp;gt;&lt;br /&gt;
- dsnoop: Another bug where the empty, not full, part of the ringbuffer was observed&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 This looks like a simple mistake dating back to 2003 (commit 7470a5b9)&lt;br /&gt;
 where code originated from dmix.&amp;lt;/code&amp;gt;&lt;br /&gt;
- dsnoop: The stop threshold was not implemented correctly&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 The previous implementation would mean that stop_threshold behaved&lt;br /&gt;
 erratically. The intent is to detect that the buffer is too full,&lt;br /&gt;
 and stop.&lt;br /&gt;
 &lt;br /&gt;
 In practice, I don't think this was a bug in practice for applications&lt;br /&gt;
 which don't adjust the stop_threshold. The line above catches those cases.&amp;lt;/code&amp;gt;&lt;br /&gt;
- pcm: Annotate the _delay functions based on findings from the previous bug&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- dsnoop: The delay presented to snd_pcm_status_delay() was incorrect&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 This was the original bug that caused me to start looking at the&lt;br /&gt;
 ring buffer functions.&lt;br /&gt;
 &lt;br /&gt;
 In the API this is documented as:&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;Delay is distance between current application frame position and&lt;br /&gt;
    sound frame position. It's positive and less than buffer size in&lt;br /&gt;
    normal situation, negative on playback underrun and greater than&lt;br /&gt;
    buffer size on capture overrun. &amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Because dsnoop was returning the buffer space available to the hardware&lt;br /&gt;
 the return value was always quite large, and moved in the wrong&lt;br /&gt;
 direction.&lt;br /&gt;
 &lt;br /&gt;
 With this patch, dsnoop now gives results which are comparable to using&lt;br /&gt;
 the &amp;quot;hw&amp;quot; device directly. My test case was with snd-echo3g (Layla3G).&amp;lt;/code&amp;gt;&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
- ucm: Allow empty strings in &amp;quot;${var:...}&amp;quot; substitutions&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Recent ucm-conf changes introduce checks like this one in various places:&lt;br /&gt;
 &lt;br /&gt;
 If.mspk {&lt;br /&gt;
         Condition {&lt;br /&gt;
                 Type String&lt;br /&gt;
                 Empty &amp;quot;${var:MonoSpeaker}&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         True ...&lt;br /&gt;
         False ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 The 'Empty &amp;quot;${var:MonoSpeaker}&amp;quot;' part can only every succeed if we do:&lt;br /&gt;
 &lt;br /&gt;
 Define.MonoSpeaker &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 But so far that would result in an error like this one:&lt;br /&gt;
 &lt;br /&gt;
 ALSA lib ucm_subs.c:367:(uc_mgr_get_substituted_value) variable '${var:MonoSpeaker}' is not defined in this context!&lt;br /&gt;
 ALSA lib main.c:983:(snd_use_case_mgr_open) error: failed to import cht-bsw-rt5672 use case configuration -22&lt;br /&gt;
 alsaucm: error failed to open sound card cht-bsw-rt5672: Invalid argument&lt;br /&gt;
 &lt;br /&gt;
 This commit fixes this by allowing empty values for &amp;quot;${var:...}&amp;quot;&lt;br /&gt;
 substitutions.&lt;br /&gt;
 &lt;br /&gt;
 Tested-by: Pierre-Louis Bossart &amp;amp;lt;pierre-louis.bossart@linux.intel.com&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: implement AlwaysTrue Condition.Type&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: simplify get_by_card() in parser.c&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix the possible buffer overflow (substitution)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Configuration===&lt;br /&gt;
- alsa.conf: load /etc/asound.conf or /usr/etc/asound.conf not both&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- conf: Add /usr/etc to the default search paths&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 There's been some recent action to move the distribution-default setup&lt;br /&gt;
 from /etc to /usr/etc, and we should follow that, too.&lt;br /&gt;
 &lt;br /&gt;
 This patch adds /usr/etc/alsa.conf.d and /usr/etc/alsa.conf to the&lt;br /&gt;
 default search paths.&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
</feed>