Arch Linux

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#12577 - enable CPU feature optimisations in mpg123

Attached to Project: Arch Linux
Opened by Anonymous Submitter - Thursday, 25 December 2008, 23:17 GMT
Last edited by Aaron Griffin (phrakture) - Wednesday, 11 February 2009, 20:07 GMT
Task Type Feature Request
Category Packages: Extra
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version None
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

Was reading the manual page for mpg123, and noticed that it could support a number of CPU feature optimisations for decoding. However, I found that the version on my x86_64 box didn't have them available. For example, I'd like to be using SSE extentions on my x86_64 for decoding.

I've looked at the source, and it would seem to me that the option to add to the ./configure script would either be "--with-cpu=x86", for all x86 optimisation options enabled, or "--with-cpu=sse_alone", to use SSE only, which is available on all i686s and x86_64s (I've checked both my i686 and x86_64 boxes, /proc/cpuinfo lists "sse").

Additional info:

mpg123 1.6.1-1 x86_64


Thanks,
Mark.
This task depends upon

Closed by  Aaron Griffin (phrakture)
Wednesday, 11 February 2009, 20:07 GMT
Reason for closing:  Won't implement
Additional comments about closing:  As with all CPU related optimizations - if you want them, rebuild it yourself
Comment by Jan de Groot (JGC) - Friday, 26 December 2008, 00:12 GMT
The fact that your i686 box has SSE doesn't mean the Intel Pentium II, AMD Athlon/Duron and Via C3 have support for SSE.
Comment by Anonymous Submitter - Friday, 26 December 2008, 01:03 GMT
I didn't think Arch Linux suppored Pentium IIs, as I'm pretty sure they're i586s. Not sure about which ix86 generation the AMD and Via are considered to be. I assumed SSE was a i686 generation available feature.

To cover all of those options, use the other flag I mentioned:

"./configure script would either be "--with-cpu=x86", for all x86 optimisation options enabled,"

Here's all the CPU optimisation flags available in version 1.6.3,

--with-cpu=generic_fpu Use generic processor code with floating point arithmetic
--with-cpu=generic_float A special build with generic fpu code that produces 32bit float output (experimental)
--with-cpu=generic_nofpu Use generic processor code with fixed point arithmetic (p.ex. ARM, experimental)
--with-cpu=i386_fpu Use code optimized for i386 processors with floating point arithmetic
--with-cpu=i386_nofpu Use code optimized for i386 processors with fixed point arithmetic (experimental)
--with-cpu=i486 Use code optimized for i486 processors (only usable alone!)
--with-cpu=i586 Use code optimized for i586 processors
--with-cpu=i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size
--with-cpu=3dnow Use code optimized for 3DNow processors
--with-cpu=3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon)
--with-cpu=3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate
--with-cpu=mmx Use code optimized for MMX processors
--with-cpu=mmx_alone Really only MMX decoder, without i586 fallback for flexible rate
--with-cpu=sse Use code optimized for SSE processors
--with-cpu=sse_alone Really only SSE decoder, without i586 fallback for flexible rate
--with-cpu=x86 Pack all x86 opts into one binary (excluding i486 and dithered i586)
--with-cpu=x86_dither Pack all x86 opts into one binary (excluding i486, including dither)
--with-cpu=altivec Use code optimized for Altivec processors (PowerPC G4 and G5)

Comment by Pierre Schmitz (Pierre) - Friday, 26 December 2008, 09:29 GMT
Pentium II is the second generation with i686 instructions set; Pentium Pro was the first. As SSE is not available on every i686 cpu we cannot use it. On the other hand SSE2 is used on x86_64 by default.
Comment by Anonymous Submitter - Friday, 26 December 2008, 09:45 GMT
SSE doesn't seem to be enabled for the version of mpg123 on my x86_64 (Intel(R) Core(TM)2 Quad CPU Q6600)

[mark@opy ~]$ mpg123 --test-cpu
Supported decoders: generic
[mark@opy ~]$

Comment by Alessandro Doro (adoroo) - Friday, 26 December 2008, 17:19 GMT
From mpg123 man page:
--list-cpu
Lists all available decoder choices, regardless of support by your CPU.

Arch Linux: mpg123-1.6.1-1, i686 architecture
$ mpg123 --list-cpu
Builtin decoders: 3DNowExt SSE 3DNow MMX i586 i386 generic

On my machine:
$ mpg123 --test-cpu
Supported decoders: SSE MMX i586 i386 generic

$ mpg123 -v test.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.6.1; written and copyright by Michael Hipp and others
free software (LGPL/GPL) without any warranty but with best wishes
Decoder: SSE

Playing MPEG stream 1 of 1: test.mp3 ...
...

It seems that the problem affects only x86_64.

Loading...