OK, I found it. The problem - in my case at least - lies in
svolume_mmx.c (not svolume_sse.c). Reverting that file back to the
previous version gets rid of the problem. These are the changes which
caused the appearance of the distorted sound problem on my box:
diff -pruN ../pulseaudio-0.9.16~test7-14-g7ca81/src/pulsecore/svolume_mmx.c
src/pulsecore/svolume_mmx.c
--- ../pulseaudio-0.9.16~test7-14-g7ca81/src/pulsecore/svolume_mmx.c
2009-09-20 17:26:04.657239828 +0200
+++ src/pulsecore/svolume_mmx.c 2009-09-18 22:21:44.000000000 +0200
@@ -57,14 +57,12 @@
" punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */
\
" pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */
\
" pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15)
& p */ \
- " movq %%mm6, %%mm5 \n\t" /* .. | ffff | 0 | */
\
- " pand "#v", %%mm5 \n\t" /* .. | vh | 0 | */
\
- " por %%mm5, %%mm4 \n\t" /* .. | vh | (p0) | */
\
- " pmulhw "#s", "#v" \n\t" /* .. | 0 | vl*p0 | */
\
- " paddw %%mm4, "#v" \n\t" /* .. | vh | vl*p0 | vh + sign
correct */ \
- " pslld $16, "#s" \n\t" /* .. | p0 | 0 | */
\
- " por %%mm7, "#s" \n\t" /* .. | p0 | 1 | */
\
- " pmaddwd "#s", "#v" \n\t" /* .. | p0 * v0 | */
\
+ " movq "#s", %%mm5 \n\t"
\
+ " pmulhw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */
\
+ " paddw %%mm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign
correct */ \
+ " psrld $16, "#v" \n\t" /* .. | 0 | vh | */
\
+ " pmaddwd %%mm5, "#v" \n\t" /* .. | p0 * vh | */
\
+ " paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */
\
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
/* approximately advances %3 = (%3 + a) % b. This function requires that
@@ -105,10 +103,6 @@ pa_volume_s16ne_mmx (int16_t *samples, i
__asm__ __volatile__ (
" xor %3, %3 \n\t"
" sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
- " pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
- " pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
- " pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
- " psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
" test $1, %2 \n\t" /* check for odd samples */
" je 2f \n\t"
The simplest solution is to revert that piece of assembly back to what
it was. The attached patch accomplishes this.
** Attachment added: "revert svolume_mmx.c back to last known good version"
http://launchpadlibrarian.net/32144505/revert_svolume_mmx_to_known_good_version.patch
--
pulseaudio crackle/distortion with cs46xx on latest update
https://bugs.launchpad.net/bugs/428619
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs