Hello community,
here is the log from the commit of package alsa-plugins for openSUSE:Factory
checked in at Fri Mar 19 09:48:53 CET 2010.
--------
--- alsa-plugins/alsa-plugins.changes 2010-01-27 18:25:03.000000000 +0100
+++ /mounts/work_src_done/STABLE/alsa-plugins/alsa-plugins.changes 2010-03-08 14:43:03.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Mar 8 14:39:23 CET 2010 - tiwai@suse.de
+
+- Backport upstream fixes:
+ * usb_stream: Check for NULL-ness before dereferencing
+ * usb_stream: Allow user-set period-size and rate
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
New:
----
alsa-plugins-git-fixes.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-plugins.spec ++++++
--- /var/tmp/diff_new_pack.x1g9U3/_old 2010-03-19 09:48:19.000000000 +0100
+++ /var/tmp/diff_new_pack.x1g9U3/_new 2010-03-19 09:48:19.000000000 +0100
@@ -38,7 +38,7 @@
Url: http://www.alsa-project.org/
Summary: Extra Plug-Ins for the ALSA Library
Version: 1.0.22
-Release: 2
+Release: 3
License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+
Group: System/Libraries
AutoReqProv: on
@@ -49,7 +49,7 @@
Source1: asound-pulse.conf
Source2: alsa-pulse.conf
Source3: baselibs.conf
-# Patch: alsa-plugins-git-fixes.diff
+Patch: alsa-plugins-git-fixes.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -164,7 +164,7 @@
%prep
%setup -q -n %{name}-%{package_version}
-# %patch -p1
+%patch -p1
%build
export AUTOMAKE_JOBS=%{?jobs:%jobs}
++++++ alsa-plugins-git-fixes.diff ++++++
diff --git a/usb_stream/pcm_usb_stream.c b/usb_stream/pcm_usb_stream.c
index 4097693..b1fd68f 100644
--- a/usb_stream/pcm_usb_stream.c
+++ b/usb_stream/pcm_usb_stream.c
@@ -1,7 +1,7 @@
/*
* PCM - USB_STREAM plugin
*
- * Copyright (c) 2008 by Karsten Wiese
+ * Copyright (c) 2008, 2010 by Karsten Wiese
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -48,6 +48,8 @@
#define VDBG(f, ...)
#endif
+#define FRAME_SIZE 6
+
#define LCARD 32
struct user_usb_stream {
char card[LCARD];
@@ -70,6 +72,8 @@ typedef struct {
unsigned periods_done;
unsigned channels;
+ snd_pcm_uframes_t period_size;
+ unsigned int rate;
} snd_pcm_us_t;
static struct user_usb_stream *uus;
@@ -177,7 +181,7 @@ static int snd_pcm_us_prepare(snd_pcm_ioplug_t *io)
VDBG("");
us_cfg.version = USB_STREAM_INTERFACE_VERSION;
- us_cfg.frame_size = 6;
+ us_cfg.frame_size = FRAME_SIZE;
us_cfg.sample_rate = io->rate;
us_cfg.period_frames = io->period_size;
@@ -256,8 +260,11 @@ static int snd_pcm_us_start(snd_pcm_ioplug_t *io)
static int snd_pcm_us_stop(snd_pcm_ioplug_t *io)
{
snd_pcm_us_t *us = io->private_data;
- VDBG("%u", us->uus->s->periods_done);
+ if (!us->uus->s)
+ return 0;
+
+ VDBG("%u", us->uus->s->periods_done);
if (io->stream == SND_PCM_STREAM_PLAYBACK)
memset(us->uus->write_area, 0, us->uus->s->write_size);
@@ -370,6 +377,10 @@ static int us_set_hw_constraint(snd_pcm_us_t *us)
};
int err;
+ unsigned int rate_min = us->rate ? us->rate : 44100,
+ rate_max = us->rate ? us->rate : 96000,
+ period_bytes_min = us->period_size ? FRAME_SIZE * us->period_size : 128,
+ period_bytes_max = us->period_size ? FRAME_SIZE * us->period_size : 64*4096;
if ((err = snd_pcm_ioplug_set_param_list(&us->io, SND_PCM_IOPLUG_HW_ACCESS,
ARRAY_SIZE(access_list), access_list)) < 0 ||
@@ -378,9 +389,9 @@ static int us_set_hw_constraint(snd_pcm_us_t *us)
(err = snd_pcm_ioplug_set_param_minmax(&us->io, SND_PCM_IOPLUG_HW_CHANNELS,
us->channels, us->channels)) < 0 ||
(err = snd_pcm_ioplug_set_param_minmax(&us->io, SND_PCM_IOPLUG_HW_RATE,
- 44100, 96000)) < 0 ||
+ rate_min, rate_max)) < 0 ||
(err = snd_pcm_ioplug_set_param_minmax(&us->io, SND_PCM_IOPLUG_HW_PERIOD_BYTES,
- 128, 64*4096)) < 0 ||
+ period_bytes_min, period_bytes_max)) < 0 ||
(err = snd_pcm_ioplug_set_param_minmax(&us->io, SND_PCM_IOPLUG_HW_PERIODS,
2, 2)) < 0)
return err;
@@ -390,7 +401,9 @@ static int us_set_hw_constraint(snd_pcm_us_t *us)
static int snd_pcm_us_open(snd_pcm_t **pcmp, const char *name,
const char *card,
- snd_pcm_stream_t stream, int mode)
+ snd_pcm_stream_t stream, int mode,
+ snd_pcm_uframes_t period_size,
+ unsigned int rate)
{
snd_pcm_us_t *us;
int err;
@@ -421,6 +434,8 @@ static int snd_pcm_us_open(snd_pcm_t **pcmp, const char *name,
snd_hwdep_poll_descriptors(us->hwdep, &us->pfd, 1);
us->channels = 2;
+ us->period_size = period_size;
+ us->rate = rate;
us->io.version = SND_PCM_IOPLUG_VERSION;
us->io.name = "ALSA <-> USB_STREAM PCM I/O Plugin";
@@ -455,6 +470,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(usb_stream)
snd_config_iterator_t i, next;
const char *card;
int err;
+ long period_size = 0, rate = 0;
snd_config_for_each(i, next, conf) {
snd_config_t *n = snd_config_iterator_entry(i);
@@ -472,11 +488,27 @@ SND_PCM_PLUGIN_DEFINE_FUNC(usb_stream)
snd_config_get_string(n, &card);
continue;
}
+ if (strcmp(id, "period_size") == 0) {
+ if (snd_config_get_type(n) != SND_CONFIG_TYPE_INTEGER) {
+ SNDERR("Invalid type for %s", id);
+ return -EINVAL;
+ }
+ snd_config_get_integer(n, &period_size);
+ continue;
+ }
+ if (strcmp(id, "rate") == 0) {
+ if (snd_config_get_type(n) != SND_CONFIG_TYPE_INTEGER) {
+ SNDERR("Invalid type for %s", id);
+ return -EINVAL;
+ }
+ snd_config_get_integer(n, &rate);
+ continue;
+ }
SNDERR("Unknown field %s", id);
return -EINVAL;
}
- err = snd_pcm_us_open(pcmp, name, card, stream, mode);
+ err = snd_pcm_us_open(pcmp, name, card, stream, mode, period_size, rate);
return err;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org