@@ -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++ ;
@@ -145,70 +124,6 @@ public class Music.PlaybackManager : Object {
145124 }
146125 }
147126
148- private void update_metadata (Gst .PbUtils .DiscovererInfo info , Error ? err ) {
149- string uri = info. get_uri ();
150- switch (info. get_result ()) {
151- case Gst . PbUtils . DiscovererResult . URI_INVALID:
152- critical (" Couldn't read metadata for '%s ': invalid URI." , uri);
153- return ;
154- case Gst . PbUtils . DiscovererResult . ERROR:
155- critical (" Couldn't read metadata for '%s ': %s " , uri, err. message);
156- return ;
157- case Gst . PbUtils . DiscovererResult . TIMEOUT:
158- critical (" Couldn't read metadata for '%s ': Discovery timed out." , uri);
159- return ;
160- case Gst . PbUtils . DiscovererResult . BUSY:
161- critical (" Couldn't read metadata for '%s ': Already discovering a file." , uri);
162- return ;
163- case Gst . PbUtils . DiscovererResult . MISSING_PLUGINS:
164- critical (" Couldn't read metadata for '%s ': Missing plugins." , uri);
165- return ;
166- default:
167- break ;
168- }
169-
170- EqualFunc<string> equal_func = (a, b) = > {
171- return ((AudioObject ) a). uri == ((AudioObject ) b). uri;
172- };
173-
174- var temp_audio_object = new AudioObject (uri);
175-
176- uint position = - 1 ;
177- queue_liststore. find_with_equal_func (temp_audio_object, equal_func, out position);
178-
179- if (position != - 1 ) {
180- var audio_object = (AudioObject ) queue_liststore. get_item (position);
181- audio_object. duration = (int64 ) info. get_duration ();
182-
183- unowned Gst . TagList ? tag_list = info. get_tags ();
184-
185- string _title;
186- tag_list. get_string (Gst . Tags . TITLE , out _title);
187- if (_title != null ) {
188- audio_object. title = _title;
189- }
190-
191- string _artist;
192- tag_list. get_string (Gst . Tags . ARTIST , out _artist);
193- if (_artist != null ) {
194- audio_object. artist = _artist;
195- } else if (_title != null ) { // Don't set artist for files without tags
196- audio_object. artist = _(" Unknown" );
197- }
198-
199- var sample = get_cover_sample (tag_list);
200- if (sample != null ) {
201- var buffer = sample. get_buffer ();
202-
203- if (buffer != null ) {
204- audio_object. texture = Gdk . Texture . for_pixbuf (get_pixbuf_from_buffer (buffer));
205- }
206- }
207- } else {
208- critical (" Couldn't find '%s ' in queue" , uri);
209- }
210- }
211-
212127 private bool bus_callback (Gst .Bus bus , Gst .Message message ) {
213128 switch (message. type) {
214129 case Gst . MessageType . EOS:
@@ -391,47 +306,4 @@ public class Music.PlaybackManager : Object {
391306 previous_action. set_enabled (previous_sensitive);
392307
393308 }
394-
395- private Gst .Sample ? get_cover_sample (Gst .TagList tag_list ) {
396- Gst . Sample cover_sample = null ;
397- Gst . Sample sample;
398- for (int i = 0 ; tag_list. get_sample_index (Gst . Tags . IMAGE , i, out sample); i++ ) {
399- var caps = sample. get_caps ();
400- unowned Gst . Structure caps_struct = caps. get_structure (0 );
401- int image_type = Gst . Tag . ImageType . UNDEFINED ;
402- caps_struct. get_enum (" image-type" , typeof (Gst . Tag . ImageType ), out image_type);
403- if (image_type == Gst . Tag . ImageType . UNDEFINED && cover_sample == null ) {
404- cover_sample = sample;
405- } else if (image_type == Gst . Tag . ImageType . FRONT_COVER ) {
406- return sample;
407- }
408- }
409-
410- return cover_sample;
411- }
412-
413- private Gdk .Pixbuf ? get_pixbuf_from_buffer (Gst .Buffer buffer ) {
414- Gst . MapInfo map_info;
415-
416- if (! buffer. map (out map_info, Gst . MapFlags . READ )) {
417- warning (" Could not map memory buffer" );
418- return null ;
419- }
420-
421- Gdk . Pixbuf pix = null ;
422-
423- try {
424- var loader = new Gdk .PixbufLoader ();
425-
426- if (loader. write (map_info. data) && loader. close ()) {
427- pix = loader. get_pixbuf ();
428- }
429- } catch (Error err) {
430- warning (" Error processing image data: %s " , err. message);
431- }
432-
433- buffer. unmap (map_info);
434-
435- return pix;
436- }
437309}
0 commit comments