Commit Graph

7659 Commits

Author SHA1 Message Date
Max Kellermann c1ba47beee MixerAll, Volume: add "pure" attributes 2013-10-25 00:15:55 +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 645cb5833d test/run_decoder: print the song duration 2013-10-24 21:35:05 +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 1bd8a9e744 DecoderAPI: add "pure" attributes 2013-10-24 20:01:05 +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 c4d4011c63 InputInternal: remove obsolete library 2013-10-23 23:10:27 +02:00
Max Kellermann 3d12f8d246 UriUtil: uri_remove_auth() returns std::string 2013-10-23 21:58:44 +02:00
Max Kellermann c3e720279c test/test_util: unit test for libutil.a 2013-10-23 21:58:44 +02:00
Max Kellermann f1027ed198 InputStream: add method Rewind() 2013-10-23 21:58:44 +02:00
Max Kellermann fe3c5e4e8e DecoderThread: remove unused function deconst_plugin() 2013-10-23 21:57:28 +02:00
Max Kellermann d110131ad6 Playlist: refresh new tags after database update
Fixes regression from commit e96779d.
2013-10-22 01:05:29 +02:00
Max Kellermann 10bc1a9acc decoder/flac: fix tag name comparison 2013-10-22 01:05:09 +02:00
Max Kellermann 3f899f83ff Playlist*, Queue: use GetDatabase() overload without Error
Don't use IgnoreError() when there's an overload that does not try to
give us one.
2013-10-22 00:59:56 +02:00
Max Kellermann fc05768374 Queue: add method ModifyAtPosition() 2013-10-22 00:59:56 +02:00
Max Kellermann 03b57df630 Queue: ModifyAtOrder() does not increment version
Leave that to the caller, allowing it to modify multiple items at a
time.
2013-10-22 00:59:56 +02:00
Max Kellermann 4de3b6dc80 Partition: add method DatabaseModified() 2013-10-22 00:59:55 +02:00
Max Kellermann c7bbfef19a UpdateRemove: include cleanup 2013-10-22 00:59:55 +02:00
Max Kellermann 7f1130b52b DecoderList: fix the decoder_plugin_from_mime_type() return value 2013-10-22 00:59:55 +02:00
Max Kellermann 2d696f46c3 PlaylistEdit: compare Song URIs in DeleteSong()
Fixes purging deleted songs from the queue after update.  Fixes
regression from commit e96779d.
2013-10-22 00:13:39 +02:00
Max Kellermann 2f43e4bc66 Playlist: copy stream tags from the PlayerThread
Finally restores an important feature that has been broken for several
months when the PlayerThread started working with Song copies instead
of pointers to the Queue's Song instances (commit e96779d).
2013-10-22 00:02:21 +02:00
Max Kellermann f8c23488c9 Song: add method ReplaceTag() 2013-10-21 23:53:30 +02:00
Max Kellermann 1e2cda9239 Partition: add methods TagModified(), SyncWithPlayer()
Move code from class Instance.
2013-10-21 23:40:52 +02:00
Max Kellermann 20cba9e89f Song: pass reference to song_equals() 2013-10-21 23:19:15 +02:00
Max Kellermann f6d67ac260 DecoderThread: simplify the decoder lookup loop
Merge the two loops into one, and eliminate the GSList.
2013-10-21 22:15:57 +02:00
Max Kellermann 74904b9cf2 DecoderList: reimplement _for_each() with function object 2013-10-21 22:02:19 +02:00
Max Kellermann 82059645f1 decoder: rename the struct to "Decoder" 2013-10-21 21:12:37 +02:00
Max Kellermann 13e9f18403 DecoderPlugin: move functions into the struct 2013-10-21 21:08:12 +02:00
Max Kellermann 875821f2ba SongUpdate: use tag_file_scan()
Eliminate duplicate code.
2013-10-21 21:05:59 +02:00
Max Kellermann cc3be3aeed TagFile: use IgnoreError() 2013-10-21 20:52:59 +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 86f08862e4 playlist/EmbeddedCue: use std::string for the "cuesheet" attribute 2013-10-21 10:53:31 +02:00
Max Kellermann 83c726a34f GetBaseUTF8 2013-10-21 10:50:22 +02:00
Max Kellermann a0415f73d4 archive/bz2: remove unused function bz2_quark() 2013-10-21 10:50:22 +02:00
Max Kellermann 93068f10ec fs/AllocatedPath: don't include glib.h 2013-10-21 10:27:14 +02:00
Max Kellermann 7142c81c05 DirectorySave: use Directory::GetName() 2013-10-21 10:04:59 +02:00
Max Kellermann c0421a57da input/curl: don't use GLib's typedef "gushort" 2013-10-21 09:54:21 +02:00