Max Kellermann
bf15cac980
Merge branch 'v0.19.x'
2014-11-24 09:00:14 +01:00
Max Kellermann
951bad46e0
decoder/{dsdiff,dsf,opus}: fix deadlock while seeking
2014-11-24 08:54:30 +01:00
Max Kellermann
c643b6ff16
configure.ac: add macro MPD_ENABLE_AUTO_PKG_LIB
2014-11-22 23:50:21 +01:00
Max Kellermann
b3f5b4932c
configure.ac: add macro MPD_ENABLE_AUTO_PKG
...
Simplify the definition of many build options.
2014-11-21 22:19:57 +01:00
Max Kellermann
26382713c2
release v0.19.4
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUa674AAoJECNuiljG20USNMUQAIpl0/cJI98dljXWZ4uzaRoc
JMPTvWkVUP9qBN3VnNISR+2NXsL7iGO6rXh9MACpfv8mcOf+/jg8LCX/3/RzDkP+
lnhFqQ+xnl3TUjwpABKM2lU87I8QXamtCbxEvONTpcH4Dt/GVfBolrlzBu1G17cF
7f07uZntpz/Dhtg0SWCVLS+QDGQtDNCgpXcfGlxWsGfEBWKAC+Aifv+2QDA0nXOU
WfOU2r3vV3UNmQSu0/O6cyB5Du01SVVYSa5BNpLu3o6CHawAhVcTXdLX12JSDahk
Qjy9VAF9bX+odZJ9M4xAlRBZYZWKfiZ6Dt0FevevqAllkd2GlQJPXWWXWXJ4PWd+
a3K/js1hLgCIO2qk8aDKaFGTOnVk5F5eFN6d+jh5gwcuFiGa0CcSWxaCEe7vBVy3
CTukuUBlgN4hA9gBNNvJrpbV+BO8ZY1LkS6w3E95Qz3VrwclTl5qKW2+6TYLMKBA
VIBQM8TwOHAKyhn50vhBfk6Zz6c28LkrMc0Ycm5xFD1I3fC6E62vqDVfBUMr9HJi
fG3PmxcrSTH8ZKgSADjF7DtR0M5munUrQhw7w0pwXUpKuDvUg3nIHulu88Dl9rZq
MDODNRpBkQwGXs9i4SxLTSA9nQtlAh3x3mqtjOf1i2jhkuSJ8R8jQne+8wDaT0Bt
dXD9h+qc/8+FOnrB0uYd
=LYOC
-----END PGP SIGNATURE-----
Merge tag 'v0.19.4'
2014-11-18 21:47:20 +01:00
Max Kellermann
7c6b991de7
decoder/opus: add MIME types audio/ogg and application/ogg
2014-11-12 15:16:34 +01:00
Max Kellermann
c3f6502be2
release v0.19.3
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUYeOEAAoJECNuiljG20USToUP/2g/M7jKlM1MpADeFh2TOYEC
dnSDPFCMosu1Hjxyz/rzwqOh7FlMnYPtANtVn90v4D6XVkuhv5WMwSnlMBWJXspy
VWA6bewGihbWvDvOcLcYsb31VH78JnvNjxxDaeakVZ7Bq43wQBJRNi2VKEKMmg27
Shp8MUL+UXsMMtLABvZlhajPQS+CNQB1DijP7wlemrbPpmUtmeHEgbpmQk9BKBq0
eXJt5QRQRgI9J51j1yaXSaeKsPFk/2AV36KMBv3kh+rgCGWetd1XeBkknN/HjNw4
2qWsQ8Ng3s/kOCZhEa0nXqnR+w2RtpOJ4bOQaIDeBSzCdXSeDWq5yh/kHKHsXzO4
5uq++GwCcm/Odwj17rJ4wJDGnl4DkP8abQIPb4AiwfpuUtQ+fHvQuNU0Dc2SY4Oz
KkNU4nIcJwaHlDAQDsWjowAJJC2W0GPSGzVKCWjH2W3kmJZq2hV3o3y3YOMH8gpN
wmdmqE8JKCOJm5QxnfoiMKoUxUgNMxN3iceMnDkNqz/g1uOq5TUk8B5adLuY0OSg
n+2eDBaUNe2tCbxgIeKxVlXrWVBZyrzwFk3FGyVuGhobmVJ1Wwvx5kOIVvwo0JTC
LSc8FP4R8/87G1XlVMo0alqChLpXbH+ncaGhdN74pKVP8TFtJCoTPgRPj+svF9YY
A7AiNXCXCCOD78gKYCtu
=GH2D
-----END PGP SIGNATURE-----
Merge tag 'v0.19.3'
2014-11-11 11:43:52 +01:00
Max Kellermann
c98cb1d6f9
decoder/opus: support chained streams
2014-11-11 11:20:18 +01:00
Max Kellermann
ba6f2b0467
decoder/opus: move code to HandleEOS()
2014-11-11 11:20:16 +01:00
Max Kellermann
23465ad985
decoder/opus: improved error logging
2014-11-11 11:20:03 +01:00
Max Kellermann
7886a14b74
decoder/opus: fix mistyped LoadEOSPacket() return value
2014-11-11 11:18:51 +01:00
Max Kellermann
466b6a23cd
decoder/opus: eliminate flag "found_opus"
...
Check opus_decoder!=nullptr instead.
2014-11-11 08:30:11 +01:00
Max Kellermann
4a04f73434
decoder/opus: add constexpr output_buffer_frames
2014-11-11 07:45:31 +01:00
Max Kellermann
c64ad78c7b
decoder/ffmpeg: support opus
2014-11-10 18:00:30 +01:00
Max Kellermann
8ff0d99092
decoder/audiofile: fix bit rate calculation
2014-11-10 09:00:50 +01:00
Max Kellermann
2d9876a261
Merge branch 'v0.19.x'
2014-11-07 19:41:19 +01:00
Max Kellermann
125eb01e03
decoder/ffmpeg: support opus
2014-11-07 19:22:26 +01:00
Max Kellermann
303d67aed2
release v0.19.2
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUVifPAAoJECNuiljG20USJbYP/2SjixBWtHjHn1wF9K3tRzs3
7GGSBxxBpJVZCTg/PGRJ9m2BNJvocBPhw3WN7PU29xi5kBxDy5yvBcc58OzYHz28
HVZymj8zhdiDqULHPn6b9px6f4Oe8+1xh9q6gwR8rZsRAXKYDrC0GPDMGBeSkWo1
ycnSVTcZ4CjfkM2/jfnCc79q4mC+k2BR5T9OYRnznThVMx+gimMwLFYBjNNdh1MT
ugAxXVtpDs2aTR8fqu/ADGLJosfTjzGdqQ3eowOqVXmsmVIttBGruZdKyrN9KAtU
FfPf60zZ3I8qKppArfEoJAejNyGbhIg1AqX7J7IxHMI+zjlo2kGnEcVFJaG5zZb/
GQThrzGXRPFLlvVDtzfALmBNo3gN0y4I73exlpRCupaxZdFaD5UUPlaLak8r9bt5
30YBBxs7ydIPqs25AwZ9f94NT2QrKityLv+O+Q8lz8AfurqJnuOwEo/HuT4Bxv47
pSx86TtokknyN0A3lw5ttIMbTqN5eNHjJY4PulGJPEPfKjn9p4NLtLrZjT4fnnKG
GKXYcMzeOhMKszbHzOR7dcjI0uKXyx4r7LE4SdL+3msCYbyXDTbCirdusZ1pZDC3
ttkSf+a/dILHZagEAN37t53/NlsAjxjJzenKD4H6Eprxm6er24kSWu+W410b3Bw0
jYLYGXCWVZyJ5dqpTcYb
=NiFd
-----END PGP SIGNATURE-----
Merge tag 'v0.19.2'
2014-11-02 14:06:05 +01:00
Max Kellermann
f6b2899dd2
decoder/faad: remove workaround for ancient libfaad2 ABI bug
...
Many years ago, FAAD had a serious ABI bug: the NeAACDecInit()
prototype in its header declared the "samplerate" parameter to be
"unsigned long *", but internally, the function assumed it was
"uint32_t *" instead. On 32 bit machines, that was no difference, but
on 64 bit, this left one portion of the return value uninitialized;
and worse, on big-endian, the wrong word was filled. This bug had to
be worked around in MPD (commit 9c4e97a6
).
A few months later, the bug was fixed in the FAAD CVS in commit 1.117
on file libfaad/decoder.c; the commit message was:
"Use public headers internally to prevent duplicate declarations"
The commit message was too brief at best; the problem was not
duplicate declarations, but a prototype mismatch. No mention of the
bug fix in the ChangeLog.
The MPD project never learned about this bug fix, and so MPD would
always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6
years later, it's about time to fix this second ABI problem. Let's
kill the workaround!
2014-11-02 11:50:56 +01:00
Steven OBrien
bccd4ef2f7
decoder/ffmpeg: recognize MIME type audio/aacp
2014-11-02 11:50:56 +01:00
Max Kellermann
7d5442e103
Decoder, Playlist: ignore URI query string for plugin detection
...
Use the new uri_get_suffix() overload that removes the query string.
2014-11-01 13:41:18 +01:00
Max Kellermann
54c591bd9d
decoder/mad: fix negative replay gain values
...
Negating an unsigned integer does not work.
2014-10-28 22:22:30 +01:00
Max Kellermann
bc5a53574c
decoder/faad: remove workaround for ancient libfaad2 ABI bug
...
Many years ago, FAAD had a serious ABI bug: the NeAACDecInit()
prototype in its header declared the "samplerate" parameter to be
"unsigned long *", but internally, the function assumed it was
"uint32_t *" instead. On 32 bit machines, that was no difference, but
on 64 bit, this left one portion of the return value uninitialized;
and worse, on big-endian, the wrong word was filled. This bug had to
be worked around in MPD (commit 9c4e97a6
).
A few months later, the bug was fixed in the FAAD CVS in commit 1.117
on file libfaad/decoder.c; the commit message was:
"Use public headers internally to prevent duplicate declarations"
The commit message was too brief at best; the problem was not
duplicate declarations, but a prototype mismatch. No mention of the
bug fix in the ChangeLog.
The MPD project never learned about this bug fix, and so MPD would
always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6
years later, it's about time to fix this second ABI problem. Let's
kill the workaround!
2014-10-25 20:42:50 +02:00
Max Kellermann
de7e4f0db7
decoder/wavpack: don't use GLib
2014-10-25 01:24:45 +02:00
Steven OBrien
8cd17ce045
decoder/ffmpeg: recognize MIME type audio/aacp
2014-10-25 00:26:58 +02:00
Max Kellermann
7e12aea1d8
input/Open: use OpenLocalInputStream()
...
Make the "open" method of plugins "file" and "archive" dummy methods
that always fail. Instead, let InputStream::Open() hard-code access
to these two plugins by using OpenLocalInputStream(). This allows
simplifyin the algorithm for falling back to probing archive plugins.
2014-10-02 21:50:14 +02:00
Max Kellermann
20346b0da4
DecoderThread: use OpenLocalInputStream() for local files
2014-10-02 21:48:52 +02:00
Max Kellermann
8547611479
release v0.18.16
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJUJSq1AAoJECNuiljG20US8CAQAJo/4jAPKsba6RVWf4oWo1Tl
1KUVHaqPonboZ+ArexI+eLObRzmzawTdzc1iVAI8KhISaZkfBWvY3PGFbn6GW3xZ
o1GMRkjhps/ZWIXao2qzelITMzEWzKuAPEGdQE2Z3qXDP/bva0QnAJwjm6zfMsrz
qKYDjQlCGkt7s6jw8gbLGrcoPgP+q7s522qb/0gBc620OivufuEeAQquaahY3X+L
PnXGqsNr34Xqw8EeHCahVGvvQeetY0dGTG/EUiLuxgACqRnjnxwgZ1Xem3YSlGgP
KZVmEqepcvLgz7BlLkQrHse4eEcdxmojRP4towUPUOeRKb1LIlDr9AF6LoulGJr4
jCTeOhzRpmh7wo/rh2klMJXSkqqQlu84+jG7d+PW38oweVCO9HekhyfIDWYDJq/+
jndDRMK7pcPl4sBBXPrJNLdGAQZoJDxRD84syEwOmGOL1FgV2KZl1pJ81fOacR5x
BHeRZrtd0iZ97/qZL+wtNskKU21lMjKqv48saF224FhKCtR1iXkVw4fH6U+H3Q1w
8mrghkkMUom6yQ1mL7U2zA3P6yUcpOJIp0OwMLkJc4H7iOY3a21IAsH0KXmn/Z5O
RE+0zSZm4krUg5uoxhhJWbJnORjoexMv1iaR8+uh71qvBI+RwQXjYA94VJ3Rf88/
R4tE+xb0ZY8OvTXGswdF
=y5Hv
-----END PGP SIGNATURE-----
Merge tag 'v0.18.16'
2014-09-26 11:06:11 +02:00
Max Kellermann
45310d0cf6
decoder/mp4v2: add tag table
2014-09-24 23:29:10 +02:00
Max Kellermann
032e435490
decoder/mpg123: support ID3v2, ReplayGain and MixRamp
2014-09-24 22:53:50 +02:00
Max Kellermann
78c43edcac
decoder/mpg123: make variables more local
2014-09-24 22:53:39 +02:00
Max Kellermann
f32d34b965
decoder/flac: pass VorbisComment to flac_parse_mixramp()
2014-09-24 22:50:28 +02:00
Max Kellermann
8a7ff6a6fd
decoder/flac: move code to tag/MixRamp.cxx
2014-09-24 22:44:58 +02:00
Max Kellermann
6c48aa5fae
decoder/mad: move code to tag/MixRamp.cxx
2014-09-24 22:40:34 +02:00
Max Kellermann
d82547acd3
decoder/flac: pass VorbisComment to flac_parse_replay_gain()
2014-09-24 22:34:08 +02:00
Max Kellermann
441f9cc2ee
tag/ReplayGain: add VorbisComment parser
...
Move code from the Vorbis and FLAC decoder plugins.
2014-09-24 22:21:13 +02:00
Max Kellermann
d1e31261fe
decoder/{vorbis,flac}: move duplicate code to tag/VorbisComment.cxx
2014-09-24 21:50:42 +02:00
Max Kellermann
05dd9acba8
tag/ApeReplayGain, decoder/mad: move duplicate code to tag/ReplayGain.cxx
2014-09-24 21:50:34 +02:00
Max Kellermann
f2c28d287a
DecoderBuffer: struct to class
2014-09-22 08:49:14 +02:00
Max Kellermann
90c228abca
DecoderBuffer: convert functions to methods
2014-09-22 08:32:44 +02:00
Max Kellermann
505e6bec9e
decoder/faad: use DecoderBuffer references
2014-09-22 08:30:25 +02:00
Max Kellermann
ee027f237b
decoder/faad: allocate DecoderBuffer on stack
2014-09-22 08:29:07 +02:00
Max Kellermann
3ae0d6f421
DecoderBuffer: export the struct
...
Eliminates the functions _new() and _free().
2014-09-22 08:18:58 +02:00
Max Kellermann
13b66a77c7
DecoderBuffer: make "decoder" const
2014-09-21 14:02:39 +02:00
Max Kellermann
ed70836057
DecoderBuffer: convert pointer to reference
2014-09-21 13:50:27 +02:00
Max Kellermann
a68e52c2e3
DecoderBuffer: use class DynamicFifoBuffer
2014-09-21 13:39:26 +02:00
Max Kellermann
ea37b89753
decoder/adplug: log version number
2014-09-21 13:22:56 +02:00
Max Kellermann
5d89aa06f7
decoder/adplug: move the buffer into the loop
2014-09-21 13:20:30 +02:00
Max Kellermann
ead034e638
decoder/sndfile: include cleanup
2014-09-21 13:15:53 +02:00
Max Kellermann
a294838bcd
decoder/audiofile: fix indent
2014-09-19 23:57:09 +02:00
Max Kellermann
1c03d1e87d
decoder/sndfile: remove obsolete code comment
2014-09-19 23:00:12 +02:00
Max Kellermann
f8804c8a56
decoder/sndfile: remove debug printf()
2014-09-19 22:49:31 +02:00
Max Kellermann
dd1cec4196
decoder/sndfile: log detailed sf_open_virtual() error message
2014-09-19 21:51:24 +02:00
Max Kellermann
d1a8a4481e
decoder/sndfile: support float and 16 bit samples
...
Support these PCM formats natively, instead of letting libsndfile
convert everything to 32 bit.
2014-09-19 21:44:16 +02:00
Max Kellermann
5921ffaa36
decoder/sndfile: move sf_readf_int() call to sndfile_read_frames()
2014-09-19 21:42:06 +02:00
Max Kellermann
cf47b68c1e
decoder/sndfile: add sndfile_sample_format()
...
Prepare for other sample formats.
2014-09-19 21:06:44 +02:00
Max Kellermann
a464dc681a
release v0.18.14
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJUEdhhAAoJECNuiljG20USwKkP/1MIm6J2ydXEP81RD/3llz6h
2t8EK94cEIdb6bA6goBI0Pipz7YAtmjgfnDRW90AvFcxNuVt87esxG82gVOiosvo
7LByehQ2kq/w0evILWy8X1eAvqIk/PvG6T/pZcPrrj7kHrZaIOXh0SVTZ5NLq7HC
drunwHQxgVntB/410h7BKEFbg1qWHPGxfTyf6qJsZPkHfr5QcgbHrYN7QCr1eUv9
mARx4Nxo9MXuiqOJOS7ck80V68nbnFdxjNXSflUkl94O0MfiPc741Snbe7qnHI91
I+BQYCBExKzoqFszuuRZQjxFpJalg4Y/9/stn6+dYemtC3WpreGHogweUBlPZ5if
wJRL/A/zHAY0xE/hohiEqY6pHZWmVolbumtp7LfNR7dejOetn0IPW+KnFnjYec21
qkJG/mq8fHStdQMTzp5NDoqh8VrPaBAAhjgP3suZY2wZ5xfbLXHk/HNKdQLvX8s3
Vv4wcDNsfbOJ/1ZTBo/nqceTkOyHrov5cDSotYnO1hs963vyk3LFwY2IRCgPdOR0
7o77JmKHZnzZSw60CIT6Mf1+rx38x++Rq3UGDYuH4B4L4VqXv2WrUp32w1VzHQVO
Dcd/dxwW/sB1SwMdi5J4tIBJCSn5mF7yvBPR0PB5NiZiX1YB6hEqmaXYfwLCqujo
xyWy8gPJbmYw6XJPmw6A
=3azu
-----END PGP SIGNATURE-----
Merge tag 'v0.18.14'
2014-09-11 19:26:58 +02:00
Max Kellermann
c14a00eec9
decoder/ffmpeg: use memset() to initialize AVProbeData
2014-09-09 19:07:46 +02:00
Max Kellermann
219c42522f
decoder/ffmpeg: pass MIME type to ffmpeg/libav version 11
...
That attribute was uninitialized before, which could crash
libavformat.
See Debian bug 760669
2014-09-07 22:05:33 +02:00
Max Kellermann
7ada7def9e
decoder/audiofile: fix crash after seeking
...
Log call was added to the wrong branch.
Fixes regression by commit ca1a1149
2014-09-06 19:32:10 +02:00
Max Kellermann
26bef5d209
DecoderAPI: use std::min()
2014-08-31 08:27:51 +02:00
Max Kellermann
cd6e0ff88a
MusicChunk: remove special case for num_frames==0
...
Simply return an empty WritableBuffer, not a nulled one.
2014-08-31 08:26:03 +02:00
Max Kellermann
bc5b5afcbf
decoder/sndfile: refactor frame_to_time()
2014-08-30 00:53:14 +02:00
Max Kellermann
8b62127770
decoder/gme: fix song duration
...
The unit of gme_info_t::length is milliseconds, not centiseconds.
2014-08-29 23:03:29 +02:00
Max Kellermann
3158955198
TagHandler: pass SongTime to duration()
2014-08-29 22:52:04 +02:00
Max Kellermann
d9d97bd17b
DecoderAPI: pass SignedSongTime to decoder_initialized()
2014-08-29 21:40:15 +02:00
Max Kellermann
7556abb92d
decoder/faad: bit_rate==0 is an error
2014-08-29 21:38:08 +02:00
Max Kellermann
9d3a85d434
MusicChunk: use SignedSongTime for the time stamp
2014-08-29 13:20:58 +02:00
Max Kellermann
ca252804c6
DecoderControl: use SignedSongTime for the song duration
2014-08-29 13:20:58 +02:00
Max Kellermann
f02998b106
DecoderControl: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:08:44 +02:00
Max Kellermann
6ad933982f
DetachedSong: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:03:18 +02:00
Max Kellermann
26f2d7fbae
DecoderControl: update API documentation
2014-08-28 13:03:18 +02:00
Max Kellermann
ba6ba7d4be
DecoderControl: use std::chrono::duration for Seek()
2014-08-27 18:48:43 +02:00
Max Kellermann
0c2d767f6f
DecoderAPI: use std::chrono::duration for decoder_seek*()
...
For type safety and code readability.
2014-08-26 22:27:04 +02:00
Max Kellermann
02e697032f
decoder/pcm: use integer seek times
2014-08-26 22:05:02 +02:00
Max Kellermann
07dc262690
decoder/dsf: use integer seek times
2014-08-26 22:00:16 +02:00
Max Kellermann
6bf8d5b936
decoder/dsdiff: use integer seek times
2014-08-26 21:53:50 +02:00
Max Kellermann
93858bf262
decoder/wildmidi: use integer seek times
2014-08-26 11:41:48 +02:00
Max Kellermann
f64da46a98
decoder/wavpack: use integer seek times
2014-08-26 11:39:58 +02:00
Max Kellermann
2052a029ee
decoder/vorbis: use integer seek times
2014-08-26 11:38:39 +02:00
Max Kellermann
c6aafff701
decoder/sndfile: use integer seek times
2014-08-26 11:36:20 +02:00
Max Kellermann
26f0f92210
decoder/opus: use integer seek times
2014-08-26 11:34:56 +02:00
Max Kellermann
bdc4ae2b86
decoder/opus: remove redundant decoder_timestamp() call
...
After seeking, the MPD core automatically refreshes the timestamp, and
thus discards the value from decoder_timestamp().
2014-08-26 11:34:24 +02:00
Max Kellermann
9ca9341384
decoder/mpg123: use integer seek times
2014-08-26 11:31:57 +02:00
Max Kellermann
7f4f8b7c7d
decoder/mpcdec: use integer seek times
2014-08-26 11:31:49 +02:00
Max Kellermann
8870526457
decoder/flac: use integer seek times
2014-08-26 11:30:21 +02:00
Max Kellermann
f057e1e17a
decoder/audiofile: use integer seek times
2014-08-26 11:29:22 +02:00
Max Kellermann
8561c9c5a6
DecoderAPI: add decoder_seek_where_frame()
2014-08-26 11:27:41 +02:00
Max Kellermann
23199719d9
decoder/mp4v2: use integer seek times
2014-08-26 11:20:15 +02:00
Max Kellermann
a606ef0700
decoder/ffmpeg: use integer seek times
2014-08-26 11:15:53 +02:00
Max Kellermann
a234de1ee3
decoder/gme: use integer seek times
2014-08-26 11:15:40 +02:00
Max Kellermann
d266898617
decoder/modplug: use integer seek times
2014-08-26 11:11:36 +02:00
Max Kellermann
69b5929c5a
decoder/mad: use integer seek times
...
Avoid roundtrips to floating point.
2014-08-26 11:07:47 +02:00
Max Kellermann
316c72a4ae
DecoderAPI: add decoder_seek_where_ms()
...
Move to fixed-point integers instead of floating point.
2014-08-26 11:02:02 +02:00
Max Kellermann
9da88eec3e
decoder/mad: move duplicate code to RecoverFrameError()
2014-08-26 10:52:17 +02:00
Max Kellermann
f10d9996d2
decoder/mad: simplify if/else chain
2014-08-26 10:52:17 +02:00
Max Kellermann
58ec9d3a73
decoder/mad: make variables more local
2014-08-26 10:34:04 +02:00
Max Kellermann
4a503ba1ad
decoder/mad: simplify "return", eliminate check
...
This check was redundant, because we could only exit the loop when
ret==DECODE_OK.
2014-08-26 10:30:22 +02:00
Max Kellermann
da6dd2dc92
decoder/mad: don't reset the xing struct
...
Not necessary.
2014-08-25 10:32:40 +02:00
Max Kellermann
40b9de66c7
decoder/mad: remove unused flag "found_xing"
2014-08-25 10:31:55 +02:00
Max Kellermann
aac985951a
decoder/mad: convert enums/macros to constexpr
2014-08-24 21:06:50 +02:00
Max Kellermann
662cc5fe20
decoder/mad: make variables more local
2014-08-24 20:57:47 +02:00
Max Kellermann
8808aad529
decoder/dsdiff: implement seeking
2014-08-23 15:27:21 +02:00
Max Kellermann
6d7eaba845
decoder/dsdiff: refactor the main decoder loop
...
Check for STOP before decoding the first chunk. This reduces the
command latency.
2014-08-23 15:25:40 +02:00
Max Kellermann
4259b17b91
decoder/dsdiff: add local variable "remaining_bytes"
...
Remember the chunk's total size.
2014-08-23 15:21:08 +02:00
Max Kellermann
828ea700e8
decoder/dsdiff: don't skip remaining bytes
...
Nobody cares.
2014-08-23 15:19:34 +02:00
Max Kellermann
7f22685fa3
decoder/dsdiff: eliminate local variable "buffer_samples"
2014-08-23 15:17:31 +02:00
Max Kellermann
40db9dff3b
decoder/dsdiff: support only one "DSD" chunk
...
Eliminate the loop from dsdiff_stream_decode(). It makes the code
complex, real-world files with multiple DSD chunks are outside of the
specification, and the "chunk_size" variable would be bogus anyway.
2014-08-23 15:14:16 +02:00
Max Kellermann
67cc09416f
decoder/dsf: implement seeking
2014-08-23 14:00:38 +02:00
Max Kellermann
f2a75fbfc7
decoder/dsf: refactor the main decoder loop
...
Check for STOP before decoding the first chunk. This reduces the
command latency.
2014-08-23 13:57:57 +02:00
Max Kellermann
b1fb09e183
decoder/dsf: make the buffer more local
...
This allows the compiler to discard buffer contents between two
iterations.
2014-08-23 13:55:52 +02:00
Max Kellermann
cd0082c630
decoder/dsf: eliminate pointless return statement
2014-08-23 13:54:07 +02:00
Max Kellermann
f78527d1e3
decoder/dsf: use the block count internally
2014-08-23 13:51:08 +02:00
Max Kellermann
1f642238a7
decoder/dsf: don't skip remaining bytes
...
Nobody cares.
2014-08-23 13:50:36 +02:00
Max Kellermann
6fe06cad98
decoder/dsf: count the blocks, not the remaining bytes
...
Prepare refactoring the whole plugin to use blocks instead of bytes.
A block is the smallest addressable unit, and it will simplify the
seeking code.
2014-08-23 13:44:53 +02:00
Max Kellermann
2335fdbb5a
decoder/dsf: allow channel setups other than stereo
...
This finishes the multi-channel support. Development of the feature
was started with commit 02cc77cd8
2014-08-23 13:40:21 +02:00
Max Kellermann
1b6f7c3eb7
decoder/dsf: eliminate another hard-coded stereo mode assumption
...
When calculating the upper bound using the "sample count" format
header, don't assume it's stereo.
2014-08-23 13:39:00 +02:00
Max Kellermann
67f0d26d17
decoder/dsf: fix big-endian bugs
2014-08-23 13:35:29 +02:00
Max Kellermann
8574bcd494
decoder/dsf: compare with InputStream::GetRest() instead of ..GetSize()
2014-08-23 13:26:17 +02:00
Max Kellermann
02cc77cd82
decoder/dsf: fix multi-channel files
...
The plugin was horribly bugged for files that were not stereo.
2014-08-22 07:30:32 +02:00
Max Kellermann
d8782ce5fd
decoder/dsf: simplify dsf_to_pcm_order()
...
Don't pass the buffer size to the function, as it's known at compile
time. Use "restrict" on the pointer arguments, and merge the two
loops, which allows the compiler to optimize this loop with a few SSE2
instructions.
2014-08-22 06:58:08 +02:00
Max Kellermann
dedc2986c6
decoder/dsf: fix noise at end of malformed file
...
Read one block at a time. This discards the last partial block, which
cannot be interleaved anyway. Previously, uninitialised memory was
used to interleave the last block, which generated some noise.
2014-08-21 17:46:25 +02:00
Max Kellermann
74cdc0005a
decoder/dsf: eliminate temporary buffer
...
Convert into a second buffer that gets passed to decoder_data()
without copying back to the first buffer.
2014-08-21 17:15:29 +02:00
Max Kellermann
a756cd9565
decoder/dsf: add constant DSF_BLOCK_SIZE
2014-08-21 17:12:43 +02:00
Max Kellermann
ae27c3f4c5
decoder/dsf: use size_t loop variables when the limit is a size_t
2014-08-21 17:09:49 +02:00
Max Kellermann
6d41f36266
decoder/dsf: use memcpy()
2014-08-21 13:09:14 +02:00
Max Kellermann
57cbcdf2ec
decoder/dsf: make the "scratch" buffer local
...
This allows the compiler to discard buffer contents between two
function calls.
2014-08-21 13:05:35 +02:00
Max Kellermann
455fd180b1
Merge branch 'v0.18.x'
2014-08-21 12:52:27 +02:00
Max Kellermann
78abcd7df7
decoer/dsdiff: fix endless loop on malformed file
...
Same bug as in the previous commit.
2014-08-21 12:48:03 +02:00
Max Kellermann
23dce21647
decoer/dsf: fix endless loop on malformed file
...
When the data chunk size is not a multiple of the frame size, the last
partial frame lead to an endless loop. We fix this by checking
chunk_sze>=frame instead of chunk_sze>0. This way, the partial frame
is simply skipped.
2014-08-21 12:37:22 +02:00
Max Kellermann
e6177c3349
decoder/dsf: remove unused attribute "id3_size"
2014-08-20 09:46:42 +02:00
Max Kellermann
e2adb82e29
decoder/DsdLib: use offset_type instead of uint64_t
2014-08-19 22:39:44 +02:00
Max Kellermann
bb472206de
InputStream: move typedef offset_type to Offset.hxx
...
Reduce header dependencies.
2014-08-19 22:29:52 +02:00
Max Kellermann
181edf4b53
InputStream: make offset_type unsigned
2014-08-19 21:23:03 +02:00
Max Kellermann
9be90bd1c9
decoder/wavpack: add local reference variables
2014-08-19 20:58:08 +02:00
Max Kellermann
106e535577
decoder/sndfile: check InputStream::KnownSize()
2014-08-19 20:57:25 +02:00
Max Kellermann
194be51f05
decoder/pcm: check InputStream::KnownSize()
2014-08-19 20:57:00 +02:00
Max Kellermann
a862e363ea
decoder/mpcdec: check InputStream::KnownSize()
2014-08-19 20:55:51 +02:00
Max Kellermann
2e64afca27
decoder/modplug: check InputStream::KnownSize()
2014-08-19 20:53:02 +02:00
Max Kellermann
51cda0be2a
decoder/mad: check InputStream::KnownSize()
2014-08-19 20:44:29 +02:00
Max Kellermann
4da3291157
decoder/ffmpeg: check InputStream::KnownSize()
2014-08-19 20:44:29 +02:00
Max Kellermann
52edabf2cb
decoder/faad: remove unnecessary cast to size_t
2014-08-19 20:44:29 +02:00
Max Kellermann
43a1a0f3ab
decoder/faad: remove size!=0 check
...
Since we already checked InputStream::KnownSize(), we can assume that
GetSize() returns a valid value, and this check is obsolete.
2014-08-19 20:44:29 +02:00
Max Kellermann
e88524f274
decoder/faad: check InputStream::KnownSize()
...
Replace the bogus GetSize() check and call GetSize() only when
necessary.
2014-08-19 20:44:29 +02:00
Max Kellermann
7a929fcd27
decoder/faad: call GetSize() only when needed
2014-08-19 20:44:29 +02:00
Max Kellermann
7087fdf6c0
decoder/DsdLib: make variables more local
2014-08-19 20:44:29 +02:00
Max Kellermann
67093a5143
decoder/DsdLib: use fixed-length ID3 buffer
...
Variable-length arrays are not allowed in C++.
2014-08-19 20:42:40 +02:00
Max Kellermann
3f34016888
decoder/DsdLib: check InputStream::KnownSize()
2014-08-19 20:24:33 +02:00
Max Kellermann
1307633a84
decoder/dsf: check InputStream::KnownSize()
2014-08-19 20:24:09 +02:00
Max Kellermann
1a53f07d80
decoder/dsf: remove unnecessary ID3 offset check
...
If the offset is out of range, the seek will simply fail. Not a
problem.
2014-08-19 20:23:36 +02:00
Max Kellermann
b924568f79
decoder/audiofile: check InputStream::KnownSize()
...
The plugin assumes that the size is known, but does not verify it at
runtime.
2014-08-19 11:58:15 +02:00
Max Kellermann
636f5d4a1d
{input,decoder}/ffmpeg: move ffmpeg_domain to lib/ffmpeg/Domain.cxx
...
Eliminate duplicate definition (in input plugin and decoder plugin).
2014-08-18 10:12:37 +02:00
Jurgen Kramer
9b9d189a33
decoder/dsf: Allow up to DSD512. Enable DSD rates based on Fs=48kHz
2014-08-16 18:40:53 +02:00
Jurgen Kramer
7c3af4f56f
Report bitrate for DSF and DSDIFF DSD decoders
2014-08-16 18:38:44 +02:00
Max Kellermann
880ce080b7
decoder/dsf: fix indent
2014-08-16 18:38:15 +02:00
Max Kellermann
a9f6556454
Merge branch 'v0.18.x'
2014-08-16 08:25:10 +02:00
Max Kellermann
fe9299ceff
decoder/ffmpeg: use avcodec_descriptor_get() to determine codec name
...
In version 11, both ffmpeg and libav deprecate
AVCodecContext::codec_name. The function avcodec_descriptor_get() has
been introduced long ago.
2014-08-13 18:40:39 +02:00
Max Kellermann
56f61a6d59
PcmConvert: Convert() returns ConstBuffer
2014-08-12 16:36:07 +02:00
Max Kellermann
c94b4466d5
MusicChunk: rename struct to MusicChunk
2014-08-12 15:56:41 +02:00
Andrée Ekroth
ec3568bd97
decoder/Mp4v2: fix crash with undefined error
...
When no track is found the error is now properly set.
Previously the calling function tried to log an undefined
error, which resulted in a crash. MPD falls back to
ffmpeg for unsupported tracks, such as ALAC.
This should fix issue 4051.
2014-08-08 23:24:26 +02:00
Andrée Ekroth
330b6a0482
decoder/Mp4v2: add MP4v2 decoder plugin
...
This plugin uses the MP4v2 library to play mp4/m4a files.
It is limited to file_decode.
2014-08-07 21:01:38 +02:00
Max Kellermann
96abd70c13
decoder/dsdiff: move artist/title/id3 offsets out of DsdiffMetaData
...
They are only used inside dsdiff_read_metadata_extra().
2014-07-12 20:51:25 +02:00
Max Kellermann
1f9d9c3176
Merge branch 'v0.18.x'
2014-07-12 20:51:22 +02:00
Max Kellermann
94efeb2845
decoder/dsdiff: simplify dsdlib_skip() call
2014-07-12 20:51:00 +02:00
Max Kellermann
a73834436f
decoder/dsdiff: simplify loop condition, merge branches
2014-07-12 20:46:24 +02:00
Max Kellermann
85f4aeca05
decoder/dsdiff: ignore garbage null byte at end of file
...
Failure to read another chunk header is not fatal. Continue to read
metadata.
2014-07-12 20:41:26 +02:00
Max Kellermann
7db84a961a
decoder/dsdiff: fix metadata parser bug (uninitialized variables)
2014-07-12 20:41:26 +02:00
Max Kellermann
543a58bb87
DecoderBuffer: implement _skip() using decoder_skip()
2014-07-12 02:26:38 +02:00
Max Kellermann
b2b95cad20
DecoderBuffer: add method _need()
...
Move code from the FAAD decoder plugin.
2014-07-12 02:23:48 +02:00
Max Kellermann
eabec967ec
DecoderBuffer: remove unused method _is_full()
2014-07-12 02:23:36 +02:00
Max Kellermann
e42b152037
decoder/faad: eliminate the adts_find_frame() loop
...
This loop is completely unnecessary. We just need to find the first
ADTS frame and feed it into NeAACDecInit().
2014-07-12 01:51:39 +02:00
Max Kellermann
da599e3f1a
decoder/faad: split faad_stream_decode()
...
Eliminate duplicate cleanup code.
2014-07-12 01:47:07 +02:00
Max Kellermann
4c7b0b935b
DecoderBuffer: remove unused method _is_empty()
2014-07-12 01:28:37 +02:00
Max Kellermann
c400876df1
Merge branch 'v0.18.x'
2014-07-12 01:27:18 +02:00
Max Kellermann
a960e2ef48
decoder/faad: estimate song duration for remote files
...
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that. That however is
extremely expensive for remote files, and will delay playback for a
long time. Workaround: check only the first 128 frames and try to
extrapolate from here. Fixes Mantis ticket 0004035.
2014-07-12 00:37:00 +02:00
Max Kellermann
06aa689383
decoder/faad: bail out early if sample rate is invalid
2014-07-12 00:23:11 +02:00
Max Kellermann
835b0c44cd
decoder/faad: use adts_check_frame() in faad_song_duration()
...
Eliminate more duplicate code.
2014-07-12 00:18:02 +02:00
Max Kellermann
54b6f8a4ae
decoder/faad: test "seekable" after ADTS frame check
...
Don't bother to check for ADIF just because the stream is not
seekable.
2014-07-12 00:17:51 +02:00
Max Kellermann
18787ebe8f
decoder/faad: move code to faad_decoder_new()
...
Merge some duplicate code.
2014-07-12 00:17:43 +02:00
Max Kellermann
47e8fcf37e
decoder/faad: remove unnecessary read
...
Eliminate some overhead when the caller doesn't need the buffer.
2014-07-12 00:17:30 +02:00
Max Kellermann
9d9697b366
DecoderBuffer: add method _clear()
2014-07-12 00:15:35 +02:00
Max Kellermann
6585e18571
decoder/faad: check sample_rate, not frames_per_second
...
Checking the integer is faster, easier and more reliable.
2014-07-11 23:12:08 +02:00
Max Kellermann
6f1b4292f0
decoder/faad: make variables more local
2014-07-11 22:52:31 +02:00
Max Kellermann
ef9ef03b1f
decoder/faad: use MAX_CHANNELS
...
.. instead of declaring a new constant.
2014-07-11 22:40:28 +02:00
Max Kellermann
c4bea3dfe4
decoder/sndfile: implement scan_stream() instead of scan_file()
2014-07-11 22:09:35 +02:00
Max Kellermann
eaa9a1e33b
decoder/sndfile: make variables more local
2014-07-11 22:03:26 +02:00
Max Kellermann
3e19298c9e
decoder/sndfile: support more tag types
2014-07-11 22:03:13 +02:00
Max Kellermann
2a96ce97ee
decoder/sndfile: add str_type to TagType table
2014-07-11 21:57:41 +02:00
Max Kellermann
8cfe901391
decoder/sndfile: move code to sndfile_handle_tag()
2014-07-11 21:56:02 +02:00
Max Kellermann
30f1ee7a1f
decoder/sndfile: log libsndfile version on startup
2014-07-11 21:53:03 +02:00
Max Kellermann
828cd6fd0b
Merge branch 'v0.18.x'
2014-07-11 21:33:50 +02:00
Max Kellermann
ecb67a1ed1
decoder/sndfile: use decoder_read_full()
...
Replaces the loop in sndfile_vio_read(), eliminating duplicate and
fragile code.
2014-07-11 21:18:44 +02:00
Max Kellermann
0ef843f138
decoder/sndfile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-11 21:18:44 +02:00
Max Kellermann
eb79d83051
decoder/sndfile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
ca1a11493d
decoder/audiofile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
69bb086ba5
decoder/audiofile: fix typo in comment
2014-07-11 21:18:44 +02:00
Max Kellermann
ccbb5c3e01
decoder/audiofile: log libaudiofile errors
2014-07-10 09:37:43 +02:00
Max Kellermann
49b63e084f
decoder/audiofile: make variables more local
2014-07-10 09:26:12 +02:00
Max Kellermann
107321e385
decoder/audiofile: implement scan_stream() instead of scan_file()
2014-07-10 09:23:56 +02:00
Max Kellermann
1d214b4aed
decoder/audiofile: use audiofile_get_duration() in _stream_decode()
2014-07-10 08:35:24 +02:00