Commit Graph

1029 Commits

Author SHA1 Message Date
J. Alexander Treuman
9bdb0b0df2 Adding support for seeking HTTP streams.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5159 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 19:57:28 +00:00
J. Alexander Treuman
f30f93cb8b Added gapless_mp3_playback option. Setting to "no" will disable gapless
MP3 playback, thus allowing songs that run longer than the Xing frame
claims (f.e., an MP3 created by catting two MP3s together) to continue
playing past the end.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5157 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 18:00:15 +00:00
J. Alexander Treuman
d4be2276a0 Use the existing define for the default value of save_absolute_playlists
instead of a hardcoded value.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5151 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 16:37:36 +00:00
J. Alexander Treuman
df3222095c Only parse gapless info if the input stream is seekable, under the
assumption that non-seekable streams are live and any gapless info is
incorrect.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5150 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 15:58:06 +00:00
J. Alexander Treuman
57b0a42940 Don't stop decoding if we're at maxFrames just because there's a Xing tag.
Instead, stop decoding as soon as we've found the frames/samples at the
"end" that we want drop.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5149 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 15:22:35 +00:00
J. Alexander Treuman
f158016d0e Cleaning up some damn near unreadable wrapping caused by indent.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5148 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 15:13:19 +00:00
J. Alexander Treuman
5da19e5f78 Properly calculate the number of remaining samples in the MP3 frame, even
though in practice it should never matter.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5147 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-23 15:10:21 +00:00
J. Alexander Treuman
4479ece74d Making "list any" fail with an error instead of OK with no results.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5139 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-11 20:18:04 +00:00
J. Alexander Treuman
ba4b4d8ad9 Moving LOCATE_TAG_{FILE,ANY}_TYPE defines to dbUtils.h, so that we can
compare the return value of getLocateTagItemType() to them.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5138 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-11 20:14:33 +00:00
J. Alexander Treuman
a26582e991 Fixing "find any" and "list * any" to actually find matches.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5137 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-11 19:52:05 +00:00
J. Alexander Treuman
ec45950b36 Oops, forgot to add an interface to stored playlist editing. Here it is.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5128 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-07 14:41:40 +00:00
Eric Wong
63dd4b4598 Add OggFLAC support when using the new 1.1.3 FLAC library
This means that when using libFLAC as a shared object,
OggFLAC support is dependent on the compile-time options of
the libFLAC library loaded.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5112 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-04 04:45:50 +00:00
Eric Wong
b152086ae4 Introduce backwards compatibility with pre-1.1.3 FLAC
git-svn-id: https://svn.musicpd.org/mpd/trunk@5111 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-04 04:45:47 +00:00
Eric Wong
ccf971a320 inputPlugins/flac_plugin: switch to the new (1.1.3) API
We will restore compatibility with the old API in the
next few commits; along with OggFLAC support.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5110 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-04 04:45:44 +00:00
Eric Wong
5048388251 inputPlugins/flac_plugin: cleanup static declarations
move flac_decode to the bottom, so we don't have to declare
all of our static functions.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5109 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-12-04 04:45:41 +00:00
J. Alexander Treuman
fc4868a040 Check that the APE tag length is valid before allocating a buffer for it.
git-svn-id: https://svn.musicpd.org/mpd/trunk@5098 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-11-26 03:51:46 +00:00
J. Alexander Treuman
08003904d7 Adding functions for clearing/adding to stored playlists. Commands to make
use of these functions are still being worked on.

git-svn-id: https://svn.musicpd.org/mpd/trunk@5075 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-11-20 15:37:58 +00:00
Eric Wong
6d6155d766 audioOutput_alsa: print out the bitrate we wanted to set
..and not the enum value that corresponds to that bitrate

git-svn-id: https://svn.musicpd.org/mpd/trunk@5030 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-11-07 04:10:02 +00:00
Warren Dukes
f6b982eb07 add support for: list file
This behaves the same as: list filename

git-svn-id: https://svn.musicpd.org/mpd/trunk@4952 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-27 23:07:34 +00:00
Warren Dukes
a8a932a215 remove some unneccesary includes from the audioOutput's
git-svn-id: https://svn.musicpd.org/mpd/trunk@4913 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-18 03:03:28 +00:00
Warren Dukes
29c7681ca4 jack patch from anarch (and some type fixes for mp4 and acc plugins)
git-svn-id: https://svn.musicpd.org/mpd/trunk@4912 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-18 02:49:13 +00:00
Warren Dukes
e9f51778ef an attempted fix for bug 1368
- don't close and reopen an audioOutput when it has a fixed output format, and closing and reopening the device is unneccessary when the input audio format changes

