Now the integration of the libsyn123 resampler and handling of the
NtoM decoder are hopefully correct in the again-enlarged audio.c,
which became a hollow shell with the advent of libout123, and now
is strong again.
Settling decoder and output formats has historically been the most
confusing aspect of libmpg123 and I raise that with the integration
of post-decoder resampling and pitching in the decoder, in the
output device, or in said resampling between these two. Insanity!
The new resampler is the default for forcing output rates now. If
you wonder why, try this in the current mpg123 source tree with
your fresh build:
for resampler in ntom dirty fine
do
src/mpg123 -r 22040 --resample $resampler --pitch -0.72 \
src/tests/sweep.mp3
done
With a pure sine sweep like that (generated via out123), you
can appreciate
a) the quality differences between resamplers, and
b) how little those seem to matter when you just listen
to music.
Really, without a detailed comparison and some noisy pop/rock
music, it is surprisingly hard to tell how bad the drop-sample
resampling of the NtoM decoder really is.
But this has a price: Even when I took great pains in designing
the syn123 resampler, it needs more computing time than the
MPEG decoder itself. That's life. You can make resamplers that
are faster, but at the cost of increased latency which makes
programming tedious. Here, I just ignored that aspect, as the
syn123 resampling latency is just a handful of samples, well
below the farts you get from ALSA on closing a device.
git-svn-id: svn://scm.orgis.org/mpg123/trunk@4662 35dc7657-300d-0410-a2e5-dc2837fedb53
This introduces software muting in libout123, to be triggered via terminal control
key 'u' (m was taken) or the remote control commands 'mute' and 'unmute'. For this,
libout123 needs to know what a zero looks like in the current encoding. I hope
I handled that smartly enough with the MPG123_ZEROSAMPLE macro in fmt123.
I explicitly decided against linking in libsyn123. That makes only sense when
going all-in and deciding that libout123 shall convert, resample, and mix
on-the-fly to make input data match the output. This might be nice to have,
but it is also nice to have a library that does not really care about the
content it transports. It is a simple transporter with a buffer. Said buffer
necessitates that the transporter knows what empty sound looks like, but I
really don't want to burden it with more knowledge for simplicity.
This muting needs to be inside libout123 whe the buffer is used. Feeding
silence from the client application does not have latency you expect when
(un)pause is already negotiated with the buffer.
git-svn-id: svn://scm.orgis.org/mpg123/trunk@4589 35dc7657-300d-0410-a2e5-dc2837fedb53
See the updated man page. If one input track is complete rubbish, there is
exit(1) now.
git-svn-id: svn://scm.orgis.org/mpg123/trunk@4588 35dc7657-300d-0410-a2e5-dc2837fedb53
Applied patch from Andreas Neustifter (with one added witty bootnote in the man page).
git-svn-id: svn://scm.orgis.org/mpg123/trunk@2113 35dc7657-300d-0410-a2e5-dc2837fedb53
...in the course of that, don't mention the "pause" that is a loop.
git-svn-id: svn://scm.orgis.org/mpg123/trunk@1602 35dc7657-300d-0410-a2e5-dc2837fedb53
- fragments of --delay
- portaudio v18 and v19 handling
- thinking about safeguarding audio output close (portaudio segfauls when close is done twice)
- TODO for 1.1: buffer+audio rework
git-svn-id: svn://scm.orgis.org/mpg123/trunk@1240 35dc7657-300d-0410-a2e5-dc2837fedb53
- add parameter operation to remove flags
- mpg123 --no-gapless is now needed to get non-gapless decoding (the good thing is the default now;-)
- removed references to GAPLESS macro in mpg123 application
git-svn-id: svn://scm.orgis.org/mpg123/trunk@1151 35dc7657-300d-0410-a2e5-dc2837fedb53