David Sansome
d5617c0daf
Set the media role for pulse audio
2014-06-19 22:51:58 +10:00
David Sansome
6bb81328e8
Merge branch 'master' into gstreamer-1.2
...
Conflicts:
ext/clementine-spotifyblob/mediapipeline.cpp
gst/moodbar/gstfftwspectrum.c
src/core/songloader.cpp
src/core/songloader.h
src/engines/gstengine.cpp
src/engines/gstenginepipeline.cpp
src/moodbar/moodbarpipeline.cpp
src/musicbrainz/chromaprinter.cpp
src/transcoder/transcoder.cpp
src/ui/mainwindow.cpp
src/visualisations/projectmvisualisation.cpp
2014-06-09 16:20:24 +10:00
David Sansome
1e3cfb0a2c
Don't try to update the scope if there's no buffer yet. Fixes #4388
2014-06-02 12:46:45 +10:00
David Sansome
162b2efbb0
If we don't know the length of a song from the metadata, get it from the pipeline which has the real length. Fixes #2818 when the length isn't in the podcast metadata.
2014-05-29 21:33:53 +10:00
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
David Sansome
03b0e51b7d
Ignore buffering messages from the magic queue2 element that's created by the uridecodebin. Also lower the threshold for buffering to start.
2012-01-27 11:08:18 +00: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
5ee6064a50
Fix compilation errors when compiling without spotify
2011-11-28 19:09:52 +00: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
Arnaud Bienner
bac6095491
Rename GrooveShark to Grooveshark everywhere, as it is actually named like this
2011-10-05 21:59:15 +02: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
Arnaud Bienner
10c141e1c1
Fix leak
2011-09-20 19:48:07 +02:00
Arnaud Bienner
d380c2e49d
Add 'Range' field to HTTP header when playing GrooveShark streaming URL
2011-09-19 23:52:21 +02:00
Arnaud Bienner
3dc4e3aa0b
Merge branch 'master' of https://code.google.com/p/clementine-player
2011-08-26 00:23:30 +02:00
Arnaud Bienner
21f5345da4
Also work with cdda URLs which doesn't contain device inside URL
2011-08-26 00:11:18 +02:00
David Sansome
73a1052f70
Use a fakesink instead of an appsink in the probe pipeline to fix a memory leak and make it work on Windows where we don't bundle appsink.
...
Fixes issue 2177
2011-08-22 22:40:33 +01:00
Andrew Gaydenko
41a151840f
Split the gstreamer pipeline - one path is converted to 16-bit int samples for the scope. The other is kept at float32 to preserve the bit depth of the audio.
...
Fixes issue 2114
2011-08-19 22:02:42 +01:00
Arnaud Bienner
07ce755060
Work with multiple CD devices
2011-08-10 00:49:36 +02: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
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