275 Commits

Author SHA1 Message Date
Mark Furneaux
84434fd84e Fix dbz possibility with small buffers at end of track
There was a possibility of a dbz when a buffer sent to the
analyzer was shorter than 1ms long, such as what may happen at the end
of a track when stopping. This patch guards against this.
2014-05-17 14:38:46 -04:00
Mark Furneaux
8f9229d7c9 Apparently I'm blind. (Refactoring) 2014-05-03 09:28:07 -04:00
Mark Furneaux
00a1fe1e32 Refactoring 2014-05-03 09:14:15 -04:00
Mark Furneaux
6c653e5ba2 Synchronize buffer chunks with audio stream
The chunks are now determined by the density of data in the buffer
to the length of audio in the buffer. The chunk length can change
size so that the audio that is analysed is exactly what is being played
at the instant the frame is requested.
2014-04-30 14:18:39 -04:00
Mark Furneaux
ee7fed36bc Fix pointer arithmetic when seeking buffers
It's possible the sample type will change, so best to not use
a fixed value.
2014-04-30 10:00:58 -04:00
Mark Furneaux
53f21584e4 Fix inconsistent buffer sizes sent to analyzer
The analyzers are sent new buffers of audio data to process each time
they pass through the gst pipeline. Different file formats and bit depths/
sample rates can change the size of these buffers, in some cases making them
large and therefore infrequent. This causes choppiness in the analyzer
as it is not getting new data with every frame. This patch chunks the buffers
coming off the pipeline to correspond with the framerate of the analyzer.
2014-04-29 21:38:21 -04:00
Mark Furneaux
f793d09d8e Fix play bleeding into next track after auto stop
If "fade out on stop" is enabled, the "stop after this track" feature
would stop not stop the on current track, but instead start playing
the next track and fade out on that immediately. This patch disables
fadeout when the engine is stopped by HandleStopAfter().
2014-04-26 00:58:08 -04:00
Marcus Fritzsch
e3bea84bea gstenginepipeline: make buffer min fill configurable 2014-04-02 11:54:14 +02:00
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
192b60d965 Use nullptr as parent parameter default everywhere 2014-02-10 16:03:54 +01: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
David Sansome
2c55688601 Make the GPL spotify code non-optional 2013-09-18 00:49:29 +10:00
David Sansome
246e0808d2 Emit EOS when the buffer timestamps go backwards, as well as when a DISCONT buffer arrives. Fixes issue 3721. 2013-06-08 14:31:29 +10:00
David Sansome
e7dcac4f15 When transitioning to a preloaded song, emit the EOS event at the time the
audio actually changes to the next song instead of when the src changes songs.

Fixes issue 3716
2013-06-04 22:17:44 +10: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
90803fa0e0 Remove use of deprecated gstreamer functions. 2013-01-29 13:19:26 +01:00
John Maguire
24ac9adbe5 Beginnings of playback from Ubuntu One file store. 2012-11-27 18:35:06 +01:00
John Maguire
3b935e89da cstdint is missing on Snow Leopard. 2012-11-21 14:41:37 +01:00
John Maguire
80d35ef128 Merge remote branch 'origin/mingw-w64' 2012-11-19 18:17:19 +01:00
David Sansome
df21da786e Increase the priority of streaming threads on OS X to reduce audio stuttering a bit.
Fixes issue 3275
2012-11-18 11:06:46 +11:00
John Maguire
79318cc4e1 Build fixes for mingw-w64 2012-11-13 14:43:13 +01:00
John Maguire
371b63e159 Use access_token URL param instead of header hack for Google Drive. 2012-11-02 16:47:40 +01:00
John Maguire
27f60c281e Set the user agent for gstreamer HTTP streams. 2012-10-23 17:34:58 +02:00
John Maguire
517252ccc1 Merge branch 'master' into drive
Conflicts:
	data/data.qrc
2012-07-25 15:36:57 +02:00
Arnaud Bienner
0e3dc5a8be Add new ConcurrentRun templates for void functions, and functions with 3 arguments + corresponding test cases.
+ SongLoader now has its own QThreadPool to load folders/playlist in background.
Update issue 2598
This should fix slowliness problems reported.
2012-07-16 00:06:55 +02:00
John Maguire
145f1efaf5 Basic support for Google Drive & OAuth. 2012-07-12 14:09:20 +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
5984aecbb8 Make the spotify blob send 5 seconds of audio ahead of the clock time to fill up Clementine's buffer when starting playback. Fixes issue 2671 2012-06-09 17:52:39 +01:00
John Maguire
cbc650f44b Use CHECKED_GCONNECT instead of g_signal_connect everywhere. 2012-06-08 15:34:00 +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
7f56833125 Nicer 'if' block for setting monoplayback 2012-05-21 02:07:00 +02:00
Arnaud Bienner
26639503d0 Update issue 2137
Mono playback implemented; available in preferences
2012-05-20 20:50:25 +02:00
Arnaud Bienner
01daea7090 Commit missing modifications/change ConcurrentRun description a bit 2012-04-25 00:29:19 +02:00
David Sansome
96eccdfabf When receiving a buffering message, do the pipeline state change in a different thread to avoid a deadlock with the main thread when the user is seeking.
Fixes issue 2709
2012-02-13 20:49:25 +00:00
David Sansome
69b16fdabc Add some better comments to the buffering stuff in gstenginepipeline 2012-01-27 14:30:28 +00:00