git-svn-id: https://svn.musicpd.org/mpd/trunk@4908 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-17 03:16:11 +00:00
Eric Wong
e1d1a703f1 path.c: speling fix (I coulda sworn I fixed this before... in -ke)
git-svn-id: https://svn.musicpd.org/mpd/trunk@4904 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-14 08:50:23 +00:00
Eric Wong
5a3f501fc8 audioOutput_shout: use shout_set_nonblocking
This patch should continue to allow mpd to play as well as
possible to icecast servers while avoiding stalls on local
devices.  This has eliminated ALSA underrun errors
for me while streaming to a remote host while the network
connection was bad.

Of course, this makes opening a connection non-blocking, too,
so myShout_openShoutConn is a bit more complex.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4898 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-11 00:18:43 +00:00
J. Alexander Treuman
f6e96edcc9 Allow an ogg quality of -1 to be specified.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4893 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-10 20:00:33 +00:00
Eric Wong
4c80121bba buffer2array: extra unit tests (for PHP magic quote escapes)
Make the unit tests compile correctly without using xstrdup.

Also, use "static inline" instead of "inline static": certain
compilers or cflags are likely to complain about the latter.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4892 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-10 19:37:32 +00:00
Eric Wong
e0a8c17957 mp3_plugin.c: fix compilation with -pedantic and/or gcc 2.95
git-svn-id: https://svn.musicpd.org/mpd/trunk@4876 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-06 18:01:12 +00:00
Warren Dukes
e198826606 put back np's supperrior buffer2array, and fix my bug fix from change 4872
git-svn-id: https://svn.musicpd.org/mpd/trunk@4875 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-06 10:33:27 +00:00
Eric Wong
e3222d807a Revert buffer2array() behavior back to tried and true 0.11.x version
Warren's fix in r4872 made phpMp work again, but also broke
the unit tests completely (they work in this version).

The version in 0.12.0 is far too buggy (it was from mpd-ke, what
do you expect?).  This one passes all the unit tests that the
mpd-ke one passed, and should also work with phpMp when used
with PHP magic quotes.

This also means we can search on 100 (or more) tags at once, so
no more arbitrary limits other than system memory.

To run the unit tests, just do this:
gcc -o t -DUNIT_TEST=1 src/buffer2array.c && ./t && echo OK

git-svn-id: https://svn.musicpd.org/mpd/trunk@4874 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-06 08:54:43 +00:00
Warren Dukes
1a51bfb84a fix escaping in quotes. (Now phpMp works again!)
git-svn-id: https://svn.musicpd.org/mpd/trunk@4872 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-06 02:25:58 +00:00
Warren Dukes
00719544eb add a sanity check assert
git-svn-id: https://svn.musicpd.org/mpd/trunk@4869 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-03 03:06:30 +00:00
Warren Dukes
d3040d1eb5 fix the segfault for when no audio_output is found and none is detected (bug found by normalperson!!!)
git-svn-id: https://svn.musicpd.org/mpd/trunk@4868 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-03 02:57:01 +00:00
Warren Dukes
347a33b009 cleanup flushWarningBuffer() and make some for() loops in audio.c look and do something sane.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4867 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-03 02:22:37 +00:00
Warren Dukes
648f48ce3b handle invalid xing tags better.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4866 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-10-03 00:58:20 +00:00
Eric Wong
5ece12982a outputBuffer: avoid out-of-bounds-error in clearOutputBuffer()
I'm still not entirely certain why we index cb->metaChunkSet[]
with currentChunk (and not currentMetaChunk), but shank told me
that currentChunk is correct...

git-svn-id: https://svn.musicpd.org/mpd/trunk@4814 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-09-21 08:27:24 +00:00
Eric Wong
64e8332fe5 signal_check: [trivial] make __caught_signals array static
git-svn-id: https://svn.musicpd.org/mpd/trunk@4780 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-09-15 08:56:05 +00:00
Eric Wong
ca84702d8d tag.c: remove unnecessary #includes
git-svn-id: https://svn.musicpd.org/mpd/trunk@4762 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-09-11 23:45:25 +00:00
Qball Cow
f3aa34badb Hopefully fix endian problem mac x86/ppc
git-svn-id: https://svn.musicpd.org/mpd/trunk@4750 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-09-09 10:01:25 +00:00
Eric Wong
f5c7f3da31 utils.c: fix xrealloc
(based on suggested patch by Jan-Benedict Glaw):
> While hacking mpd, I noticed that an assert()ion in xrealloc is wrong.
> A null size is perfectly legal, so we shouldn't assert on that.

