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
Max Kellermann
2e1347aba4
decoder/audiofile: split audiofile_get_duration()
2014-07-10 08:31:41 +02:00
Max Kellermann
9ddb5931fb
decoder/audiofile: remove unused Error variable
2014-07-09 20:03:11 +02:00
Max Kellermann
913064d6cc
Merge branch 'v0.18.x'
2014-07-09 20:02:07 +02:00
Gustavo Zacarias
0e39b59700
decoder/plugins/FlacIOHandle: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 19:54:35 +02:00
Max Kellermann
552af5455e
decoder/dsdlib: use decoder_skip()
...
Reduce duplicate code.
2014-07-09 19:42:36 +02:00
Max Kellermann
8759bc1b41
decoder/dsdlib: pass unsigned offsets to dsdlib_skip*()
2014-07-09 19:39:10 +02:00
Joff
09384df32c
decoder/dsd: use decoder_read_full() where appropriate
...
Addresses Mantis ticket 0004015.
[mk: use decoder_read_full() only when needed, and a few formal
changes]
2014-07-09 19:18:36 +02:00
Max Kellermann
20538516b9
decoder/audiofile: use decoder_read_full()
...
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
2014-07-09 19:05:20 +02:00
Max Kellermann
0759421d11
DecoderAPI: add function decoder_read_full()
...
Move code from the "mad" plugin.
2014-07-09 19:03:58 +02:00
Max Kellermann
bf7417981f
DecoderAPI: add function decoder_skip()
...
Move code from the "mad" plugin.
2014-07-09 19:03:31 +02:00
Max Kellermann
bc6472bb9e
decoder/audiofile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-09 18:57:50 +02:00
Gustavo Zacarias
a70443af31
decoder/OpusDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
3f221e2edb
decoder/AudiofileDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Christoph Tieben
88433bca22
Added Comment/Description to decoder/plugins/XiphTags.cxx
2014-06-27 21:14:55 +02:00
Christoph Tieben
34689eb2d2
decoder: vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
...
(see https://www.xiph.org/vorbis/doc/v-comment.html for Details)
2014-06-27 21:14:17 +02:00
Max Kellermann
07b93dcf80
InputStream: make Seek() always absolute
...
Remove the "whence" parameter that is not actually necessary, and only
complicates the InputStream implementations.
2014-05-22 13:52:00 +02:00
Max Kellermann
374c6a27db
decoder/vorbis: make VorbisInputStream::input_stream a reference
2014-05-22 13:52:00 +02:00
Max Kellermann
36c9e95969
decoder/vorbis: add VorbisInputStream constructor
2014-05-22 13:52:00 +02:00
Max Kellermann
a3142ee4e6
decoder/vorbis: rename struct vorbis_input_stream to VorbisInputStream
2014-05-22 13:52:00 +02:00
Max Kellermann
437caeb90f
decoder/vorbis: add "restrict" to pointers in vorbis_interleave()
...
Allows more compiler optimizations.
2014-05-22 13:52:00 +02:00
Max Kellermann
af49cace8d
decoder/vorbis: log libvorbis version on startup
2014-05-22 13:52:00 +02:00
Max Kellermann
13b78d0d89
decoder/wavpack: move code to WavpackInput::ReadBytes()
2014-05-22 12:54:56 +02:00
Max Kellermann
65c135b451
decoder/wavpack: convert WavpackInput attributes to references
2014-05-22 12:52:33 +02:00
Max Kellermann
ec162f265f
decoder/wavpack: move wavpack_input_init into struct WavpackInput
2014-05-22 12:47:20 +02:00
Max Kellermann
ba99696771
decoder/wavpack: wavpack_open_wvc() returns WavpackInput*
2014-05-22 12:36:55 +02:00
Max Kellermann
4eeea640f4
DecoderAPI: add function decoder_open_uri()
...
Move and refactor code from the Wavpack decoder plugin.
2014-05-22 12:35:20 +02:00
Max Kellermann
631b635652
decoder/wavpack: rename struct wavpack_input to WavpackInput
2014-05-22 10:52:34 +02:00
Max Kellermann
0b4fa41aff
InputStream: "protect" attributes
2014-05-12 18:59:46 +02:00
Max Kellermann
3cd24c0a51
release v0.18.11
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTcPbuAAoJECNuiljG20US+LsQAI5LcUiQ2AxfDdXfEkIW+ryQ
U5htp4RAAizVFEAdgzdDOoHBVefkvwij6G9ND9WAbJRsUOZs62XwlnOFaB/uQPhd
VvoNIQLmuUNxltF1itaCTJ0UJkXi6ObVExpwMScGI242uUmoNnxwsWxDxyy2s4bn
On/OwT64zTOsPTjkYGdfGncwx4dhQc2KJvGGD6y/lMhxUnn3NoKG/VOgleN4ALcL
KQ0SFQOFbUHJcvMXYdMzhe426d7GiHzFVIfdU16yJz47/xHDmaM+VVJQCOF68rrw
kyb2POxR4VXhPMfIleF2RiCopvDGSvQfUE3jhQjKBgZE2NeFeI/5N6JcWbZgFJ/J
4ez3DcjSD1Oeoz6gzaq1QybCku4EZTvPa6Kbb5/84JNKmVdb/JowGF0L18bwTbGv
y5D5HN3zTdmBXwsiDnTNDtuwaSejvIDTN1k4AkdQ9mLMIMT+13NHLBs1rDE2JnlG
3xhXrIvwhUBdE1A4uFj8duzk11EWzNI+ltJBRnG8uEzAJxpv5Khiwmj2GciS6s5r
wp1YUIUA0BhrEgrtoTdE7x13lXkDrmydcJ5kA0kArJFQALliE7kivyg1gtrcNRj1
7fDRAb9QOxaJrrsJzM9f9pDaIttHRjRvurFtikD90oaRE1g+6ygeScmYJDPhPjvU
R6PxzvsMCn8kJFWq2ARg
=Ubmu
-----END PGP SIGNATURE-----
Merge tag 'v0.18.11'
2014-05-12 18:38:45 +02:00
Max Kellermann
82337dec44
InputStream: add virtual destructor
...
Replaces the method Close().
2014-05-11 17:12:50 +02:00
Max Kellermann
6773adc771
InputStream: convert to class
2014-05-11 15:34:48 +02:00
Max Kellermann
70bd35abe2
decoder/OggUtil: allow skipping up to 32 kB after seek
...
Fixes missing song length on high-latency Opus files.
According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
2014-04-29 11:56:05 +02:00
Max Kellermann
1c02b4b9f4
release v0.18.10
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTRoKFAAoJECNuiljG20UScmgP/3bXQLBVqnGdMEzJio9qfTqz
inqbuaR8FrOSQFT5ULpYYipcjiqxCpG2ooE2M083F3wXDHF8u+j0S84NEvHQjv0T
WvA5EOOeEJS0o0gREZb8onO8NVwH+f1r4x34PAc4QbSeROiAiJRPmfTOZBDTaQkZ
Fy4CGte9UqLvUG10Jxpn1DgcBBeoge9Ruzm+drBLHh53lAfKZH6z9u23htNc4PH0
WMN3/orL7KZNxMtX37zqQDhkbPv2RjCWc0JJ8yxBzw3r/qG53GkmCBsStub6wKIi
iPgkoKXii+FAlg1oRmvVNELmOUDjhnBj8+g7q6WgJGpYqdcSCQBRIBnPPRn6Tfw3
wS7MtGoH7M4yihOfeburIzN0JiD4dtcnA7CrA9ghWt3C0Hci9Q/eni7xHgAuJ7Gp
fD0aEGeaQiQZC8r1UYkgvPuc+CXpsjPcpoN2TlYwDJ3VPQcikHVqTUkJxf5rEGbL
h5K0jhW/TzgT0quozd50w52X/n5J76X8oEng08271OPMlF+6gawGA2/AeDsomRTp
n8OPVutpyaGE3gKGYLGKj3cEnP15tQyt3U0kiU+ccG7osEPXr8JU/A4fipqcrwnN
lwejiIKzfZBU68kwS+gtQLiBncT3oh5tEiLJNzYYpPCF0wkDYt2u/rhRxnVjRoXO
5B9PRaOPuJ5N+6O2hGNS
=qsUE
-----END PGP SIGNATURE-----
Merge tag 'release-0.18.10'
2014-04-10 13:49:20 +02:00
Marcello Desantis
95ac6071b9
decoder/sndfile: work around libsndfile bug on partial read
2014-04-09 23:58:56 +02:00
Max Kellermann
ce18c36ed9
decoder/ffmpeg: handle unknown stream start time
2014-03-18 09:16:09 +01:00
Max Kellermann
8e39cf62e7
decoder/ffmpeg: pass AVSEEK_FLAG_ANY to av_seek_frame()
...
This corrects a major mistake from commit 724a59aa
- there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
2014-03-18 09:10:36 +01:00
Max Kellermann
a9e351e00d
decoder/gme: fix memory leak in container_scan()
2014-03-06 13:12:39 +01:00
Max Kellermann
e99ff4fdbc
decoder/gme: use free() instead of g_free()
2014-02-24 20:19:34 +01:00
Max Kellermann
25431f32a2
DecoderPlugin: free the container_scan() return value with delete[]
2014-02-24 20:19:34 +01:00
Max Kellermann
5a0dc808fd
decoder/opus: use new[] instead of g_malloc()
2014-02-22 13:37:36 +01:00
Max Kellermann
6b421cc354
DecoderPlugin: pass Path instance to file_decode() and scan_file()
2014-02-07 18:52:19 +01:00
Max Kellermann
ca7f6a26b5
DecoderThread: use only DetachedSong::GetRealURI()
...
Don't use the mapper - all DetachedSong instances we get have already
been mapped.
2014-02-07 18:50:07 +01:00
Max Kellermann
9b69d22d7e
DecoderThread: pass Path object around for local song files
2014-02-07 18:45:11 +01:00
geneticdrift
f225051348
fixed possible format_context not closed in ffmpeg_decode
2014-02-07 12:07:43 +01:00
Max Kellermann
9b1fbdbca6
ConfigGlobal: add config_find_block()
...
Merge duplicate code.
2014-01-24 16:55:17 +01:00
Max Kellermann
f8bfea8bae
Input*: move to input/
2014-01-24 16:33:33 +01:00
Max Kellermann
e199c33c6e
Client*: move to client/
2014-01-24 00:26:53 +01:00
Max Kellermann
197b503f3e
Config*: move to config/
2014-01-24 00:20:01 +01:00
Max Kellermann
51adaf2c47
decoder/*: move to decoder/plugins/
2014-01-24 00:02:24 +01:00
Max Kellermann
5fb72d7c8f
Merge branch 'v0.18.x'
2014-01-15 11:47:49 +01:00
Max Kellermann
313d1d5d83
decoder/ffmpeg: support libav v10_alpha1
2014-01-15 11:33:18 +01:00
Max Kellermann
b7d6133593
decoder/ffmpeg: include cleanup
2014-01-15 11:31:51 +01:00
Max Kellermann
5b6bb114ad
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-15 11:25:58 +01:00
Max Kellermann
f1ca17f6a1
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-14 23:16:07 +01:00
Max Kellermann
14235f171b
decoder/sidplay: use free() instead of g_free()
...
This pointer was allocated by libc, not by GLib.
2014-01-14 22:35:07 +01:00
Max Kellermann
4f83c60296
copyright year 2014
2014-01-13 22:31:55 +01:00
Max Kellermann
139122c57f
Merge branch 'v0.18.x'
2014-01-08 22:14:12 +01:00
Max Kellermann
fdd76b3461
decoder/faad: fix memory leak
2014-01-08 22:11:00 +01:00
Max Kellermann
bc23a6bb05
tag/TagBuilder: overload Commit() returning a Tag object
2014-01-08 19:49:08 +01:00
Max Kellermann
ac1983eae3
tag/TagBuilder: rename Commit() to CommitNew()
2014-01-08 19:48:55 +01:00
Max Kellermann
27ca0db7a6
util/Alloc: new library replacing GLib's g_malloc()
2014-01-07 23:35:18 +01:00
Max Kellermann
a9e849ff4f
DecoderBuffer: _read() returns ConstBuffer object
2014-01-06 22:17:30 +01:00
Max Kellermann
eac9fabd48
DecoderBuffer: add method _clear()
2014-01-06 21:59:43 +01:00
Max Kellermann
e2a08fa824
decoder/faad: make variables more local
2014-01-06 21:57:40 +01:00
Max Kellermann
d403749d09
decoder/faad: eliminate local variable "ret"
2014-01-06 21:57:40 +01:00
Max Kellermann
64e898f6db
release v0.18.6
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (GNU/Linux)
iQIcBAABAgAGBQJSuWnsAAoJECNuiljG20US3qwP/0WGxzRFU2/dLzX6KG5/n+8R
LqVeX7Ap7vLncA2UQQ2BiddPtF0u9lJOnex64pYCkwwpr4JBmkBa6kTKVGbbXDv5
/tuHeUJk/aWhBJ8Qz/rxmNFBW6tNGlhf+7FVt8vHQqvHn7tWWKRlsQNk6Pd4gGM/
UiMyuA8EtfTJZACPRRZK26H7g7EKIjsGt6vwiuWAh3MxGHWL5R2chuP5Mapi1U4U
Qa1YOUAHlChRxGT+LmNMyKlgq+mqltbKQj+pOLPFuT6Q6BqgZp2Ept5Svod/JamC
yCFRGWYsmRxZ0ZOhtRZACfm/yNzyIhkkvgW8FqM6tINOPrwL2MwAJVMVH3DZM7Aj
/8ltz0OH2s9x9sUfOtxQkK/3bJpBwaDnl+dFQtGIFwigvYLR2Jv2Bl1zQO6+zICu
bdbJS+IcOrElxTnxfir0CVEDysifUQ7/ZSQkwDqpF+RI8E07ZMZZLmXk3S2yX6Fx
6dCwdfIsBAotF7RYsdn4cmRaSEx6Ze+aQr0l5yLh+5sKPEdDRSMrBEnCgPGU94ub
VNl3Cp3dtq5kuSfJ90Mk0QzwVd/kCdKZKBMcTX2zv38NLcX0LCSylM4K9yCi+GR2
gvgAJq9cmbmTEN3+grVdApNx0sqNFrD6pB27KhUKWD0VYypPu7yPPptkOWzSldbz
8JGa8lryMbRmgiXVyivp
=Z823
-----END PGP SIGNATURE-----
Merge tag 'release-0.18.6'
2013-12-24 12:20:24 +01:00
Steven O'Brien
6b3b8c6f2e
fix FfmpegDecoderPlugin to use relative timestamps
2013-12-20 22:28:33 +01:00
Max Kellermann
8297563978
decoder/flac: simplify the comment parsers
2013-12-14 13:44:57 +01:00
Max Kellermann
1da0526072
decoder/flac: VorbisComment_Entry is null-terminated
...
Don't duplicate the buffer just to null-terminate the string.
According to libFLAC API documentation, the string is already
null-terminated.
2013-12-14 13:44:57 +01:00
Max Kellermann
635a67afac
util/SplitString: new utility class
...
To replace g_strdup().
2013-12-14 12:58:26 +01:00
Max Kellermann
c7e7c819a2
decoder/vorbis: remove useless cast
2013-12-14 12:53:59 +01:00
Max Kellermann
fbf677d9b2
decoder/mad: use new[] instead of g_malloc()
2013-12-14 12:50:51 +01:00
Max Kellermann
d37b788ea8
DecoderAPI: add function decoder_read_full()
...
Move code from the "mad" plugin.
2013-12-14 12:43:06 +01:00
Max Kellermann
cb336ff666
DecoderAPI: add function decoder_skip()
...
Move code from the "mad" plugin.
2013-12-14 12:40:43 +01:00
Max Kellermann
c7b1038a9d
Merge branch 'v0.18.x'
2013-12-14 12:37:16 +01:00
Max Kellermann
af4133e3c9
Util/StringUtil: add StringStartsWith()
...
Replaces GLib's g_str_has_prefix().
2013-11-28 18:48:35 +01:00
Max Kellermann
f90abe9530
include cleanup using iwyu
2013-11-28 11:50:54 +01:00
Max Kellermann
47c50c079d
decoder/ffmpeg: use IgnoreError instead of local Error instance
2013-11-28 00:05:26 +01:00
Max Kellermann
73f45d87d5
decoder/{dsf,dsdiff}: eliminate useless assignments
2013-11-23 18:30:12 +01:00
Denis Krjuchkov
0bcc477d46
decoder/OggFind.cxx: include stdio.h for SEEK_END definition
2013-11-18 16:28:39 +06:00
Jurgen Kramer
47d3758820
decoder/dsdiff: fix byte order bug
2013-11-10 16:49:39 +01:00
Jurgen Kramer
f4b61e8c8d
decoder/dsf: enable DSD128
2013-11-05 17:38:48 +01:00
Max Kellermann
ecf12a60e8
Log: add level "DEFAULT"
...
Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to
G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only
logged on log_level "secure".
2013-11-04 22:27:49 +01:00
Max Kellermann
8555b65c50
*: update copyright year to 2013
2013-10-30 23:37:06 +01:00
Max Kellermann
20597b3632
*: use nullptr instead of NULL
2013-10-28 23:58:17 +01:00
Max Kellermann
4728735acf
decoder/dsf: don't play junk at the end of the "data" chunk
2013-10-28 23:47:25 +01:00
Max Kellermann
9dcbd005f0
decoder/dsf: add range check
2013-10-28 23:41:51 +01:00
Max Kellermann
0ad2eb34c7
decoder/dsdlib: add class DsdUint64
...
Merge lots of duplicate code.
2013-10-28 23:29:23 +01:00
Max Kellermann
0e8a15e813
decoder/dsdlib: include cleanup
2013-10-28 23:26:37 +01:00
Max Kellermann
5b0d6a59cf
decoder/dsdlib: move API documentation to header
2013-10-28 23:26:16 +01:00
Max Kellermann
fd3dc7e5fb
decoder/dsdlib: convert struct dsdlib_id to a class
2013-10-28 23:12:48 +01:00
Max Kellermann
85ae7e9c9a
DecoderControl: move code/attributes to new class MixRampInfo
2013-10-26 14:19:34 +02:00
Max Kellermann
d6e28c42e5
ReplayGainInfo: refactor to a class
2013-10-25 19:12:46 +02:00
Max Kellermann
6d475c40de
ReplayGainInfo: use CamelCase for struct name
2013-10-25 19:12:38 +02:00
Max Kellermann
ac8e5be9f4
decoder/opus: support replay gain
...
Parse the R128_TRACK_GAIN comment string.
2013-10-24 23:56:06 +02:00
Max Kellermann
c76952534e
decoder/Opus: implement seeking
2013-10-24 23:26:58 +02:00
Max Kellermann
f0060718de
decoder/opus: provide time stamps
...
Call decoder_timestamp(). This is not necessary currently, but will
be as soon as we implement seeking.
2013-10-24 23:26:54 +02:00
Max Kellermann
982ab9e496
decoder/opus: show song duration during playback
...
This requires seeking to the end-of-stream, checking its granulepos,
and then seeking back to the previous file position. We do this only
for local files.
2013-10-24 23:26:46 +02:00
Max Kellermann
b74bcf2274
decoder/opus: call ogg_stream_reset() in OggSeekPageAtOffset()
2013-10-24 23:23:23 +02:00
Max Kellermann
dc328e0c4a
decoder/opus: move code to OggSeekPageAtOffset()
2013-10-24 20:40:23 +02:00
Max Kellermann
92c85bd20d
decoder/opus: move SeekFindEOS() to OggFind.cxx
2013-10-24 20:33:12 +02:00
Max Kellermann
f629eb8cb2
decoder/opus: make opus_sample_rate constexpr
2013-10-24 20:14:47 +02:00
Max Kellermann
e4f41ff61d
decoder/opus: use std::copy_n() instead of memcpy()
2013-10-24 20:06:50 +02:00
Max Kellermann
dae6ecb680
decoder/opus: support all core tag names
2013-10-24 20:01:14 +02:00
Max Kellermann
a57a7b1a76
decoder/opus: move code to ParseOpusTagName()
2013-10-24 20:01:14 +02:00
Max Kellermann
03073b366b
decoder/opus: use delete[] for the OpusReader::ReadString() result
2013-10-24 20:01:14 +02:00
Max Kellermann
0a5c991ab5
decoder/wavpack: move variable declarations
2013-10-23 23:20:55 +02:00
Max Kellermann
93deb84499
input_stream: rename struct to InputStream
2013-10-23 23:12:02 +02:00
Max Kellermann
f1027ed198
InputStream: add method Rewind()
2013-10-23 21:58:44 +02:00
Max Kellermann
10bc1a9acc
decoder/flac: fix tag name comparison
2013-10-22 01:05:09 +02:00
Max Kellermann
82059645f1
decoder: rename the struct to "Decoder"
2013-10-21 21:12:37 +02:00
Max Kellermann
72af3c0489
decoder_plugin: rename struct to DecoderPlugin
2013-10-21 20:31:34 +02:00
Max Kellermann
65e54f6ed1
decoder/modplug: use WritableBuffer instead of GByteArray
...
Eliminate the temporary buffer, do I/O right into the WritableBuffer.
2013-10-21 20:22:53 +02:00
Max Kellermann
10196496f3
decoder/modplug: move code to LoadModPlugFile()
2013-10-21 20:19:27 +02:00
Max Kellermann
222dc8a239
Util/ASCII: add StringEqualsCaseASCII() overload with length
...
Replaces GLib's g_ascii_strncasecmp().
2013-10-21 08:42:55 +02:00
Max Kellermann
0e4d2e7277
Util/ASCII: add function StringEqualsCaseASCII()
...
Replaces GLib's g_ascii_strcasecmp().
2013-10-20 23:09:51 +02:00
Max Kellermann
a78b2d84ed
TagType: rename enum tag_type to TagType
2013-10-20 13:32:59 +02:00
Max Kellermann
c1e7be3b8e
decoder/sidplay: add header file
2013-10-20 13:05:50 +02:00
Max Kellermann
17ecc56e83
decoder/sidplay: update file name
2013-10-20 13:03:58 +02:00
Max Kellermann
59f8144c50
*: use nullptr instead of NULL
2013-10-19 18:19:03 +02:00
Max Kellermann
1373d40fea
decoder/mpg123: use const_cast instead of g_strdup()
2013-10-19 17:46:00 +02:00
Max Kellermann
39e2ffe212
decoder/mikmod: use const_cast instead of g_strdup()
2013-10-19 17:30:56 +02:00
Max Kellermann
5dc4cbdf82
util/FormatString: new library to replace g_strdup_printf()
2013-10-19 17:24:21 +02:00
Max Kellermann
1434e5a22e
decoder/gme,input/curl,...: use static buffers instead of g_strdup_printf()
2013-10-19 17:15:17 +02:00