[Pkg-kde-extras] Bug#593641: SoX encoder fails with SoX >= 14.1.0 (I think)
Torbjörn Andersson
eriknospam at telia.com
Thu Aug 19 19:48:05 UTC 2010
Package: libk3b6
Version: 2.0.1-1
I noticed that if I try to rip an audio CD and select the SoX encoder,
K3b will claim that it succeeded but no audio files are created. The
same thing happened with most file types, actually, but I think they too
use the SoX plugin.
I turned on debugging, and noticed the following messages in the output:
k3b(14809) K3bSoxEncoder::initEncoderInternal: "/usr/bin/sox -t raw -r
44100 -s -2 -c 2 - -t wav -r 44100 -c 2 -w -a <filename withheld>"
k3b(14809) K3bSoxEncoder::slotSoxOutputLine: (sox) "/usr/bin/sox:
invalid option -- w"
k3b(14809) K3bSoxEncoder::slotSoxOutputLine: (sox) "/usr/bin/sox FAIL
sox: invalid option"
According to the SoX changelog, the -w option was deprecated in 13.0.0
and removed in 14.1.0. (Debian unstable currently uses 14.3.1.) It was
replaced by the -2 option. K3b tries to detect this and act accordingly,
but is only partly successful. Here's what happens in
plugins/encoder/sox/k3bsoxencoder.cpp
179 if ( soxBin->version >= K3b::Version( 13, 0, 0 ) )
180 *d->process << "-2";
181 else
182 *d->process << "-w"; // 16-bit words
...
195 int size = grp.readEntry( "data size",
DEFAULT_DATA_SIZE );
196 *d->process << ( size == 8 ? QString("-b") : ( size
== 32 ? QString("-l") : QString("-w") ) );
I believe the first snippet sets the options for the input file and the
second one sets them for the output file, but only the first one checks
the SoX version. I believe it's sufficient to add such a check to the
second snippet, to make it use -1, -2 and -4 instead of -b, -w and -l.
Sincerely,
Torbjörn Andersson
More information about the pkg-kde-extras
mailing list