Commit Graph

260 Commits

Author SHA1 Message Date
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 6f1f4484f4 Allow songs from the spotify service to be added to the playlist, and bodge a tcpserversrc into GstEnginePipeline 2011-04-26 18:39:38 +00:00
David Sansome 3eedc916ad Add a new logging system 2011-04-22 16:50:29 +00:00
David Sansome 8f4c1dbbf6 When doing gapless playback, fix a bug where the TrackEnded signal would be emitted too early, before the track had actually ended. This caused the song after the current song to get scrobbled and its playcount increased. Fixes issue 1771 2011-04-17 14:11:37 +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
David Sansome a2d62883c2 Ignore subsequent errors by setting a flag instead of setting the pipeline state, which may deadlock if the pipeline is also being destroyed at the same time. Fixes issue #1584 2011-03-17 19:52:05 +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 c8c394d200 don't push new URL into engine in the CurrentMetadataChanged slot - send it the beginning and end markers only
this means that Clementine still skips broken songs while at the same time fixes issue #1565
2011-03-12 20:20:13 +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 6a64b8f8f3 Fix a bug that made it sometimes impossible to seek a track 2011-03-07 20:00:03 +00:00
David Sansome 5672fa90e7 Wait for the gstreamer pipeline to be connected and in either the PAUSED or PLAYING state before trying to do the initial seek. This should stop the occasional "seek failed" messages when playing tracks. Fixes issue #1292 2011-03-06 18:11:53 +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 2740ad4370 Oops 2011-02-14 20:15:35 +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 6737b8a5c2 Always use the gstreamer engine, remove xine, vlc and phonon engines. 2010-12-26 13:01:35 +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
Paweł Bara 5082d81ba4 some corrections to MPRIS 2 (Updates issue #1058) 2010-12-12 23:20:41 +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
David Sansome 44dc05a87a Don't stop the track when it's about to end if crossfading is enabled but fadeout is disabled. Fixes issue #1040 2010-12-07 20:29:13 +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
David Sansome ed1a25693c Add missing licenses to debian/copyright, and add copyright information to each source file 2010-11-20 13:27:10 +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 4f943795bc Fix a handle + memory + whatever else leak when automatically changing tracks in Windows. Fixes issue #782 2010-09-22 22:22:02 +00:00
David Sansome be83655c57 Ignore tag messages from gstreamer when we're switching to a preloaded track - otherwise the Player receives the messages while it still thinks it's playing the old song, and gets the wrong track number. 2010-09-04 13:50:53 +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 831c5221bb Add header to fix build on Linux. 2010-08-20 12:30:42 +00:00
John Maguire 59233f5192 Disable FFT when no analyzer in use. 2010-08-20 12:14:43 +00:00
John Maguire 652f09b926 Fix memory leak from spectrum element.
Fixes issue #638
2010-08-19 10:14:56 +00:00
John Maguire 2db2354e0b Move spectrum before volume element.
Tweak new analyzer.
2010-08-18 19:12:28 +00:00
John Maguire 459a134201 Remove FHT and use gstreamer's FFT for all analyzers. 2010-08-18 18:21:30 +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 36604f7ec8 Oops, fix the preamp 2010-07-12 21:00:15 +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 8b36f12cc3 Stop the old decodebin after starting the new one to (hopefully) fix an occasional race condition/deadlock. 2010-07-12 19:10:32 +00:00
David Sansome fbd6b46e20 Only take notice of the first segment start event, to fix seeking 2010-07-12 19:09:59 +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 5307ca3db0 Return the correct type from GstBusFunc()s 2010-06-15 22:32:20 +00:00
John Maguire a8f7df9e28 Remove incorrect gst_message_unref. It should only be called from *sync* handlers that are returning GST_BUS_DROP. 2010-06-15 22:30:06 +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 40bb827fcd Make all the source files a single cmake target again. 2010-06-08 22:39:31 +00:00
David Sansome 08dddac981 Fix a small memory leak 2010-06-08 12:12:47 +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 d760721f61 Make this all a bit more sane 2010-05-31 20:59:13 +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
John Maguire a59f5a3887 *Fix m3u parsing
*Add regression test
*Fix clang warnings
2010-05-23 15:35:28 +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 9b224fd87d Fix the fader behaviour a bit 2010-05-19 13:26:23 +00:00
David Sansome 694c5e9f9e Wait 2 seconds after the fadeout finished before destroying the pipeline, to allow for delays in the sound server/driver. Fixes issue #294. 2010-05-15 17:55:36 +00:00
David Sansome 1aee5e4667 Split all the source files up into seven new directories. 2010-05-10 21:50:31 +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 5cbed1c6b3 Use uridecodebin to pick the right source for us, rather than using giosrc sometimes, and soup/neon for http. Fixes issue #290 2010-05-08 13:54: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 266ad640de Fix character decoding from gstreamer errors.
Update issue 263
Status: Fixed
Nevermind, I worked out out - should be fixed now!
2010-04-30 15:37:57 +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 a56107c598 Fix UTF8 characters in metadata received from gstreamer. Affects issue #229 2010-04-22 20:48:35 +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
David Sansome 7263983e0c More debug output in CanDecode, and set the gst path in GstEngine rather than main() 2010-04-21 17:11:50 +00:00
David Sansome 3cc0ed361a Ignore useless metadata from gstreamer, and metadata that comes while the next track is preloading 2010-04-21 14:04:40 +00:00
David Sansome 910553b175 Gapless playback! 2010-04-21 13:55:30 +00:00
David Sansome 4eedddd57c Make the gst engine emit Error() instead of showing its own dialog when a plugin couldn't be found. 2010-04-21 11:14:12 +00:00
David Sansome 4234700e24 Trim the metadata received from tags 2010-04-20 22:20:20 +00:00
David Sansome 0656330548 Test we can load various popular file formats 2010-04-20 22:00:02 +00:00
David Sansome f4e9de8e5b Free the error messages properly, since they aren't owned by gstreamer. Thanks john :) 2010-04-19 12:30:19 +00:00
David Sansome 4bc704d7e3 Actually show error messages that come from gstreamer. Fixes issue #230 2010-04-19 12:04:35 +00:00
David Sansome dd86b60411 CMake variables and commandline options to allow multiple engines to be built. Thanks christoph.gysin.
Fixes issue #203
2010-04-15 12:39:34 +00:00
David Sansome 44ffc5be75 Get metadata from shoutcast streams (like somafm) 2010-04-14 23:59:11 +00:00
John Maguire 4862c41477 Tidy up http gstreamer source element. 2010-04-14 15:42:49 +00:00
David Sansome 57bd1b0227 Use different frequency values for the equalizer. Fixes issue #192 2010-04-12 20:57:21 +00:00
David Sansome c08179aa94 Fix a race condition caused by global state in the equalizer. 2010-04-12 20:33:59 +00:00
David Sansome ecda1787c8 Remove the CanDecode check - it's slow, and overidden by the taglib check anyway. 2010-04-12 19:46:08 +00:00
David Sansome 00b19ae83e Fix somafm playback on linux. Might merge this with the mac ifdef if possible? 2010-04-12 17:40:08 +00:00
David Sansome 07a851c951 Oops, we'd better unref these buffers to stop memory leaks 2010-04-12 16:41:44 +00:00
David Sansome e4c3c600b9 Fix a problem where the scope would apperar to freeze for a few seconds when changing tracks. 2010-04-12 16:39:48 +00:00
John Maguire 821baa2211 Mac deployment fixes for gstreamer. 2010-04-12 12:36:30 +00:00
David Sansome d51c7444ab Fix some confusion with auto/manual track changes 2010-04-12 01:59:21 +00:00
David Sansome a25fd395f1 Fixed the easier codereview comments from r645 2010-04-12 00:26:16 +00:00
David Sansome aaee1ded22 Fix a crash at the end of the last song on a playlist 2010-04-12 00:21:41 +00:00
David Sansome 1b0b8979df Codereview comments from r637 2010-04-12 00:20:52 +00:00
David Sansome 031752823c Add support for crossfading when changing tracks automatically 2010-04-11 23:52:16 +00:00
David Sansome 152470e5b3 Codereview comments from r644 2010-04-11 23:26:06 +00:00
David Sansome c4aa779728 Clean style of Engine::Base 2010-04-11 23:24:03 +00:00
David Sansome 23880b3cb5 Crossfading in gstreamer backend 2010-04-11 23:03:39 +00:00
David Sansome b19fdbf272 Fadeout in gstreamer engine 2010-04-11 21:40:26 +00:00
David Sansome 656fbba37f Remove the "identity" element 2010-04-11 20:01:44 +00:00
David Sansome 14d0b00f46 Factor out the gstreamer pipeline bits into another class. 2010-04-11 19:47:21 +00:00
David Sansome 85032240d9 Set a plugin path on Windows, and don't do a pointless registry check any more 2010-04-11 14:26:30 +00:00
David Sansome d8bc4c1172 Use the extra gst audio conversion on all platforms 2010-04-11 13:28:26 +00:00
John Maguire 95abb71dc0 Equalizer and sound working on mac with a hack. 2010-04-09 14:29:12 +00:00
John Maguire b11c3b28f7 Fix scope on mac 2010-04-09 13:01:20 +00:00
John Maguire 19fe2cff54 Disable equalizer on Mac to at least get playback working. 2010-04-09 12:29:21 +00:00
David Sansome b6fd4dd3ac Fix style in gstequalizer, and fix unused warnings from the elusively named irr_cf.h 2010-04-08 21:32:43 +00:00
David Sansome 539f0a517b Rename this function so as to not confuse john. 2010-04-08 20:17:57 +00:00
David Sansome 1dbcfb9aa7 Add an option to change the output device on supported gst sinks. Fixes issue #184 2010-04-08 20:14:11 +00:00
David Sansome 6122051b7d Set a sync handler on the gstreamer bus to catch some other EOS events. Fixes issue #178 2010-04-07 20:01:44 +00:00
David Sansome c6fe113e79 GStreamer equalizer. Mostly working, just missing presets. Updates issue #166 2010-04-07 16:26:04 +00:00
David Sansome 256648f5e3 Add a UI for choosing which gstreamer audio sink to use 2010-04-07 13:51:14 +00:00
David Sansome f8240e8b7c Make GstEngine::canDecode much faster by creating the pipeline only once 2010-04-07 12:56:05 +00:00
David Sansome b3d62edbef Fix automatic track change ... again 2010-04-07 00:20:30 +00:00
David Sansome 5188e4f3d2 Enforce the right audio datatype in the gst pipeline... which makes the scope work \o/ 2010-04-07 00:18:55 +00:00
David Sansome 46818c851b Fix canDecode on tracks with funny characters. Thanks Sylvain 2010-04-06 23:00:20 +00:00