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