@@ -21,7 +21,6 @@ public class Music.PlaybackManager : Object {
2121 }
2222
2323 private dynamic Gst . Element playbin;
24- private Gst . PbUtils . Discoverer discoverer;
2524 private uint progress_timer = 0 ;
2625 private Settings settings;
2726
@@ -46,14 +45,6 @@ public class Music.PlaybackManager : Object {
4645 bus. add_watch (0 , bus_callback);
4746 bus. enable_sync_message_emission ();
4847
49- try {
50- discoverer = new Gst .PbUtils .Discoverer ((Gst . ClockTime ) (5 * Gst . SECOND ));
51- discoverer. discovered. connect (update_metadata);
52- discoverer. finished. connect (discoverer. stop);
53- } catch (Error e) {
54- critical (" Unable to start Gstreamer Discoverer: %s " , e. message);
55- }
56-
5748 queue_liststore. items_changed. connect (() = > {
5849 var shuffle_action_action = (SimpleAction ) GLib . Application . get_default (). lookup_action (Application . ACTION_SHUFFLE );
5950 has_items = queue_liststore. get_n_items () > 0 ;
@@ -91,22 +82,10 @@ public class Music.PlaybackManager : Object {
9182
9283 // Files[] must not contain any null entries
9384 public void queue_files (File [] files ) {
94- discoverer. start ();
9585 int invalids = 0 ;
9686 foreach (unowned var file in files) {
9787 if (file. query_exists () && " audio" in ContentType . guess (file. get_uri (), null , null )) {
9888 var audio_object = new AudioObject (file. get_uri ());
99-
100- string ? basename = file. get_basename ();
101-
102- if (basename != null ) {
103- audio_object. title = basename;
104- } else {
105- audio_object. title = audio_object. uri;
106- }
107-
108- discoverer. discover_uri_async (audio_object. uri);
109-
11089 queue_liststore. append (audio_object);
11190 } else {
11291 invalids++ ;
@@ -151,69 +130,6 @@ public class Music.PlaybackManager : Object {
151130 queue_liststore. remove_all ();
152131 }
153132
154- private void update_metadata (Gst .PbUtils .DiscovererInfo info , Error ? err ) {
155- string uri = info. get_uri ();
156- switch (info. get_result ()) {
157- case Gst . PbUtils . DiscovererResult . URI_INVALID:
158- critical (" Couldn't read metadata for '%s ': invalid URI." , uri);
159- return ;
160- case Gst . PbUtils . DiscovererResult . ERROR:
161- critical (" Couldn't read metadata for '%s ': %s " , uri, err. message);
162- return ;
163- case Gst . PbUtils . DiscovererResult . TIMEOUT:
164- critical (" Couldn't read metadata for '%s ': Discovery timed out." , uri);
165- return ;
166- case Gst . PbUtils . DiscovererResult . BUSY:
167- critical (" Couldn't read metadata for '%s ': Already discovering a file." , uri);
168- return ;
169- case Gst . PbUtils . DiscovererResult . MISSING_PLUGINS:
170- critical (" Couldn't read metadata for '%s ': Missing plugins." , uri);
171- return ;
172- default:
173- break ;
174- }
175-
176- EqualFunc<string> equal_func = (a, b) = > {
177- return ((AudioObject ) a). uri == ((AudioObject ) b). uri;
178- };
179-
180- var temp_audio_object = new AudioObject (uri);
181-
182- uint position = - 1 ;
183- queue_liststore. find_with_equal_func (temp_audio_object, equal_func, out position);
184-
185- if (position != - 1 ) {
186- var audio_object = (AudioObject ) queue_liststore. get_item (position);
187- audio_object. duration = (int64 ) info. get_duration ();
188-
189- unowned Gst . TagList ? tag_list = info. get_tags ();
190-
191- string _title;
192- tag_list. get_string (Gst . Tags . TITLE , out _title);
193- if (_title != null ) {
194- audio_object. title = _title;
195- }
196-
197- string _artist;
198- tag_list. get_string (Gst . Tags . ARTIST , out _artist);
199- if (_artist != null ) {
200- audio_object. artist = _artist;
201- } else if (_title != null ) { // Don't set artist for files without tags
202- audio_object. artist = _(" Unknown" );
203- }
204-
205- var sample = get_cover_sample (tag_list);
206- if (sample != null ) {
207- var buffer = sample. get_buffer ();
208-
209- if (buffer != null ) {
210- audio_object. texture = Gdk . Texture . for_pixbuf (get_pixbuf_from_buffer (buffer));
211- }
212- }
213- } else {
214- critical (" Couldn't find '%s ' in queue" , uri);
215- }
216- }
217133
218134 private bool bus_callback (Gst .Bus bus , Gst .Message message ) {
219135 switch (message. type) {
@@ -397,47 +313,4 @@ public class Music.PlaybackManager : Object {
397313 previous_action. set_enabled (previous_sensitive);
398314
399315 }
400-
401- private Gst .Sample ? get_cover_sample (Gst .TagList tag_list ) {
402- Gst . Sample cover_sample = null ;
403- Gst . Sample sample;
404- for (int i = 0 ; tag_list. get_sample_index (Gst . Tags . IMAGE , i, out sample); i++ ) {
405- var caps = sample. get_caps ();
406- unowned Gst . Structure caps_struct = caps. get_structure (0 );
407- int image_type = Gst . Tag . ImageType . UNDEFINED ;
408- caps_struct. get_enum (" image-type" , typeof (Gst . Tag . ImageType ), out image_type);
409- if (image_type == Gst . Tag . ImageType . UNDEFINED && cover_sample == null ) {
410- cover_sample = sample;
411- } else if (image_type == Gst . Tag . ImageType . FRONT_COVER ) {
412- return sample;
413- }
414- }
415-
416- return cover_sample;
417- }
418-
419- private Gdk .Pixbuf ? get_pixbuf_from_buffer (Gst .Buffer buffer ) {
420- Gst . MapInfo map_info;
421-
422- if (! buffer. map (out map_info, Gst . MapFlags . READ )) {
423- warning (" Could not map memory buffer" );
424- return null ;
425- }
426-
427- Gdk . Pixbuf pix = null ;
428-
429- try {
430- var loader = new Gdk .PixbufLoader ();
431-
432- if (loader. write (map_info. data) && loader. close ()) {
433- pix = loader. get_pixbuf ();
434- }
435- } catch (Error err) {
436- warning (" Error processing image data: %s " , err. message);
437- }
438-
439- buffer. unmap (map_info);
440-
441- return pix;
442- }
443316}
0 commit comments