Accepting request 312592 from multimedia:libs
1 OBS-URL: https://build.opensuse.org/request/show/312592 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/alsa?expand=0&rev=162
This commit is contained in:
commit
e5a4874488
@ -0,0 +1,28 @@
|
|||||||
|
From 9120f2de8608f49ee1cd4501b9eee39a1c71778f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christophe Lohr <christophe.lohr@cegetel.net>
|
||||||
|
Date: Mon, 1 Jun 2015 13:41:49 +0200
|
||||||
|
Subject: [PATCH] test/pcm: Fix generated values with float PCM format
|
||||||
|
|
||||||
|
The float format should be generated [-1.0..1.0].
|
||||||
|
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
test/pcm.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/test/pcm.c b/test/pcm.c
|
||||||
|
index abb83e4c3014..18b61762b236 100644
|
||||||
|
--- a/test/pcm.c
|
||||||
|
+++ b/test/pcm.c
|
||||||
|
@@ -68,7 +68,7 @@ static void generate_sine(const snd_pcm_channel_area_t *areas,
|
||||||
|
} fval;
|
||||||
|
int res, i;
|
||||||
|
if (is_float) {
|
||||||
|
- fval.f = sin(phase) * maxval;
|
||||||
|
+ fval.f = sin(phase);
|
||||||
|
res = fval.i;
|
||||||
|
} else
|
||||||
|
res = sin(phase) * maxval;
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
29
0018-test-pcm_min-Fix-error-messages.patch
Normal file
29
0018-test-pcm_min-Fix-error-messages.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From 8551fe258791c165892583006b0aa5142f41b621 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christophe Lohr <christophe.lohr@cegetel.net>
|
||||||
|
Date: Mon, 1 Jun 2015 13:43:36 +0200
|
||||||
|
Subject: [PATCH] test/pcm_min: Fix error messages
|
||||||
|
|
||||||
|
Fix the wrongly referred error code for error messages from
|
||||||
|
snd_pcm_writei() and other calls.
|
||||||
|
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
test/pcm_min.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/test/pcm_min.c b/test/pcm_min.c
|
||||||
|
index e971405ee64f..7462a45fef33 100644
|
||||||
|
--- a/test/pcm_min.c
|
||||||
|
+++ b/test/pcm_min.c
|
||||||
|
@@ -39,7 +39,7 @@ int main(void)
|
||||||
|
if (frames < 0)
|
||||||
|
frames = snd_pcm_recover(handle, frames, 0);
|
||||||
|
if (frames < 0) {
|
||||||
|
- printf("snd_pcm_writei failed: %s\n", snd_strerror(err));
|
||||||
|
+ printf("snd_pcm_writei failed: %s\n", snd_strerror(frames));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (frames > 0 && frames < (long)sizeof(buffer))
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
30
0019-pcm-Don-t-assert-in-_snd_pcm_hw_params_internal.patch
Normal file
30
0019-pcm-Don-t-assert-in-_snd_pcm_hw_params_internal.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From a5e5e3cd3c85eafcced7a93b1cf37201560f2a28 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Mon, 1 Jun 2015 13:45:01 +0200
|
||||||
|
Subject: [PATCH] pcm: Don't assert in _snd_pcm_hw_params_internal()
|
||||||
|
|
||||||
|
It's no fatal error from sw params, and it's really bad habit to use
|
||||||
|
assert() and abort the operation as a system library.
|
||||||
|
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
src/pcm/pcm_params.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/pcm/pcm_params.c b/src/pcm/pcm_params.c
|
||||||
|
index 1d667a583151..60d99ad96167 100644
|
||||||
|
--- a/src/pcm/pcm_params.c
|
||||||
|
+++ b/src/pcm/pcm_params.c
|
||||||
|
@@ -2361,7 +2361,8 @@ int _snd_pcm_hw_params_internal(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)
|
||||||
|
memset(&sw, 0, sizeof(sw));
|
||||||
|
snd_pcm_sw_params_default(pcm, &sw);
|
||||||
|
err = snd_pcm_sw_params(pcm, &sw);
|
||||||
|
- assert(err >= 0);
|
||||||
|
+ if (err < 0)
|
||||||
|
+ return err;
|
||||||
|
|
||||||
|
if (pcm->mmap_rw ||
|
||||||
|
pcm->access == SND_PCM_ACCESS_MMAP_INTERLEAVED ||
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
78
0020-pcm-Fix-snd_pcm_status-for-dmix-co.patch
Normal file
78
0020-pcm-Fix-snd_pcm_status-for-dmix-co.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
From 18ce3ec9caa266086c5f364a2bdbab27a8db9d77 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Tue, 2 Jun 2015 16:47:50 +0200
|
||||||
|
Subject: [PATCH] pcm: Fix snd_pcm_status() for dmix & co
|
||||||
|
|
||||||
|
Fetch the timestamp and other status fields by issuing
|
||||||
|
snd_pcm_status() for the slave PCM. Also, fill the delay field
|
||||||
|
properly. This should fix longstanding PA's complaints.
|
||||||
|
|
||||||
|
Reported-by: Dan Hordern <danhordern@gmail.com>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
src/pcm/pcm_dmix.c | 3 ++-
|
||||||
|
src/pcm/pcm_dshare.c | 3 ++-
|
||||||
|
src/pcm/pcm_dsnoop.c | 3 ++-
|
||||||
|
3 files changed, 6 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
|
||||||
|
index babde6a15efe..4acbaf0e0265 100644
|
||||||
|
--- a/src/pcm/pcm_dmix.c
|
||||||
|
+++ b/src/pcm/pcm_dmix.c
|
||||||
|
@@ -475,12 +475,13 @@ static int snd_pcm_dmix_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memset(status, 0, sizeof(*status));
|
||||||
|
+ snd_pcm_status(dmix->spcm, status);
|
||||||
|
status->state = snd_pcm_dmix_state(pcm);
|
||||||
|
status->trigger_tstamp = dmix->trigger_tstamp;
|
||||||
|
- gettimestamp(&status->tstamp, pcm->tstamp_type);
|
||||||
|
status->avail = snd_pcm_mmap_playback_avail(pcm);
|
||||||
|
status->avail_max = status->avail > dmix->avail_max ? status->avail : dmix->avail_max;
|
||||||
|
dmix->avail_max = 0;
|
||||||
|
+ status->delay = snd_pcm_mmap_playback_delay(pcm);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
|
||||||
|
index 020e6f7d9307..b51758fb22a2 100644
|
||||||
|
--- a/src/pcm/pcm_dshare.c
|
||||||
|
+++ b/src/pcm/pcm_dshare.c
|
||||||
|
@@ -224,12 +224,13 @@ static int snd_pcm_dshare_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memset(status, 0, sizeof(*status));
|
||||||
|
+ snd_pcm_status(dshare->spcm, status);
|
||||||
|
status->state = snd_pcm_state(dshare->spcm);
|
||||||
|
status->trigger_tstamp = dshare->trigger_tstamp;
|
||||||
|
- gettimestamp(&status->tstamp, pcm->tstamp_type);
|
||||||
|
status->avail = snd_pcm_mmap_playback_avail(pcm);
|
||||||
|
status->avail_max = status->avail > dshare->avail_max ? status->avail : dshare->avail_max;
|
||||||
|
dshare->avail_max = 0;
|
||||||
|
+ status->delay = snd_pcm_mmap_playback_delay(pcm);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
|
||||||
|
index 8333eefdaf4c..8a2e87ad0ae1 100644
|
||||||
|
--- a/src/pcm/pcm_dsnoop.c
|
||||||
|
+++ b/src/pcm/pcm_dsnoop.c
|
||||||
|
@@ -187,13 +187,14 @@ static int snd_pcm_dsnoop_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memset(status, 0, sizeof(*status));
|
||||||
|
+ snd_pcm_status(dsnoop->spcm, status);
|
||||||
|
state = snd_pcm_state(dsnoop->spcm);
|
||||||
|
status->state = state == SND_PCM_STATE_RUNNING ? dsnoop->state : state;
|
||||||
|
status->trigger_tstamp = dsnoop->trigger_tstamp;
|
||||||
|
- status->tstamp = dsnoop->update_tstamp;
|
||||||
|
status->avail = snd_pcm_mmap_capture_avail(pcm);
|
||||||
|
status->avail_max = status->avail > dsnoop->avail_max ? status->avail : dsnoop->avail_max;
|
||||||
|
dsnoop->avail_max = 0;
|
||||||
|
+ status->delay = snd_pcm_mmap_capture_delay(pcm);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 2fd098b587e8e5137c05ea6248c2aa87294e13c2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Wed, 10 Jun 2015 11:56:23 +0200
|
||||||
|
Subject: [PATCH] control: Allow cset'ing specific values in the multi-value
|
||||||
|
case
|
||||||
|
|
||||||
|
Improve the parser to allow empty elements followed by a comma.
|
||||||
|
Now amixer works like below for setting only the third element.
|
||||||
|
% amixer cset 'IIR1 Band1' ,,200
|
||||||
|
|
||||||
|
Reported-and-tested-by: Arun Raghavan <arun@accosted.net>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
src/control/ctlparse.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/control/ctlparse.c b/src/control/ctlparse.c
|
||||||
|
index 8d6c3859bec4..877a05e3a1f1 100644
|
||||||
|
--- a/src/control/ctlparse.c
|
||||||
|
+++ b/src/control/ctlparse.c
|
||||||
|
@@ -325,6 +325,8 @@ int snd_ctl_ascii_value_parse(snd_ctl_t *handle,
|
||||||
|
snd_ctl_elem_value_set_id(dst, myid);
|
||||||
|
|
||||||
|
for (idx = 0; idx < count && idx < 128 && ptr && *ptr; idx++) {
|
||||||
|
+ if (*ptr == ',')
|
||||||
|
+ goto skip;
|
||||||
|
switch (type) {
|
||||||
|
case SND_CTL_ELEM_TYPE_BOOLEAN:
|
||||||
|
tmp = 0;
|
||||||
|
@@ -375,6 +377,7 @@ int snd_ctl_ascii_value_parse(snd_ctl_t *handle,
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+ skip:
|
||||||
|
if (!strchr(value, ','))
|
||||||
|
ptr = value;
|
||||||
|
else if (*ptr == ',')
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From 9ee6ec80b80268932a372522ca192168e7812ccf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||||
|
Date: Fri, 12 Jun 2015 16:15:08 +0800
|
||||||
|
Subject: [PATCH] PCM: snd_pcm_xxxx_drain() maybe blocked after suspend and
|
||||||
|
resume
|
||||||
|
|
||||||
|
After suspend and resume, the alsa driver is stopped. But if alsa-lib run
|
||||||
|
into snd_pcm_xxxx_drain(), it need to wait avail >= pcm->stop_threshold,
|
||||||
|
otherwise, it will not exit the loop, so finally it is blocked at poll() of
|
||||||
|
snd_pcm_wait_nocheck(pcm, -1).
|
||||||
|
This patch is to add state check after snd_pcm_wait_nocheck(pcm, -1), if
|
||||||
|
the state is SND_PCM_STATE_SUSPENDED, then return error.
|
||||||
|
|
||||||
|
Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
src/pcm/pcm_dmix.c | 14 ++++++++++++++
|
||||||
|
src/pcm/pcm_dshare.c | 14 ++++++++++++++
|
||||||
|
2 files changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
|
||||||
|
index 4acbaf0e0265..58e4975d5225 100644
|
||||||
|
--- a/src/pcm/pcm_dmix.c
|
||||||
|
+++ b/src/pcm/pcm_dmix.c
|
||||||
|
@@ -617,6 +617,13 @@ static int snd_pcm_dmix_drain(snd_pcm_t *pcm)
|
||||||
|
snd_pcm_uframes_t stop_threshold;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
+ switch (snd_pcm_state(dmix->spcm)) {
|
||||||
|
+ case SND_PCM_STATE_SUSPENDED:
|
||||||
|
+ return -ESTRPIPE;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (dmix->state == SND_PCM_STATE_OPEN)
|
||||||
|
return -EBADFD;
|
||||||
|
if (pcm->mode & SND_PCM_NONBLOCK)
|
||||||
|
@@ -649,6 +656,13 @@ static int snd_pcm_dmix_drain(snd_pcm_t *pcm)
|
||||||
|
snd_pcm_dmix_sync_area(pcm);
|
||||||
|
snd_pcm_wait_nocheck(pcm, -1);
|
||||||
|
snd_pcm_direct_clear_timer_queue(dmix); /* force poll to wait */
|
||||||
|
+
|
||||||
|
+ switch (snd_pcm_state(dmix->spcm)) {
|
||||||
|
+ case SND_PCM_STATE_SUSPENDED:
|
||||||
|
+ return -ESTRPIPE;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
} while (dmix->state == SND_PCM_STATE_DRAINING);
|
||||||
|
pcm->stop_threshold = stop_threshold;
|
||||||
|
diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
|
||||||
|
index b51758fb22a2..02370dc7082d 100644
|
||||||
|
--- a/src/pcm/pcm_dshare.c
|
||||||
|
+++ b/src/pcm/pcm_dshare.c
|
||||||
|
@@ -368,6 +368,13 @@ static int snd_pcm_dshare_drain(snd_pcm_t *pcm)
|
||||||
|
snd_pcm_uframes_t stop_threshold;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
+ switch (snd_pcm_state(dshare->spcm)) {
|
||||||
|
+ case SND_PCM_STATE_SUSPENDED:
|
||||||
|
+ return -ESTRPIPE;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (dshare->state == SND_PCM_STATE_OPEN)
|
||||||
|
return -EBADFD;
|
||||||
|
if (pcm->mode & SND_PCM_NONBLOCK)
|
||||||
|
@@ -400,6 +407,13 @@ static int snd_pcm_dshare_drain(snd_pcm_t *pcm)
|
||||||
|
snd_pcm_dshare_sync_area(pcm);
|
||||||
|
snd_pcm_wait_nocheck(pcm, -1);
|
||||||
|
snd_pcm_direct_clear_timer_queue(dshare); /* force poll to wait */
|
||||||
|
+
|
||||||
|
+ switch (snd_pcm_state(dshare->spcm)) {
|
||||||
|
+ case SND_PCM_STATE_SUSPENDED:
|
||||||
|
+ return -ESTRPIPE;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
} while (dshare->state == SND_PCM_STATE_DRAINING);
|
||||||
|
pcm->stop_threshold = stop_threshold;
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
12
alsa.changes
12
alsa.changes
@ -1,3 +1,15 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 18 09:32:07 CEST 2015 - tiwai@suse.de
|
||||||
|
|
||||||
|
- Backport upstream fixes: fix bogus assert() in hw_params, a few
|
||||||
|
PCM dmix/dshare/dsnoop fixes, enhacement of amixer, etc:
|
||||||
|
0017-test-pcm-Fix-generated-values-with-float-PCM-format.patch
|
||||||
|
0018-test-pcm_min-Fix-error-messages.patch
|
||||||
|
0019-pcm-Don-t-assert-in-_snd_pcm_hw_params_internal.patch
|
||||||
|
0020-pcm-Fix-snd_pcm_status-for-dmix-co.patch
|
||||||
|
0021-control-Allow-cset-ing-specific-values-in-the-multi-.patch
|
||||||
|
0022-PCM-snd_pcm_xxxx_drain-maybe-blocked-after-suspend-a.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri May 22 14:16:26 CEST 2015 - tiwai@suse.de
|
Fri May 22 14:16:26 CEST 2015 - tiwai@suse.de
|
||||||
|
|
||||||
|
12
alsa.spec
12
alsa.spec
@ -65,6 +65,12 @@ Patch13: 0013-conf-Add-hint-descriptions-to-ctl-hwdep-seq-and-time.patch
|
|||||||
Patch14: 0014-conf-ucm-broadwell-rt286-change-to-set-capture-volum.patch
|
Patch14: 0014-conf-ucm-broadwell-rt286-change-to-set-capture-volum.patch
|
||||||
Patch15: 0015-ucm-allow-multiple-devices-in-JackHWMute.patch
|
Patch15: 0015-ucm-allow-multiple-devices-in-JackHWMute.patch
|
||||||
Patch16: 0016-pcm-Remove-assert-from-snd_pcm_hw_params_slave.patch
|
Patch16: 0016-pcm-Remove-assert-from-snd_pcm_hw_params_slave.patch
|
||||||
|
Patch17: 0017-test-pcm-Fix-generated-values-with-float-PCM-format.patch
|
||||||
|
Patch18: 0018-test-pcm_min-Fix-error-messages.patch
|
||||||
|
Patch19: 0019-pcm-Don-t-assert-in-_snd_pcm_hw_params_internal.patch
|
||||||
|
Patch20: 0020-pcm-Fix-snd_pcm_status-for-dmix-co.patch
|
||||||
|
Patch21: 0021-control-Allow-cset-ing-specific-values-in-the-multi-.patch
|
||||||
|
Patch22: 0022-PCM-snd_pcm_xxxx_drain-maybe-blocked-after-suspend-a.patch
|
||||||
# rest suse patches
|
# rest suse patches
|
||||||
Patch99: alsa-lib-doxygen-avoid-crash-for-11.3.diff
|
Patch99: alsa-lib-doxygen-avoid-crash-for-11.3.diff
|
||||||
# suppress timestamp in documents
|
# suppress timestamp in documents
|
||||||
@ -151,6 +157,12 @@ Architecture.
|
|||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
|
%patch17 -p1
|
||||||
|
%patch18 -p1
|
||||||
|
%patch19 -p1
|
||||||
|
%patch20 -p1
|
||||||
|
%patch21 -p1
|
||||||
|
%patch22 -p1
|
||||||
%if 0%{?suse_version} == 1130
|
%if 0%{?suse_version} == 1130
|
||||||
%patch99 -p1
|
%patch99 -p1
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user