  <?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.1.5_v1.1.6</id>
	<title>Detailed changes v1.1.5 v1.1.6 - 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.1.5_v1.1.6"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.1.5_v1.1.6&amp;action=history"/>
	<updated>2026-05-01T22:02:53Z</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.1.5_v1.1.6&amp;diff=7257&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.1.5_v1.1.6&amp;diff=7257&amp;oldid=prev"/>
		<updated>2018-04-04T06:54:00Z</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 06:54, 4 April 2018&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.1.5_v1.1.6&amp;diff=7256&amp;oldid=prev</id>
		<title>Perex at 06:54, 4 April 2018</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.1.5_v1.1.6&amp;diff=7256&amp;oldid=prev"/>
		<updated>2018-04-04T06:54:00Z</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.0.28 and 1.1.6 releases=&lt;br /&gt;
=Changelog between 1.0.29 and 1.1.6 releases=&lt;br /&gt;
==alsa-oss==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Documentation===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Mixer Emulation===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===OSS Redirection===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===PCM Emulation===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
=Detailed changelog between 1.1.5 and 1.1.6 releases=&lt;br /&gt;
=Changelog between 1.0.29 and 1.1.6 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
: - a set of fixes to reduce gcc warnings&lt;br /&gt;
:   &lt;br /&gt;
: - modules: smixer_python - add support for python3&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add chtrt5645-mono-speaker-analog-mic configuration&lt;br /&gt;
:   &lt;br /&gt;
:   Add a configuration for Cherry Trail boards which use a rt5645 codec&lt;br /&gt;
:   connected to a mono speaker and with an analog mic on IN2N + IN2P.&lt;br /&gt;
:   &lt;br /&gt;
:   The chtrt5645-mono-speaker-analog-mic/HiFi.conf for this is based on the&lt;br /&gt;
:   latest version from https://github.com/plbossart/UCM/tree/master/chtrt5645&lt;br /&gt;
:   with all the unused input options removed and some changes made to make&lt;br /&gt;
:   the analog mic work.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit also adds 2 ucm dirs with the longname of 2 boards known to use&lt;br /&gt;
:   this setup, which simply contain a symlink to the generic&lt;br /&gt;
:   chtrt5645-mono-speaker-analog-mic entry.&lt;br /&gt;
:   &lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add Gigabyte mobo UCM profile with dual HD-audio codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Like the previous Lenovo laptops, some Gigabyte mobos have dual&lt;br /&gt;
:   HD-audio codecs and need to switch dynamically via UCM profile.&lt;br /&gt;
:   Reuse the same profile as Lenovo dual codecs, so far.&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add dual HD-audio codecs config for Lenovo&lt;br /&gt;
:   &lt;br /&gt;
:   Some recent Lenovo laptops have dual codecs and we need to switch them&lt;br /&gt;
:   accordingly.  The kernel side already contains a fix and gives the&lt;br /&gt;
:   unique longname string for identifying the board, and here we hook up&lt;br /&gt;
:   the corresponding UCM profile.&lt;br /&gt;
:   &lt;br /&gt;
:   The profile was corrected and tested by Hui Wang on Lenovo p520.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Kailang &amp;amp;lt;kailang@realtek.com&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Hui Wang &amp;amp;lt;hui.wang@canonical.com&amp;amp;gt;&lt;br /&gt;
: - conf/ucm: Rearrange Makefile.am&lt;br /&gt;
:   &lt;br /&gt;
:   Just rearrange and split to multiple lines to make future patches&lt;br /&gt;
:   cleaner.  No actual code change.&lt;br /&gt;
:   &lt;br /&gt;
: - configure.ac: do not enable alisp code by default&lt;br /&gt;
:   &lt;br /&gt;
: - configure.ac: build extra mixer modules conditionally&lt;br /&gt;
:   &lt;br /&gt;
: - Change snd_dlopen() function to return the error string&lt;br /&gt;
:   &lt;br /&gt;
:   The dlopen() function might fail also for another reason than&lt;br /&gt;
:   a missing file, thus return the error string from dlerror().&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Control API===&lt;br /&gt;
: - control ext: fix the default .rawmidi_next_device callback&lt;br /&gt;
:   &lt;br /&gt;
:   The previous default settings caused an endless loop.&lt;br /&gt;
:   &lt;br /&gt;
: - control: Proper reference of internal versioned functions&lt;br /&gt;
:   &lt;br /&gt;
:   The multiply defined versioned symbols have to be called with&lt;br /&gt;
:   INTERNAL() wrapper.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the missing declarations of the internal forms of&lt;br /&gt;
:   snd_ctl_elem_info_get_dimension*() in the local header, and use them&lt;br /&gt;
:   in the (still remaining) callers in alisp.&lt;br /&gt;
:   &lt;br /&gt;
===HWDEP API===&lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
===Mixer API===&lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
===PCM API===&lt;br /&gt;
: - pcm: ioplug: Implement proper drain behavior&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the draining behavior of ioplug in the following&lt;br /&gt;
:   ways:&lt;br /&gt;
:   &lt;br /&gt;
:   - When no draining ioplug callback is defined, implement the draining&lt;br /&gt;
:   loop using snd_pcm_wait*() and sync with the drain finishes.&lt;br /&gt;
:   This is equivalent with the implementation in the kernel write().&lt;br /&gt;
:   Similarly as in kernel code, for non-blocking mode, it returns&lt;br /&gt;
:   immediately after setting DRAINING state.&lt;br /&gt;
:   &lt;br /&gt;
:   - The hw_ptr update function checks the PCM state and stops the stream&lt;br /&gt;
:   if the draining finishes.&lt;br /&gt;
:   &lt;br /&gt;
:   - When draining ioplug callback is defined, leave the whole draining&lt;br /&gt;
:   operation to it.  The callback is supposed to return -EAGAIN for&lt;br /&gt;
:   non-blocking case, too.&lt;br /&gt;
:   &lt;br /&gt;
:   - When an error happens during draining, it drops the stream, for a&lt;br /&gt;
:   safety reason.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: Skip avail_min check during draining&lt;br /&gt;
:   &lt;br /&gt;
:   snd_pcm_wait() &amp;amp; co checks the current avail value and returns&lt;br /&gt;
:   immediately if it satisfies &amp;amp;lt;= avail_min condition.  It's good in&lt;br /&gt;
:   general except for one situation: draining.  When the draining is&lt;br /&gt;
:   being performed in the non-blocking mode, apps are supposed to wait&lt;br /&gt;
:   via poll(), typically via snd_pcm_wait().  So this ends up with the&lt;br /&gt;
:   busy loop because of the immediate return from snd_pcm_wait().&lt;br /&gt;
:   &lt;br /&gt;
:   A simple workaround is to put the PCM state check and ignore the&lt;br /&gt;
:   avail_min condition if it's DRAINING state.  The equivalent check is&lt;br /&gt;
:   found in the kernel xfer code, too.&lt;br /&gt;
:   &lt;br /&gt;
: - a set of fixes to reduce gcc warnings&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: hw: Keep control data from kernel when SND_PCM_APPEND&lt;br /&gt;
:   &lt;br /&gt;
:   Without this fix the application pointer would be reseted&lt;br /&gt;
:   whenever an application opens a device with SND_PCM_APPEND.&lt;br /&gt;
:   &lt;br /&gt;
:   This would result in an Xrun if the device is already opened and&lt;br /&gt;
:   in running state and the appl_ptr is use.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: ioplug: update prepare and draining state correctly&lt;br /&gt;
:   &lt;br /&gt;
:   PREPARED should only be set when it is done and it was successfully.&lt;br /&gt;
:   &lt;br /&gt;
:   DRAINING should be signalled when starting to drain. There is no need to&lt;br /&gt;
:   check if draining was successfully because it will change to drop (SETUP)&lt;br /&gt;
:   in any case.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: Provide areas_copy function which handles buffer wrap around&lt;br /&gt;
:   &lt;br /&gt;
:   The already existing areas_copy functions do not care about the end of&lt;br /&gt;
:   the source and destination buffer.&lt;br /&gt;
:   Therefore the caller has to take care that the requested offset+size&lt;br /&gt;
:   is not exceeding any buffer limit.&lt;br /&gt;
:   &lt;br /&gt;
:   This additional function will take care about the end of an buffer&lt;br /&gt;
:   and will continue at the beginning of the buffer.&lt;br /&gt;
:   For example this is required when copying between buffers with&lt;br /&gt;
:   different sizes (not multiple of).&lt;br /&gt;
:   This is often the case in IO plugins like the JACK plugin.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: ioplug: Provide hw_avail helper function for plugins&lt;br /&gt;
:   &lt;br /&gt;
:   This function can be called without calling snd_pcm_avail_update().&lt;br /&gt;
:   &lt;br /&gt;
:   The call to snd_pcm_avail_update() can take some time.&lt;br /&gt;
:   Therefore some developers would not like to call it from a real-time&lt;br /&gt;
:   context (e.g. from JACK client context).&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: Do not access lock_enabled if thread safe API&lt;br /&gt;
:   &lt;br /&gt;
:   Without this commit compiling fails when THREAD_SAFE_API is not&lt;br /&gt;
:   enabled.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: ioplug: Use boundary for wrap around&lt;br /&gt;
:   &lt;br /&gt;
:   if requested by the IO plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Without this changes an IO plugin is not able to report&lt;br /&gt;
:   that buffer_size frames were read from the buffer.&lt;br /&gt;
:   When the buffer was full this is a valid action and&lt;br /&gt;
:   has not to be handled as an under run.&lt;br /&gt;
:   &lt;br /&gt;
:   For example when the hw_ptr will be updated with&lt;br /&gt;
:   hw_ptr += buffer_size&lt;br /&gt;
:   and it is using the buffer_size as wrap around&lt;br /&gt;
:   hw_ptr %= buffer_size&lt;br /&gt;
:   would result in the same value as before the add operation.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: another fix for the snd_pcm_area_silence() fast path&lt;br /&gt;
:   &lt;br /&gt;
:   The 64-bit fast path can be used only in limited conditions:&lt;br /&gt;
:   &lt;br /&gt;
:   - destination must be aligned to 64-bit (CPU aligned access)&lt;br /&gt;
:   - step must be equal to width&lt;br /&gt;
:   - physical with must be different than 24 (cannot be multiplied to 64)&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix a bug to copy silent samples aligned to 64&lt;br /&gt;
:   &lt;br /&gt;
:   bits for&lt;br /&gt;
:   24 bit sample cases&lt;br /&gt;
:   &lt;br /&gt;
:   A function of 'snd_pcm_area_silence()' has a fast path to copy silent data&lt;br /&gt;
:   efficiently. However, the fast path works well just for a case that target&lt;br /&gt;
:   buffer consists of data samples for which unit of data alignment is&lt;br /&gt;
:   divisors of 64 bits.&lt;br /&gt;
:   &lt;br /&gt;
:   At present, the fast path handles sample data aligned to 24 bit. In this&lt;br /&gt;
:   case, the buffer can includes extra 8 bits. This has no issue for 'signed'&lt;br /&gt;
:   case because silent data is zero, however it has an issue for 'unsigned'&lt;br /&gt;
:   case.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit fixes the bug by skipping cases of sample data of 24 bit.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: Fix two bugs in snd_pcm_area_silence()&lt;br /&gt;
:   &lt;br /&gt;
:   First, after silencing the buffer 64 bits at a time, any remaining samples&lt;br /&gt;
:   need to be silenced by the following width-specific code.  However, instead&lt;br /&gt;
:   of silencing the end of the buffer, the code instead re-silences the start&lt;br /&gt;
:   of the buffer, leaving the end unsilenced.  To fix this, update the pointer&lt;br /&gt;
:   used by the width-specific code to point to the end of the area just&lt;br /&gt;
:   silenced, instead of leaving it pointing to the start of the buffer.&lt;br /&gt;
:   &lt;br /&gt;
:   Second, the code for 24 bit samples can only silence a single sample, as&lt;br /&gt;
:   there's no loop for multiple samples as with other formats.  To fix this,&lt;br /&gt;
:   add a loop similar to the ones used for every other width.&lt;br /&gt;
:   &lt;br /&gt;
:   The symptoms of these bugs are random data at the end of every supposedly&lt;br /&gt;
:   silenced buffer with certain format/buffer size combinations, resulting in&lt;br /&gt;
:   pops and noise.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Takashi Sakamoto &amp;amp;lt;o-takashi@sakamocchi.jp&amp;amp;gt;&lt;br /&gt;
: - pcm: Return the consistent error code for unexpected PCM states&lt;br /&gt;
:   &lt;br /&gt;
:   Some PCM functions have the sanity check of the expected PCM states,&lt;br /&gt;
:   and most of them return -EBADFD if the current state doesn't match.&lt;br /&gt;
:   This is bad for some programs like aplay that expect the function&lt;br /&gt;
:   returning a proper code corresponding to the state, e.g. -ESTRPIPE for&lt;br /&gt;
:   the suspend.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch is an attempt to address such inconsistencies.  The sanity&lt;br /&gt;
:   checker bad_pcm_state() now returns the error code instead of bool, so&lt;br /&gt;
:   that the caller can pass the returned code as is.  And it calls a new&lt;br /&gt;
:   helper, pcm_state_to_error(), for obtaining the error code to certain&lt;br /&gt;
:   known PCM error state.&lt;br /&gt;
:   &lt;br /&gt;
:   While we're at it, use the new pcm_state_to_error() for simplifying&lt;br /&gt;
:   the existing code to retrieve the error code, too.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Mirza Krak &amp;amp;lt;mirza.krak@gmail.com&amp;amp;gt;&lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - timer: Proper reference of internal versioned symbols&lt;br /&gt;
:   &lt;br /&gt;
:   The multiply defined versioned symbols have to be called with&lt;br /&gt;
:   INTERNAL() wrapper.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the missing declarations of versioned timer API functions in the&lt;br /&gt;
:   local header, and use them in the callers in PCM.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix wrong comments for some cases of linear interpolation of PCM samples&lt;br /&gt;
:   &lt;br /&gt;
:   A commit 16b3bf447c28 ('Enhanced bitmasks in PCM - added support for more&lt;br /&gt;
:   formats by Takashi and me') adds support for some cases of linear&lt;br /&gt;
:   interpolation of PCM samples, however some of added comments are not&lt;br /&gt;
:   proper. This commit fixes them.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: remove unused macros of NORMS_LABELS/NORMS_END&lt;br /&gt;
:   &lt;br /&gt;
:   A commit fcd164e6229c (&amp;quot;Permit to PCM plug configuration to specify unchanged&lt;br /&gt;
:   parameters. Added support for RT signals to async interface. Added ops for&lt;br /&gt;
:   PCM mix.&amp;quot;) added a pair of NORMS_LABELS/NORMS_END, however they have been&lt;br /&gt;
:   no longer used.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit removes them in a point to reduce the amount of code to&lt;br /&gt;
:   maintain.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: remove unused macros of GETU_LABELS/GETU_END&lt;br /&gt;
:   &lt;br /&gt;
:   A commit 07c07da44f27 (&amp;quot;Fixed signess for route conversion&amp;quot;) obsoletes&lt;br /&gt;
:   usage of a pair of GETU_LABEL/GETU_END, but it did not remove some&lt;br /&gt;
:   actual codes in 'src/pcm_plugin_ops.h'.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit removes them in a point to reduce the amount of code to&lt;br /&gt;
:   maintain.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: remove unused macros of COPY_LABELS/COPY_END&lt;br /&gt;
:   &lt;br /&gt;
:   A commit 7b054f4dce56 obsoleted usage of a pair of COPY_LABELS/COPY_END,&lt;br /&gt;
:   however it did not remove some codes in 'src/pcm/plugin_ops.h'.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit removes them in a point to reduce the amount of code to&lt;br /&gt;
:   maintain.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: plug: add SND_PCM_FORMAT_{S, U}20 to linear_preferred_formats&lt;br /&gt;
:   &lt;br /&gt;
:   This commit adds the recently added formats SND_PCM_FORMAT_{S,U}20 to&lt;br /&gt;
:   the linear_preferred_formats array in pcm_plug.&lt;br /&gt;
:   Let's give them lower priority than more standard S24 formats but a higher&lt;br /&gt;
:   priority than less typical 3-byte versions.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Takashi Sakamoto &amp;amp;lt;o-takashi@sakamocchi.jp&amp;amp;gt;&lt;br /&gt;
: - pcm: linear, route: handle linear formats with 20-bit sample on 4 bytes&lt;br /&gt;
:   &lt;br /&gt;
:   The previous patch has added 20-bit PCM formats SND_PCM_FORMAT_{S,U}20 to&lt;br /&gt;
:   alsa-lib.&lt;br /&gt;
:   We need to extend the linear format conversion code with handling of these&lt;br /&gt;
:   sample formats so they can also be utilized by applications that only&lt;br /&gt;
:   recognize the more typical ones like SND_PCM_FORMAT_S16.&lt;br /&gt;
:   &lt;br /&gt;
:   Since the conversion arrays are indexed by a format bit width divided by 8&lt;br /&gt;
:   the easiest way to handle these formats is to treat them like they were&lt;br /&gt;
:   40-bit wide (the next free integer multiple of 8 bits).&lt;br /&gt;
:   This doesn't create a collision risk with a future format since there can't&lt;br /&gt;
:   really be a 40-bit sample format that occupies 4 bytes.&lt;br /&gt;
:   &lt;br /&gt;
:   Make sure we use the getput conversion method for these formats since a&lt;br /&gt;
:   direct conversion from / to them is not supported.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Takashi Sakamoto &amp;amp;lt;o-takashi@sakamocchi.jp&amp;amp;gt;&lt;br /&gt;
: - pcm: add and describe SND_PCM_FORMAT_{S, U}20&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds and describes in various functions that query format&lt;br /&gt;
:   properties SND_PCM_FORMAT_{S,U}20 formats that were recently added to the&lt;br /&gt;
:   kernel as SNDRV_PCM_FORMAT_{S,U}20.&lt;br /&gt;
:   &lt;br /&gt;
:   These formats are similar to existing 20-bit PCM formats&lt;br /&gt;
:   SND_PCM_FORMAT_{S,U}20_3, however they occupy 4 bytes instead of 3.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Takashi Sakamoto &amp;amp;lt;o-takashi@sakamocchi.jp&amp;amp;gt;&lt;br /&gt;
: - pcm: route: Fix use_getput flag computation for 3 byte formats&lt;br /&gt;
:   &lt;br /&gt;
:   Commit de63b942acf520 (&amp;quot;pcm: route: Use get/put labels for all 3 byte formats&amp;quot;)&lt;br /&gt;
:   wanted to make the route plugin use get / put labels not only for 24-bit&lt;br /&gt;
:   physical width formats but also for 18 and 20-bit ones.&lt;br /&gt;
:   There was, however, a typo in that commit so a check for these widths&lt;br /&gt;
:   didn't really work.&lt;br /&gt;
:   &lt;br /&gt;
:   Let's fix it now.&lt;br /&gt;
:   &lt;br /&gt;
===Timer API===&lt;br /&gt;
: - timer: Proper reference of internal versioned symbols&lt;br /&gt;
:   &lt;br /&gt;
:   The multiply defined versioned symbols have to be called with&lt;br /&gt;
:   INTERNAL() wrapper.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the missing declarations of versioned timer API functions in the&lt;br /&gt;
:   local header, and use them in the callers in PCM.&lt;br /&gt;
:   &lt;br /&gt;
===Topology API===&lt;br /&gt;
: - a set of fixes to reduce gcc warnings&lt;br /&gt;
:   &lt;br /&gt;
: - topology: Fix parsing config with multiple hw_configs&lt;br /&gt;
:   &lt;br /&gt;
:   Currently, if the config file includes several hw_configs sections,&lt;br /&gt;
:   parse_hw_config_refs() returns after parsing only the first section.&lt;br /&gt;
:   &lt;br /&gt;
:   For example, the following config, based on&lt;br /&gt;
:   alsa-lib/src/conf/topology/broadwell/broadwell.conf, is parsed incorrectly:&lt;br /&gt;
:   &lt;br /&gt;
:   ~~~~&lt;br /&gt;
:   SectionHWConfig.&amp;quot;CodecHWConfig&amp;quot; {&lt;br /&gt;
:   id &amp;quot;1&amp;quot;&lt;br /&gt;
:   format &amp;quot;I2S&amp;quot;            # physical audio format.&lt;br /&gt;
:   bclk   &amp;quot;master&amp;quot;         # Platform is master of bit clock&lt;br /&gt;
:   fsync  &amp;quot;master&amp;quot;         # platform is master of fsync&lt;br /&gt;
:   }&lt;br /&gt;
:   &lt;br /&gt;
:   SectionHWConfig.&amp;quot;CodecHWConfig2&amp;quot; {&lt;br /&gt;
:   id &amp;quot;2&amp;quot;&lt;br /&gt;
:   format &amp;quot;AC97&amp;quot;&lt;br /&gt;
:   }&lt;br /&gt;
:   &lt;br /&gt;
:   SectionLink.&amp;quot;Codec&amp;quot; {&lt;br /&gt;
:   &lt;br /&gt;
:   # used for binding to the physical link&lt;br /&gt;
:   id &amp;quot;0&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   hw_configs [&lt;br /&gt;
:   &amp;quot;CodecHWConfig&amp;quot;&lt;br /&gt;
:   &amp;quot;CodecHWConfig2&amp;quot;&lt;br /&gt;
:   ]&lt;br /&gt;
:   &lt;br /&gt;
:   default_hw_conf_id &amp;quot;2&amp;quot;&lt;br /&gt;
:   }&lt;br /&gt;
:   ~~~~&lt;br /&gt;
:   &lt;br /&gt;
: - topology: Fix to skip writing of header for compound elements&lt;br /&gt;
:   &lt;br /&gt;
:   While calculating the size of data to be written into the topology&lt;br /&gt;
:   binary file, the size of the compound elements is added as well. This&lt;br /&gt;
:   results in wrong file offset calculation and topology build failure.&lt;br /&gt;
:   &lt;br /&gt;
:   The compound elements shouldn't be written to the topology as these are&lt;br /&gt;
:   already embedded as part of other elements. So, skip adding the size of&lt;br /&gt;
:   compound elements to the file offset size calculation.&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Lisp===&lt;br /&gt;
: - control: Proper reference of internal versioned functions&lt;br /&gt;
:   &lt;br /&gt;
:   The multiply defined versioned symbols have to be called with&lt;br /&gt;
:   INTERNAL() wrapper.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the missing declarations of the internal forms of&lt;br /&gt;
:   snd_ctl_elem_info_get_dimension*() in the local header, and use them&lt;br /&gt;
:   in the (still remaining) callers in alisp.&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Server===&lt;br /&gt;
: - a set of fixes to reduce gcc warnings&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Compatibility routines===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Configuration===&lt;br /&gt;
: - conf: USB-Audio: Add second S/PDIF device on Phiree U2SX&lt;br /&gt;
:   &lt;br /&gt;
:   Phiree U2SX is the successor of Phiree U2 and has the same unusual&lt;br /&gt;
:   configuration.&lt;br /&gt;
:   &lt;br /&gt;
:   See ea865bba4615d906144ae5d4f72a4aad2baffe1f for reference.&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add chtrt5645-mono-speaker-analog-mic configuration&lt;br /&gt;
:   &lt;br /&gt;
:   Add a configuration for Cherry Trail boards which use a rt5645 codec&lt;br /&gt;
:   connected to a mono speaker and with an analog mic on IN2N + IN2P.&lt;br /&gt;
:   &lt;br /&gt;
:   The chtrt5645-mono-speaker-analog-mic/HiFi.conf for this is based on the&lt;br /&gt;
:   latest version from https://github.com/plbossart/UCM/tree/master/chtrt5645&lt;br /&gt;
:   with all the unused input options removed and some changes made to make&lt;br /&gt;
:   the analog mic work.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit also adds 2 ucm dirs with the longname of 2 boards known to use&lt;br /&gt;
:   this setup, which simply contain a symlink to the generic&lt;br /&gt;
:   chtrt5645-mono-speaker-analog-mic entry.&lt;br /&gt;
:   &lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add Gigabyte mobo UCM profile with dual HD-audio codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Like the previous Lenovo laptops, some Gigabyte mobos have dual&lt;br /&gt;
:   HD-audio codecs and need to switch dynamically via UCM profile.&lt;br /&gt;
:   Reuse the same profile as Lenovo dual codecs, so far.&lt;br /&gt;
:   &lt;br /&gt;
: - conf/ucm: Add dual HD-audio codecs config for Lenovo&lt;br /&gt;
:   &lt;br /&gt;
:   Some recent Lenovo laptops have dual codecs and we need to switch them&lt;br /&gt;
:   accordingly.  The kernel side already contains a fix and gives the&lt;br /&gt;
:   unique longname string for identifying the board, and here we hook up&lt;br /&gt;
:   the corresponding UCM profile.&lt;br /&gt;
:   &lt;br /&gt;
:   The profile was corrected and tested by Hui Wang on Lenovo p520.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Kailang &amp;amp;lt;kailang@realtek.com&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Hui Wang &amp;amp;lt;hui.wang@canonical.com&amp;amp;gt;&lt;br /&gt;
: - conf/ucm: Rearrange Makefile.am&lt;br /&gt;
:   &lt;br /&gt;
:   Just rearrange and split to multiple lines to make future patches&lt;br /&gt;
:   cleaner.  No actual code change.&lt;br /&gt;
:   &lt;br /&gt;
: - configure.ac: build extra mixer modules conditionally&lt;br /&gt;
:   &lt;br /&gt;
: - Change snd_dlopen() function to return the error string&lt;br /&gt;
:   &lt;br /&gt;
:   The dlopen() function might fail also for another reason than&lt;br /&gt;
:   a missing file, thus return the error string from dlerror().&lt;br /&gt;
:   &lt;br /&gt;
===Documentation===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Dynamic Loader helpers===&lt;br /&gt;
: - core: Proper reference of internal snd_dlopen()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_dlopen() was recently rewritten to be versioned symbols, and we&lt;br /&gt;
:   have to call it with INTERNAL() wrapper from the library itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Add the proper declaration in the local header and fix the callers&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
===External PCM I/O Plugin SDK===&lt;br /&gt;
: - pcm: ioplug: Provide hw_avail helper function for plugins&lt;br /&gt;
:   &lt;br /&gt;
:   This function can be called without calling snd_pcm_avail_update().&lt;br /&gt;
:   &lt;br /&gt;
:   The call to snd_pcm_avail_update() can take some time.&lt;br /&gt;
:   Therefore some developers would not like to call it from a real-time&lt;br /&gt;
:   context (e.g. from JACK client context).&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: ioplug: Use boundary for wrap around&lt;br /&gt;
:   &lt;br /&gt;
:   if requested by the IO plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Without this changes an IO plugin is not able to report&lt;br /&gt;
:   that buffer_size frames were read from the buffer.&lt;br /&gt;
:   When the buffer was full this is a valid action and&lt;br /&gt;
:   has not to be handled as an under run.&lt;br /&gt;
:   &lt;br /&gt;
:   For example when the hw_ptr will be updated with&lt;br /&gt;
:   hw_ptr += buffer_size&lt;br /&gt;
:   and it is using the buffer_size as wrap around&lt;br /&gt;
:   hw_ptr %= buffer_size&lt;br /&gt;
:   would result in the same value as before the add operation.&lt;br /&gt;
:   &lt;br /&gt;
===Kernel Headers===&lt;br /&gt;
: - asound.h: add SNDRV_PCM_FORMAT_{S, U}20&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds definitions of 20-bit, 4-byte PCM formats&lt;br /&gt;
:   SNDRV_PCM_FORMAT_{S,U}20, that were recently added to the kernel, to&lt;br /&gt;
:   alsa-lib's own copy of asound.h.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Takashi Sakamoto &amp;amp;lt;o-takashi@sakamocchi.jp&amp;amp;gt;&lt;br /&gt;
===Simple Abstraction Mixer Modules===&lt;br /&gt;
: - modules: smixer_python - add support for python3&lt;br /&gt;
:   &lt;br /&gt;
: - configure.ac: build extra mixer modules conditionally&lt;br /&gt;
:   &lt;br /&gt;
: - Change snd_dlopen() function to return the error string&lt;br /&gt;
:   &lt;br /&gt;
:   The dlopen() function might fail also for another reason than&lt;br /&gt;
:   a missing file, thus return the error string from dlerror().&lt;br /&gt;
:   &lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: - test: correct emulation for channel-map TLV&lt;br /&gt;
:   &lt;br /&gt;
:   Current implementation of channel-map TLV on test program is not valid.&lt;br /&gt;
:   Furthermore, it brings buffer-over-run due to byte counting.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit fixes it.&lt;br /&gt;
:   &lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: - alsactl: Only start restore service when asoundrc file exists&lt;br /&gt;
:   &lt;br /&gt;
:   This solves the chicken and egg problem on fresh installations whereby&lt;br /&gt;
:   the alsa state file does not yet exist, and alsa-restore unit attempted&lt;br /&gt;
:   to launch without first having a state file.&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===ALSA RawMidi Utility (amidi)===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Speaker Test===&lt;br /&gt;
: - speaker-test: Refactor the tone-generator codes&lt;br /&gt;
:   &lt;br /&gt;
:   There are many redundant open codes in speaker-test for performing the&lt;br /&gt;
:   similar things, and especially the tone generator codes are ugly.&lt;br /&gt;
:   Let's clean up a bit.  This patch combines all open-codes into a&lt;br /&gt;
:   single common helper with the callback for generating the tone.&lt;br /&gt;
:   &lt;br /&gt;
===alsaloop===&lt;br /&gt;
: - alsaloop: fix a typo in the comparison&lt;br /&gt;
:   &lt;br /&gt;
:   Hello maintainers,&lt;br /&gt;
:   &lt;br /&gt;
:   I would like to suggest you a patch which fixes a typo in the alsa-utils&lt;br /&gt;
:   alsaloop.&lt;br /&gt;
:   &lt;br /&gt;
:   Best Regards,&lt;br /&gt;
:   Kirill Marinushkin&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===amixer===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: - aplay: Fix wav file not being split on 32 bit platforms&lt;br /&gt;
:   &lt;br /&gt;
:   On my 32 bit armhf board arecord exits because of write() returning EFBIG&lt;br /&gt;
:   when the output file size reaches 2147483647 bytes.&lt;br /&gt;
:   &lt;br /&gt;
:   To fix this, include generated header file before system header files&lt;br /&gt;
:   so that _FILE_OFFSET_BITS=64 is used properly, as required in documentation&lt;br /&gt;
:   &amp;quot;man feature_test_macros&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Adjust sample rate limits to support newer hardware&lt;br /&gt;
:   &lt;br /&gt;
:   There are number of devices that support up to 384 kHz sampling rate and&lt;br /&gt;
:   some devices up to 768 kHz sampling rate. This patch increases sanity&lt;br /&gt;
:   check limit to 768k in order to support testing of such hardware.&lt;br /&gt;
:   &lt;br /&gt;
===bat (basic audio tester)===&lt;br /&gt;
: - bat: alsa.c - move the thread cleanup pop before goto exit3&lt;br /&gt;
:   &lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
: - Makefile: fix version file creation&lt;br /&gt;
:   &lt;br /&gt;
===Digigram Echo Mixer===&lt;br /&gt;
: - echomixer: add .desktop and icon files&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Envy24 Control===&lt;br /&gt;
: - envy24control: add .desktop and icon files&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: - hdajackretask: add .desktop and icon files&lt;br /&gt;
:   &lt;br /&gt;
===HDA Jack Sense Test===&lt;br /&gt;
: - hdajacksensetest: add gitcompile to EXTRA_DIST&lt;br /&gt;
:   &lt;br /&gt;
:   The gitcompile script is used from the top-level Makefile, so it needs&lt;br /&gt;
:   to be included in the tarball.&lt;br /&gt;
:   &lt;br /&gt;
===as10k1 (EMU10K1+ DSP Assembler)===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===hdspconf===&lt;br /&gt;
: - hdspconf: move .desktop and icon files to desktop, use modern destination for icons&lt;br /&gt;
:   &lt;br /&gt;
: - hdspconf, hdspmixer: validate the .desktop files&lt;br /&gt;
:   &lt;br /&gt;
===hdspmixer===&lt;br /&gt;
: - hdspmixer: move .desktop and icon files to desktop, use modern destination for icons&lt;br /&gt;
:   &lt;br /&gt;
: - hdspconf, hdspmixer: validate the .desktop files&lt;br /&gt;
:   &lt;br /&gt;
===hwmixvolume===&lt;br /&gt;
: - hwmixvolume: add .desktop and icon files&lt;br /&gt;
:   &lt;br /&gt;
:   Resized version of public domain clipart found here:&lt;br /&gt;
:   http://www.openclipart.org/detail/17428&lt;br /&gt;
:   &lt;br /&gt;
: - hwmixvolume: use python2 directly&lt;br /&gt;
:   &lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===A52 Output plugin===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Arcam AV control plugin===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Jack PCM plugin===&lt;br /&gt;
: - jack: Use correct parameter order for snd_pcm_areas_silence()&lt;br /&gt;
:   &lt;br /&gt;
:   Without this fix it will sometimes fail with a segmentation fault.&lt;br /&gt;
:   &lt;br /&gt;
: - jack: Report Xruns to user application&lt;br /&gt;
:   &lt;br /&gt;
:   Only increasing the hw_ptr is not sufficient&lt;br /&gt;
:   because it will not be evaluated by the ALSA library&lt;br /&gt;
:   to detect an Xrun.&lt;br /&gt;
:   &lt;br /&gt;
:   In addition there is a raise where an Xrun detected by the JACK thread&lt;br /&gt;
:   could not be detected in the ALSA thread.&lt;br /&gt;
:   - In playback use case&lt;br /&gt;
:   - The hw_ptr will be increased by the JACK thread&lt;br /&gt;
:   (hw_ptr &amp;amp;gt; appl_ptr =&amp;amp;gt; Xrun)&lt;br /&gt;
:   - But the ALSA thread increases the appl_ptr before evaluating the&lt;br /&gt;
:   hw_ptr&lt;br /&gt;
:   - Therefore the hw_ptr &amp;amp;lt; appl_ptr again&lt;br /&gt;
:   - ALSA will not detect the Xrun which was already detected by the&lt;br /&gt;
:   JACK thread&lt;br /&gt;
:   &lt;br /&gt;
:   Therefore an additional variable is required to report an Xrun from the&lt;br /&gt;
:   JACK thread to ALSA.&lt;br /&gt;
:   &lt;br /&gt;
: - jack: Do not Xrun the ALSA buffer&lt;br /&gt;
:   &lt;br /&gt;
:   when the JACK thread is requesting too many audio frames&lt;br /&gt;
:   &lt;br /&gt;
:   Playback:&lt;br /&gt;
:   Without this commit the ALSA audio buffer will be played with endless&lt;br /&gt;
:   repeats as long as the user application has not provided new audio data.&lt;br /&gt;
:   Therefore this garbage will be played as long as the user application has&lt;br /&gt;
:   not called snd_pcm_stop() after an Xrun. With this fix the rest of the&lt;br /&gt;
:   JACK buffer will be filled with silence.&lt;br /&gt;
:   &lt;br /&gt;
:   Capture:&lt;br /&gt;
:   Without this commit the audio data in the ALSA buffer would be&lt;br /&gt;
:   overwritten. With this commit the new data from the JACK buffer will not&lt;br /&gt;
:   be copied. Therefore the existing data in the ALSA buffer will not be&lt;br /&gt;
:   overwritten.&lt;br /&gt;
:   &lt;br /&gt;
: - jack: Use boundary as hw_ptr wrap around&lt;br /&gt;
:   &lt;br /&gt;
:   instead of using buffer_size as wrap around.&lt;br /&gt;
:   &lt;br /&gt;
:   This is required to detect Xruns.&lt;br /&gt;
:   &lt;br /&gt;
:   It is also required to allow the JACK thread&lt;br /&gt;
:   to processes the whole ALSA audio buffer at once&lt;br /&gt;
:   without calling snd_pcm_avail_update() in between.&lt;br /&gt;
:   &lt;br /&gt;
:   For example when the hw_ptr will be updated with&lt;br /&gt;
:   hw_ptr += buffer_size&lt;br /&gt;
:   and it is using the buffer_size as wrap around&lt;br /&gt;
:   hw_ptr %= buffer_size&lt;br /&gt;
:   would result in the same value as before the add operation.&lt;br /&gt;
:   &lt;br /&gt;
:   Due to that the user application would not recognize&lt;br /&gt;
:   that the complete audio buffer was copied.&lt;br /&gt;
:   &lt;br /&gt;
: - jack: Write only valid values to the internal hw_ptr&lt;br /&gt;
:   &lt;br /&gt;
:   Otherwise the ALSA thread could for example read a hw_ptr &amp;amp;gt;&lt;br /&gt;
:   buffer_size&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
==tinycompress==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
===Utilities===&lt;br /&gt;
: - cplay: make get_codec_iec return void&lt;br /&gt;
:   &lt;br /&gt;
:   get_codec_iec() doesn't return anything, so make return type as void&lt;br /&gt;
:   &lt;br /&gt;
: - cplay: support IEC61937 format&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds very simple supports for IEC61937 S/PDIF format.&lt;br /&gt;
:   &lt;br /&gt;
:   The cplay just specifies the format ID and sends audio data to ALSA.&lt;br /&gt;
:   There is no check the audio data is valid or invalid as IEC61937&lt;br /&gt;
:   specifications.&lt;br /&gt;
:   &lt;br /&gt;
: - cplay: move around MP3 header parsing method&lt;br /&gt;
:   &lt;br /&gt;
:   This patch moves MP3 parsing method for -I option, this is for&lt;br /&gt;
:   adding other codec ID in the future.&lt;br /&gt;
:   &lt;br /&gt;
: - cplay: add option to specify codec ID&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds a -I command line option to set the codec ID,&lt;br /&gt;
:   same as crecord.&lt;br /&gt;
:   &lt;br /&gt;
: - cplay: fix size and nmemb of mp3 header of fread&lt;br /&gt;
:   &lt;br /&gt;
:   This patch swaps 'size' and 'nmemb' arguments of fread.&lt;br /&gt;
:   The fread returns always 1 (because 'nmemb' is 1) so checking&lt;br /&gt;
:   the return value is always failure.&lt;br /&gt;
:   &lt;br /&gt;
=Detailed changelog between 1.0.29 and 1.1.6 releases=&lt;br /&gt;
=Changelog between 1.0.29 and 1.1.6 releases=&lt;br /&gt;
==alsa-python==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.1.6&lt;br /&gt;
:   &lt;br /&gt;
: - setup: add some missing fields, add header files from pyalsa to MANIFEST&lt;br /&gt;
:   &lt;br /&gt;
: - setup.py: check for the existence of the build directory&lt;br /&gt;
:   &lt;br /&gt;
: - common.h: fix InternFromString()&lt;br /&gt;
:   &lt;br /&gt;
===Documentation===&lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===Test python scripts===&lt;br /&gt;
: - hctltest2: use 'hw:0' device instead 'default'&lt;br /&gt;
:   &lt;br /&gt;
===pyalsa.alsacard module===&lt;br /&gt;
: - initial python3 support&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===pyalsa.alsacontrol module===&lt;br /&gt;
: - fix tp_free() calls, remove wrong PyObject_GC_Del use&lt;br /&gt;
:   &lt;br /&gt;
: - initial python3 support&lt;br /&gt;
:   &lt;br /&gt;
: - Change FSF address (Franklin Street)&lt;br /&gt;
:   &lt;br /&gt;
===pyalsa.alsahcontrol module===&lt;br /&gt;
: - fix tp_free() calls, remove wrong PyObject_GC_Del use&lt;br /&gt;
:   &lt;br /&gt;
===pyalsa.alsaseq module===&lt;br /&gt;
: - alsaseq: simplify TCONSTADD&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
</feed>