Commit Graph

185 Commits

Author SHA1 Message Date
David Sansome 1719b1599c Get audio device names on Windows too. 2014-03-29 23:48:26 +11:00
David Sansome 2d7be1502f Get audio device names on OS X too. 2014-03-29 22:44:08 +11:00
David Sansome 6d1dc56a7c Get a list of available audio devices from pulseaudio, and let the user choose
from those in the settings dialog instead of just giving him a text box.
2014-03-29 19:31:38 +11:00
John Maguire 3323c2d094 Convert all instances of foreach() to a C++11 for
find ext src -name '*.cpp' -exec \
    sed -i -e 's/foreach(\([^,]\+\),/for (\1 :/' {} \;
2014-02-10 14:43:32 +01:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
Arnaud Bienner 7084697aa3 Prevent Clementine to loop forever when trying to play a song with repeat enabled in a playlist which contains only unavailable songs 2014-02-04 22:08:32 +01:00
John Maguire 56c949815b First pass at Gstreamer 1.0 porting.
This at least compiles against gstreamer 1.2.
Things that work:
* Playing audio
* Automatically completing tags

Things that don't work
* Spotify
* Moodbar

Things I haven't tested
* Transcoding
2013-09-26 17:49:24 +02:00
John Maguire 07e7950f7e Remove obsolete ClearScopeBuffers() reference. 2013-06-03 18:14:20 +02:00
David Sansome 1a4e4ba86f Fix a compilation error on an old GCC 2013-06-01 18:50:25 +10:00
David Sansome 619261f5e1 Remove the precise analyzer timing code from Amarok and instead just use the
latest buffer from GStreamer.  This works just as well and fixes the occasional
freezing analyzer.  Fixes issue 2464
2013-06-01 18:03:59 +10:00
David Sansome 90898bd255 Take the buffer duration into account when deciding when to preload the next
song for gapless playback.
2013-06-01 17:25:56 +10:00
John Maguire 3d434f1c88 Remove iDevice support as it doesn't work well for modern devices and libgpod shows no signs of updating to support them.
Fixes issue #3683
2013-05-17 15:30:56 +02:00
John Maguire 36975c41d2 Add stereo balance slider as part of equalizer. 2013-04-26 20:28:57 -07:00
Andreas cccfe814d0 - Fix label texts in settings page.
- Remove logging.
2013-04-23 00:17:04 +02:00
Andreas ec481d5874 Fixed issue 578: fade-in fade-out on (un)pause. 2013-04-22 21:42:04 +02:00
John Maguire ba95cc7788 Move the setting of the gstreamer environment variables into main() to avoid a race condition where the spotify blob would start up before the gstreamer initialisation happened in the main process and thus would try and load the system gstreamer plugins. 2012-06-20 11:19:34 +02:00
John Maguire 5280038f9a Remove unused debug #define. 2012-06-18 13:56:56 +02:00
David Sansome 638a4b9739 Bundle the gstreamer moodbar plugin, with a patch that protects calls to fftwf_plan from multiple threads. 2012-05-27 17:30:58 +01:00
Arnaud Bienner 26639503d0 Update issue 2137
Mono playback implemented; available in preferences
2012-05-20 20:50:25 +02:00
David Sansome 0335d57a0f Improve pipeline buffering: on an underrun event playback will now pause until the buffer is completely full. Fixes audio stuttering on when listening to radio streams on slow networks. 2012-01-23 15:01:39 +00:00
John Maguire dfdb71b164 Make it so!
Fixes issue #2527
2012-01-10 17:00:17 +01:00
David Sansome 22e6a649b7 Remove the custom gstspotifytcpsrc and use tcpserversrc ! gdpdepay to receive data. Use a gstreamer pipeline on the other end as well to send data. 2011-11-28 18:45:12 +00:00
David Sansome c05a2ee182 Add a spotify gstreamer source element instead of hacking about with gsttcpserversrc. Implement seeking on spotify tracks. 2011-09-25 19:24:44 +01:00
David Sansome 797dfe9841 Fix some connect() warnings when starting a background stream 2011-05-21 19:27:23 +00:00
John Maguire 51e031df2b Add class for transcoding a Song into an OGG Vorbis stream. 2011-05-19 16:34:33 +00:00
Arnaud Bienner d20f689ab4 Revert r3234 because, as discussed, this could lead to blocking behavior 2011-05-03 22:38:24 +00:00
Arnaud Bienner 709d339866 Avoid to create a new thread when changing state. Make the UI more reactive, especially when Qt threadpool is already full (for example when fingerprinting several files in parallel for MusicBrainz autotagging) 2011-05-03 00:02:35 +00:00
David Sansome 3eedc916ad Add a new logging system 2011-04-22 16:50:29 +00:00
David Sansome 23c744f41a Add a queue element to the pipeline to buffer even local sources, and increase the default buffer size to 4 seconds. 2011-04-16 14:04:12 +00:00
David Sansome 7d6eee590a Don't force the track to stop at the end of a section unless it's part of a cue sheet. Fixes issue 1610. Fixes issue 1636. 2011-03-28 22:11:07 +00:00
David Sansome 008d396077 Use a monotonically increasing ID to identify pipelines, instead of their pointer value. 2011-03-20 21:40:53 +00:00
David Sansome b3db5d699e Remove CanDecode from GstEngine - it was only used by a test, and the test was disabled on buildbot because it was unreliable. 2011-03-20 19:36:50 +00:00
David Sansome 116bfc4594 Remove a comment and a TODO 2011-03-20 19:36:44 +00:00
David Sansome e761f2bdc8 Fix a bug where the engine would skip a song that didn't exist, but then not play the next song. 2011-03-20 19:18:54 +00:00
Paweł Bara 8ed6eca57e fixing skipping songs for library songs
another "silent" GST error type
David's POT
2011-03-13 22:57:49 +00:00
David Sansome cb275f318f Add an option to disable automatic crossfading between tracks on the same album or from the same cuesheet. Fixes issue 1479 2011-03-13 18:37:46 +00:00
Paweł Bara e25e9efffc Clementine now skips broken streams (radios for example). At least I hope it always does. ;) Fixes issue #1562. 2011-03-12 13:24:30 +00:00
Paweł Bara 8722e00103 Clementine now skips songs that don't exist anymore (updates issue #250) 2011-03-10 18:01:35 +00:00
David Sansome 2cb8b8dba7 Stop cue sections at exactly the right place, and move seamlessly between consecutive sections of the same file. Fixes issue #1233. Fixes issue #1419. 2011-03-06 16:35:47 +00:00
David Sansome cce41f1372 Fix the scope when playing cue files. Fixes issue #1291 2011-03-06 14:18:53 +00:00
Arnaud Bienner 375abfd04e Don't exit application to fast, to allow fadeout 2011-02-16 22:43:05 +00:00
Paweł Bara 383138737c the easy way is worse - reverting my last GstEngine's changes 2011-02-16 17:07:06 +00:00
Paweł Bara 2b0dcebaec let's try simpler EndOfStreamReached version now that we have nanoseconds 2011-02-15 22:37:33 +00:00
David Sansome 8c691d2b3e Use constants instead of "1eN" literals for converting between time units. 2011-02-14 19:34:37 +00:00
David Sansome 37618dae96 Use nanoseconds instead of seconds or milliseconds throughout the Player and Engine. 2011-02-13 18:29:27 +00:00
David Sansome ee06d779f2 Fix a bug that would occasionally cause an extra track to be skipped when a track ended. Fixes issue #1233 2011-01-20 21:29:48 +00:00
Paweł Bara 34d496aadc cleaner forced end-of-track when media stream is past it's 'end' marker 2011-01-03 18:03:15 +00:00
Paweł Bara bbe97b00a2 make engine 'multiple-section songs' aware -> you should now be able to play your .cue related music 2011-01-02 18:53:45 +00:00
David Sansome d531d01f60 Fix Windows \\ paths when preloading files as well as when playing them initially. 2010-12-20 19:00:48 +00:00
John Maguire 4c66007e26 Code review comments from r2370. 2010-12-09 13:06:00 +00:00
John Maguire 3a19bb9d46 Fix config file location on Mac and automatically migrate. 2010-12-09 12:34:08 +00:00
John Maguire c625acfd87 Refactor background streams.
Add volume control for background streams and infrastructure for custom streams.
2010-12-03 13:53:43 +00:00
John Maguire a916db4c13 Add buffer duration to initialisation list. 2010-10-11 16:46:06 +00:00
John Maguire 65c7e6007c Maybe working gstreamer buffer setting. 2010-10-11 15:58:05 +00:00
David Sansome 61ea0cb24b Don't block the GUI while a background stream is starting 2010-10-02 12:51:09 +00:00
David Sansome 0c95f7c234 Safeguard against a null pipeline in GstEngine::Play. 2010-09-26 20:59:41 +00:00
David Sansome dedb9621e8 Fix the songloader test by making it wait for the gstreamer engine to finish initialisation 2010-08-28 19:22:58 +00:00
John Maguire c801ce1a2d Rollback analyzer changes. 2010-08-28 18:48:16 +00:00
David Sansome cf6399df28 Initialise the GStreamer options in the settings dialog correctly, and ensure the GST engine can never try to create an empty sink. Fixes issue #661. 2010-08-27 16:41:35 +00:00
David Sansome 75b70b4acb Initialise gstreamer in the background instead of blocking the UI 2010-08-27 13:57:39 +00:00
John Maguire 59233f5192 Disable FFT when no analyzer in use. 2010-08-20 12:14:43 +00:00
John Maguire 03274b0831 Add new analyzer API and example using gstreamer spectrum element. 2010-08-18 16:09:45 +00:00
David Sansome 0b85797e45 Fix a crash when the gst state change takes ages 2010-08-04 20:32:53 +00:00
David Sansome 6f63dcc37f Remove some debug output 2010-08-04 18:31:18 +00:00
John Maguire 35e87b2a77 Start gstreamer playing from a separate thread. 2010-08-04 12:13:43 +00:00
David Sansome aad6093b63 Give each gstreamer element a unique name 2010-08-02 18:13:40 +00:00
David Sansome 2a7c6de273 Register gstafcsrc properly, and use it when playing songs from an afcdevice 2010-08-01 18:09:38 +00:00
John Maguire 31a726789a Code review comments for r1476. 2010-07-14 11:43:23 +00:00
John Maguire 41ab99e62e Generate Hypnotoad rather than streaming it. 2010-07-14 11:16:56 +00:00
David Sansome 553184c7db Remove amarok's equalizer and use gstreamer's one instead for vastly reduced CPU usage. Fixes issue #494 2010-07-12 20:55:09 +00:00
David Sansome b62263540f Use the segment start time when calculating the timestamp of data buffers in the scope. Fixes a memory leak and makes the scope work again when playing ogg streams. Fixes issue #495. 2010-07-11 13:31:03 +00:00
David Sansome d3e3d04fe1 Prune the gstreamer scope at a much lower interval 2010-07-02 19:23:08 +00:00
David Sansome b35392d60d Don't query the track position and length quite so often. Might reduce CPU usage for issue #246 2010-06-30 20:36:16 +00:00
David Sansome 2b17a8ee1f Revert r1344 (the timer tracing), it didn't help 2010-06-25 22:04:24 +00:00
David Sansome a0f9c81891 Don't prune the scope while playback is paused 2010-06-25 08:48:19 +00:00
David Sansome cc6413ab0e Add tracing to every timer event, might help track down CPU usage... 2010-06-25 08:46:03 +00:00
David Sansome 9106abb1a0 Handle redirect messages from mmssrc properly. Fixes issue #385. 2010-06-23 11:47:54 +00:00
David Sansome 4a741e51a8 Lower the default rain volume.
Update issue #418
Status: Fixed
I can't think of a good place to put the GUI for this, so instead I've lowered the default rain volume so you can adjust the volume of whatever else you're listening to to match.
2010-06-18 13:24:56 +00:00
John Maguire 92e95ecf80 Support for background streams. 2010-06-14 19:15:10 +00:00
David Sansome 0a19a275a2 On Windows and Mac use a different gstreamer registry file 2010-06-11 12:22:21 +00:00
David Sansome 1895582eb9 Basic support for ProjectM visualisations 2010-06-06 14:06:23 +00:00
David Sansome fe39d99923 Support playing \\host\share\file style URLs on Windows 2010-06-03 18:39:42 +00:00
David Sansome 3365c7c217 Fix a few memory leaks 2010-05-28 19:51:51 +00:00
David Sansome 9a06fa0bfc Don't start a new timer for *every* track we play. 2010-05-28 17:14:00 +00:00
David Sansome 4c13e78893 Fix a mingw warning 2010-05-27 20:30:15 +00:00
David Sansome 3927d91cf1 We use decodebin2 on windows now 2010-05-25 22:25:04 +00:00
David Sansome 9292bd3cb5 toFloat() was Qt 4.6 2010-05-25 21:33:16 +00:00
David Sansome eb78ace541 Replay Gain support 2010-05-23 13:07:15 +00:00
David Sansome d054e06444 Don't do the preloaded check on manual track changes.
Update issue #332
Status: fixed
Thanks for the patch!  Calling Stop() in there meant that the OSD got shown
briefly with a "Stopped" message though, so I've changed GstEngine::Load
instead - the problem was with the code that checked whether the pipeline had
already started to load that URL as a result of GstEngine::StartPreloading.
It'll now only do that on an automatic track change.
2010-05-22 17:19:27 +00:00
David Sansome 980d61a583 If we're not crossfading, keep the same pipeline when changing tracks and just swap out the gstreamer source - this should allow for completely gapless playback. 2010-05-08 17:39:12 +00:00
David Sansome 19b08540ef Force the directsound sink on windows 2010-05-04 15:51:23 +00:00
John Maguire 7b420b6845 Some defensive programming for r819. 2010-05-03 14:55:00 +00:00
John Maguire 3adc74dfab Disable gstengine's timer when it's stopped. 2010-05-03 14:15:42 +00:00
David Sansome 6f7dbf3286 Make local file playback work on Windows again 2010-05-01 14:01:01 +00:00
David Sansome 9d72d85f09 Don't crash when asked to load a file that doesn't exist on Windows 2010-04-27 17:53:52 +00:00
David Sansome 906f3526cf Fix a crash bug when you seek all the way to the end of the last track 2010-04-22 17:02:06 +00:00
David Sansome 99743d49aa Nasty hack to hopefully prevent "seek failed" errors - just don't allow two seeks to happen within 100ms of each other. 2010-04-22 16:54:09 +00:00
David Sansome 82602f8d96 Fix setenv/putenv madness on mac 2010-04-22 13:49:16 +00:00