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