Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-SoundCard for openSUSE:Factory checked in at 2021-08-29 21:33:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-SoundCard (Old)
and /work/SRC/openSUSE:Factory/.python-SoundCard.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-SoundCard"
Sun Aug 29 21:33:59 2021 rev:8 rq:914854 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-SoundCard/python-SoundCard.changes 2021-03-05 13:45:35.163639088 +0100
+++ /work/SRC/openSUSE:Factory/.python-SoundCard.new.1899/python-SoundCard.changes 2021-08-29 21:34:13.594699269 +0200
@@ -1,0 +2,9 @@
+Wed Aug 25 08:51:57 UTC 2021 - John Paul Adrian Glaubitz
+
+- Update to 0.4.1:
+ * fixes freezing bug on Linux during startup
+ * improves error reporting on Linux
+ * fixes crash due to use-after-free on Linux
+ * fixes unicode error on Windows
+
+-------------------------------------------------------------------
Old:
----
SoundCard-0.4.0.tar.gz
New:
----
SoundCard-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-SoundCard.spec ++++++
--- /var/tmp/diff_new_pack.5pjpFY/_old 2021-08-29 21:34:14.070699928 +0200
+++ /var/tmp/diff_new_pack.5pjpFY/_new 2021-08-29 21:34:14.070699928 +0200
@@ -22,7 +22,7 @@
%define skip_python36 1
%endif
Name: python-SoundCard
-Version: 0.4.0
+Version: 0.4.1
Release: 0
Summary: Python package to play and record audio
License: BSD-3-Clause
++++++ SoundCard-0.4.0.tar.gz -> SoundCard-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/PKG-INFO new/SoundCard-0.4.1/PKG-INFO
--- old/SoundCard-0.4.0/PKG-INFO 2020-05-26 08:39:19.095513000 +0200
+++ new/SoundCard-0.4.1/PKG-INFO 2021-03-14 13:40:59.074842700 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: SoundCard
-Version: 0.4.0
+Version: 0.4.1
Summary: Play and record audio without resorting to CPython extensions
Home-page: https://github.com/bastibe/SoundCard
Author: Bastian Bechtold
@@ -157,6 +157,19 @@
channels for both playback and recording. CoreAudio/macOS defines channel ``-1``
as silence for both playback and recording.
+ FAQ
+ ---
+ Q: How to make it work on a headless Raspberry Pi?
+
+ A: PulseAudio is not installed by default on the Raspberry Pi OS Lite distribution (https://www.raspberrypi.org/software/operating-systems/). In order to use ``soundcard``, you have to install PulseAudio first, and edit the configuration (with a fix to avoid the main output to be in mono-only). ::
+
+ sudo apt install -y python3-pip python3-numpy pulseaudio
+ sudo nano /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf
+ # comment the block [Mapping analog-mono] with ';'
+ pulseaudio -D
+ python3 -m pip install soundcard
+
+
Known Issues:
-------------
@@ -202,6 +215,14 @@
(Thank you, Bob Thomas!)
- 2020-05-19 adds compatibility with Windows 7
(Thank you, demberto!)
+ - 2020-07-22 fixes freezing bug on Linux during startup
+ (Thank you, zhujisheng!)
+ - 2020-08-01 improves error reporting on Linux
+ (Thank you, Rik van Riel!)
+ - 2020-08-13 fixes crash due to use-after-free on Linux
+ (Thank you, Rik van Riel!)
+ - 2021-01-13 fixes unicode error on Windows
+ (Thank you, paulzzh!)
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/README.rst new/SoundCard-0.4.1/README.rst
--- old/SoundCard-0.4.0/README.rst 2020-05-26 08:37:41.000000000 +0200
+++ new/SoundCard-0.4.1/README.rst 2021-03-14 13:37:19.000000000 +0100
@@ -150,6 +150,19 @@
channels for both playback and recording. CoreAudio/macOS defines channel ``-1``
as silence for both playback and recording.
+FAQ
+---
+Q: How to make it work on a headless Raspberry Pi?
+
+A: PulseAudio is not installed by default on the Raspberry Pi OS Lite distribution (https://www.raspberrypi.org/software/operating-systems/). In order to use ``soundcard``, you have to install PulseAudio first, and edit the configuration (with a fix to avoid the main output to be in mono-only). ::
+
+ sudo apt install -y python3-pip python3-numpy pulseaudio
+ sudo nano /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf
+ # comment the block [Mapping analog-mono] with ';'
+ pulseaudio -D
+ python3 -m pip install soundcard
+
+
Known Issues:
-------------
@@ -195,3 +208,11 @@
(Thank you, Bob Thomas!)
- 2020-05-19 adds compatibility with Windows 7
(Thank you, demberto!)
+- 2020-07-22 fixes freezing bug on Linux during startup
+ (Thank you, zhujisheng!)
+- 2020-08-01 improves error reporting on Linux
+ (Thank you, Rik van Riel!)
+- 2020-08-13 fixes crash due to use-after-free on Linux
+ (Thank you, Rik van Riel!)
+- 2021-01-13 fixes unicode error on Windows
+ (Thank you, paulzzh!)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/SoundCard.egg-info/PKG-INFO new/SoundCard-0.4.1/SoundCard.egg-info/PKG-INFO
--- old/SoundCard-0.4.0/SoundCard.egg-info/PKG-INFO 2020-05-26 08:39:18.000000000 +0200
+++ new/SoundCard-0.4.1/SoundCard.egg-info/PKG-INFO 2021-03-14 13:40:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: SoundCard
-Version: 0.4.0
+Version: 0.4.1
Summary: Play and record audio without resorting to CPython extensions
Home-page: https://github.com/bastibe/SoundCard
Author: Bastian Bechtold
@@ -157,6 +157,19 @@
channels for both playback and recording. CoreAudio/macOS defines channel ``-1``
as silence for both playback and recording.
+ FAQ
+ ---
+ Q: How to make it work on a headless Raspberry Pi?
+
+ A: PulseAudio is not installed by default on the Raspberry Pi OS Lite distribution (https://www.raspberrypi.org/software/operating-systems/). In order to use ``soundcard``, you have to install PulseAudio first, and edit the configuration (with a fix to avoid the main output to be in mono-only). ::
+
+ sudo apt install -y python3-pip python3-numpy pulseaudio
+ sudo nano /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf
+ # comment the block [Mapping analog-mono] with ';'
+ pulseaudio -D
+ python3 -m pip install soundcard
+
+
Known Issues:
-------------
@@ -202,6 +215,14 @@
(Thank you, Bob Thomas!)
- 2020-05-19 adds compatibility with Windows 7
(Thank you, demberto!)
+ - 2020-07-22 fixes freezing bug on Linux during startup
+ (Thank you, zhujisheng!)
+ - 2020-08-01 improves error reporting on Linux
+ (Thank you, Rik van Riel!)
+ - 2020-08-13 fixes crash due to use-after-free on Linux
+ (Thank you, Rik van Riel!)
+ - 2021-01-13 fixes unicode error on Windows
+ (Thank you, paulzzh!)
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/SoundCard.egg-info/requires.txt new/SoundCard-0.4.1/SoundCard.egg-info/requires.txt
--- old/SoundCard-0.4.0/SoundCard.egg-info/requires.txt 2020-05-26 08:39:18.000000000 +0200
+++ new/SoundCard-0.4.1/SoundCard.egg-info/requires.txt 2021-03-14 13:40:57.000000000 +0100
@@ -1,2 +1,2 @@
-cffi
numpy
+cffi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/setup.py new/SoundCard-0.4.1/setup.py
--- old/SoundCard-0.4.0/setup.py 2020-05-26 08:37:56.000000000 +0200
+++ new/SoundCard-0.4.1/setup.py 2021-03-14 13:32:12.000000000 +0100
@@ -2,7 +2,7 @@
setup(
name='SoundCard',
- version='0.4.0',
+ version='0.4.1',
description='Play and record audio without resorting to CPython extensions',
author='Bastian Bechtold',
url='https://github.com/bastibe/SoundCard',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/soundcard/mediafoundation.py new/SoundCard-0.4.1/soundcard/mediafoundation.py
--- old/SoundCard-0.4.0/soundcard/mediafoundation.py 2020-05-26 08:29:37.000000000 +0200
+++ new/SoundCard-0.4.1/soundcard/mediafoundation.py 2021-03-14 13:30:27.000000000 +0100
@@ -2,12 +2,14 @@
import os
import cffi
-import numpy
-import time
import re
+import time
+import struct
import collections
import platform
+import numpy
+
_ffi = cffi.FFI()
_package_dir, _ = os.path.split(__file__)
with open(os.path.join(_package_dir, 'mediafoundation.py.h'), 'rt') as f:
@@ -369,7 +371,7 @@
for idx in range(256):
if data[idx] == 0:
break
- devicename = ''.join(chr(c) for c in data[0:idx])
+ devicename = struct.pack('h' * idx, *data[0:idx]).decode('utf-16')
_com.release(ppPropertyStore)
return devicename
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/soundcard/pulseaudio.py new/SoundCard-0.4.1/soundcard/pulseaudio.py
--- old/SoundCard-0.4.0/soundcard/pulseaudio.py 2020-04-28 16:14:27.000000000 +0200
+++ new/SoundCard-0.4.1/soundcard/pulseaudio.py 2021-03-14 13:30:27.000000000 +0100
@@ -67,8 +67,9 @@
_pa.pa_context_connect(self.context, _ffi.NULL, _pa.PA_CONTEXT_NOFLAGS, _ffi.NULL)
_pa.pa_threaded_mainloop_start(self.mainloop)
- while self._pa_context_get_state(self.context) != _pa.PA_CONTEXT_READY:
+ while self._pa_context_get_state(self.context) in (_pa.PA_CONTEXT_UNCONNECTED, _pa.PA_CONTEXT_CONNECTING, _pa.PA_CONTEXT_AUTHORIZING, _pa.PA_CONTEXT_SETTING_NAME):
time.sleep(0.001)
+ assert self._pa_context_get_state(self.context)==_pa.PA_CONTEXT_READY
@staticmethod
def _infer_program_name():
@@ -236,6 +237,7 @@
_pa_context_drain = _lock(_pa.pa_context_drain)
_pa_context_disconnect = _lock(_pa.pa_context_disconnect)
_pa_context_unref = _lock(_pa.pa_context_unref)
+ _pa_context_errno = _lock(_pa.pa_context_errno)
_pa_operation_get_state = _lock(_pa.pa_operation_get_state)
_pa_operation_unref = _lock(_pa.pa_operation_unref)
_pa_stream_get_state = _lock(_pa.pa_stream_get_state)
@@ -288,7 +290,7 @@
Parameters
----------
id : int or str
- can be an int index, a backend id, a substring of the
+ can be a backend id string (Windows, Linux) or a device id int (MacOS), a substring of the
speaker name, or a fuzzy-matched pattern for the speaker name.
Returns
@@ -350,7 +352,7 @@
Parameters
----------
id : int or str
- can be an int index, a backend id, a substring of the
+ can be a backend id string (Windows, Linux) or a device id int (MacOS), a substring of the
speaker name, or a fuzzy-matched pattern for the speaker name.
include_loopback : bool
allow recording of speaker outputs
@@ -642,8 +644,10 @@
if not _pulse._pa_sample_spec_valid(samplespec):
raise RuntimeError('invalid sample spec')
- channelmap = _ffi.new("pa_channel_map*")
- channelmap = _pa.pa_channel_map_init_auto(channelmap, samplespec.channels, _pa.PA_CHANNEL_MAP_DEFAULT)
+ # pam and channelmap refer to the same object, but need different
+ # names to avoid garbage collection trouble on the Python/C boundary
+ pam = _ffi.new("pa_channel_map*")
+ channelmap = _pa.pa_channel_map_init_auto(pam, samplespec.channels, _pa.PA_CHANNEL_MAP_DEFAULT)
if isinstance(self.channels, collections.Iterable):
for idx, ch in enumerate(self.channels):
channelmap.map[idx] = ch+1
@@ -651,6 +655,9 @@
raise RuntimeError('invalid channel map')
self.stream = _pulse._pa_stream_new(_pulse.context, self._name.encode(), samplespec, channelmap)
+ if not self.stream:
+ errno = _pulse._pa_context_errno(_pulse.context)
+ raise RuntimeError("stream creation failed with error ", errno)
bufattr = _ffi.new("pa_buffer_attr*")
bufattr.maxlength = 2**32-1 # max buffer length
numchannels = self.channels if isinstance(self.channels, int) else len(self.channels)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoundCard-0.4.0/soundcard/pulseaudio.py.h new/SoundCard-0.4.1/soundcard/pulseaudio.py.h
--- old/SoundCard-0.4.0/soundcard/pulseaudio.py.h 2020-04-28 16:14:27.000000000 +0200
+++ new/SoundCard-0.4.1/soundcard/pulseaudio.py.h 2021-03-14 13:30:27.000000000 +0100
@@ -159,6 +159,7 @@
typedef struct pa_spawn_api pa_spawn_api;
int pa_context_connect(pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api);
void pa_context_disconnect(pa_context *c);
+int pa_context_errno(const pa_context *c);
typedef enum pa_context_state {
PA_CONTEXT_UNCONNECTED,
PA_CONTEXT_CONNECTING,