Since some C libraries return NULL when size == 0, we'll make
sure we get a free()-able pointer since some of those C
libraries also barf on free(NULL).

git-svn-id: https://svn.musicpd.org/mpd/trunk@4740 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-09-07 19:26:51 +00:00
Eric Wong
7b6d45f50f gcc.h: make sure __GNUC__ is defined before checking it's value
git-svn-id: https://svn.musicpd.org/mpd/trunk@4724 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-30 07:56:22 +00:00
J. Alexander Treuman
806acdd4f4 Rearrange mpd.conf.5 and conf.[ch] to use the more logical ordering of config parameters that the new (yet to be committed) mpdconf.example will use.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4715 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-28 20:47:50 +00:00
Eric Wong
90847fc881 Replace strdup and {c,re,m}alloc with x* variants to check for OOM errors
I'm checking for zero-size allocations and assert()-ing them,
so we can more easily get backtraces and debug problems, but we'll
also allow -DNDEBUG people to live on the edge if they wish.

We do not rely on errno when checking for OOM errors because
some implementations of malloc do not set it, and malloc
is commonly overridden by userspace wrappers.

I've spent some time looking through the source and didn't find any
obvious places where we would explicitly allocate 0 bytes, so we
shouldn't trip any of those assertions.

We also avoid allocating zero bytes because C libraries don't
handle this consistently (some return NULL, some not); and it's
dangerous either way.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4690 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26 06:25:57 +00:00
Eric Wong
be554c2596 audioOutputs_oss: [trivial] make loop interation consistent with others
git-svn-id: https://svn.musicpd.org/mpd/trunk@4689 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26 06:25:52 +00:00
Eric Wong
f3981eab58 audio.c: [trivial] remove unnecessary include
git-svn-id: https://svn.musicpd.org/mpd/trunk@4688 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26 06:25:49 +00:00
Eric Wong
45f28394c0 command.c: rerun mpd-indent.sh, no code changes
leave out initCommands to keep jat happy, and keep labels
at the left hand side

git-svn-id: https://svn.musicpd.org/mpd/trunk@4687 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26 06:25:44 +00:00
J. Alexander Treuman
5b7c3c8707 Fix an esoteric gcc warning
git-svn-id: https://svn.musicpd.org/mpd/trunk@4684 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-25 00:29:41 +00:00
Eric Wong
64a4c635de audiofile_plugin: use afSetVirtualSampleFormat, too
This finally fixes a bug from over two years ago playing a wave file
(oprah.wav) with the following characteristics (from sfinfo):

File Format    Microsoft RIFF WAVE Format (wave)
Data Format    8-bit integer (unsigned, little endian)
Audio Data     986827 bytes begins at offset 58 (3a hex)
1 channel, 986827 frames
Sampling Rate  22050.00 Hz
Duration       44.754 seconds

Of course, this has been regression tested with all the files
that the previous commit got working.  Thanks to Michael Pruett
(audiofile author) for the hint and shame on me for forgetting
about it for over two years :x

git-svn-id: https://svn.musicpd.org/mpd/trunk@4682 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-24 21:59:19 +00:00
Eric Wong
b8fe818ae7 audiofile_plugin: fix for playing mono .au files with 8000Hz sample rate
Use the 'Virtual' variants of afGetSampleFormat, afGetChannels,
afGetVirtualFrameSize in the audiofile library, since it already does
the necessary abstraction for us.

Of course, I've regression tested these changes against my
standard 44100Hz/2ch/16bit wave files and they continue to play
fine.

Files tested:
english.au (Linus Torvalds pronouncing 'Linux' in English)
B01.Red_Bright_Heart.au (Chinese opera, sounds correct to me even though
I don't actually understand the words)

git-svn-id: https://svn.musicpd.org/mpd/trunk@4681 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-24 20:54:40 +00:00
J. Alexander Treuman
25555cd1b0 Use strcasecmp to check for replaygain id3v2 tags, since apparently some apps write them in all caps.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4672 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-23 19:10:47 +00:00
J. Alexander Treuman
87327cb931 Instead of ignoring mp2/mp3 files that start with a layer 1 frame, just skip the layer 1 frames looking for a layer 2 or 3 frame.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4671 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-23 14:06:16 +00:00