[rygel/wip/new-gupnp-dlna: 17/18] WIP
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/new-gupnp-dlna: 17/18] WIP
- Date: Tue, 18 Dec 2012 23:05:06 +0000 (UTC)
commit 941dafbeee5ee5c7d8c058e46c3a2725c1eecbeb
Author: Jens Georg <jensg openismus com>
Date: Tue Dec 18 13:00:25 2012 +0100
WIP
.../rygel-media-export-harvesting-task.vala | 8 ++--
.../rygel-media-export-item-factory.vala | 20 ++++++------
.../rygel-media-export-metadata-extractor.vala | 32 ++++++++++++-------
3 files changed, 34 insertions(+), 26 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
index 8053a27..d3196cb 100644
--- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala
+++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
@@ -301,10 +301,10 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
return false;
}
- private void on_extracted_cb (File file,
- DiscovererInfo? dlna,
- GUPnPDLNA.Profile profile,
- FileInfo file_info) {
+ private void on_extracted_cb (File file,
+ DiscovererInfo? dlna,
+ GUPnPDLNA.Profile? profile,
+ FileInfo file_info) {
if (this.cancellable.is_cancelled ()) {
this.completed ();
}
diff --git a/src/plugins/media-export/rygel-media-export-item-factory.vala b/src/plugins/media-export/rygel-media-export-item-factory.vala
index acc1e4d..ee8dff6 100644
--- a/src/plugins/media-export/rygel-media-export-item-factory.vala
+++ b/src/plugins/media-export/rygel-media-export-item-factory.vala
@@ -115,7 +115,7 @@ namespace Rygel.MediaExport.ItemFactory {
public static MediaItem? create_from_info (MediaContainer parent,
File file,
DiscovererInfo info,
- GUPnPDLNA.Profile profile,
+ GUPnPDLNA.Profile? profile,
FileInfo file_info) {
MediaItem item;
string id = MediaCache.get_id (file);
@@ -195,7 +195,7 @@ namespace Rygel.MediaExport.ItemFactory {
private static MediaItem fill_video_item (VideoItem item,
File file,
DiscovererInfo info,
- GUPnPDLNA.Profile profile,
+ GUPnPDLNA.Profile? profile,
DiscovererVideoInfo video_info,
DiscovererAudioInfo? audio_info,
FileInfo file_info) {
@@ -214,7 +214,7 @@ namespace Rygel.MediaExport.ItemFactory {
private static MediaItem fill_photo_item (PhotoItem item,
File file,
DiscovererInfo info,
- GUPnPDLNA.Profile profile,
+ GUPnPDLNA.Profile? profile,
DiscovererVideoInfo video_info,
FileInfo file_info) {
fill_media_item (item, file, info, profile, file_info);
@@ -231,7 +231,7 @@ namespace Rygel.MediaExport.ItemFactory {
private static MediaItem fill_music_item (MusicItem item,
File file,
DiscovererInfo info,
- GUPnPDLNA.Profile profile,
+ GUPnPDLNA.Profile? profile,
DiscovererAudioInfo? audio_info,
FileInfo file_info) {
fill_audio_item (item as AudioItem, info, audio_info);
@@ -291,11 +291,11 @@ namespace Rygel.MediaExport.ItemFactory {
return item;
}
- private static void fill_media_item (MediaItem item,
- File file,
- DiscovererInfo info,
- GUPnPDLNA.Profile profile,
- FileInfo file_info) {
+ private static void fill_media_item (MediaItem item,
+ File file,
+ DiscovererInfo info,
+ GUPnPDLNA.Profile? profile,
+ FileInfo file_info) {
string title = null;
if (info.get_tags () == null ||
@@ -326,7 +326,7 @@ namespace Rygel.MediaExport.ItemFactory {
item.size = (int64) file_info.get_size ();
item.modified = (int64) mtime;
- if (profile.name != null) {
+ if (profile != null && profile.name != null) {
item.dlna_profile = profile.name;
item.mime_type = profile.mime;
} else {
diff --git a/src/plugins/media-export/rygel-media-export-metadata-extractor.vala b/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
index ab731df..1a0d6c5 100644
--- a/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
+++ b/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
@@ -36,10 +36,10 @@ using GUPnPDLNA;
*/
public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
/* Signals */
- public signal void extraction_done (File file,
- DiscovererInfo? dlna,
- GUPnPDLNA.Profile profile,
- FileInfo file_info);
+ public signal void extraction_done (File file,
+ DiscovererInfo? info,
+ GUPnPDLNA.Profile? profile,
+ FileInfo file_info);
/**
* Signalize that an error occured during metadata extraction
@@ -55,7 +55,7 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
* the GLib.File back from the URI in on_discovered().
*/
private HashMap<string, File> file_hash;
- private uint64 timeout = 10; /* seconds */
+ private uint timeout = 10; /* seconds */
private bool extract_metadata;
@@ -76,11 +76,12 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
string uri = file.get_uri ();
var gst_timeout = (ClockTime) (this.timeout * Gst.SECOND);
try {
- this.discoverer = new Discoverer (gst_timeout);
- this.file_hash.set (uri, file);
- this.discoverer.discovered.connect (on_done);
- this.discoverer.start ();
- this.discoverer.discover_uri (uri);
+ this.discoverer = new Discoverer (gst_timeout);
+ this.file_hash.set (uri, file);
+ this.discoverer.discovered.connect (on_done);
+ this.discoverer.start ();
+ this.discoverer.discover_uri_async (uri);
+ this.guesser = new GUPnPDLNA.ProfileGuesser (true, true);
} catch (Error error) {
this.on_done (null, error);
}
@@ -106,6 +107,9 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
// set dlna to null to extract basic file information
info = null;
+ this.extract_basic_information (file, info, null);
+
+ return;
} else if ((info.get_result () &
DiscovererResult.ERROR) != 0) {
this.error (file, err);
@@ -113,7 +117,6 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
return;
}
- this.guesser = new GUPnPDLNA.ProfileGuesser (true, true);
this.guesser.done.connect ((uri, dlna, error) => {
if (error != null) {
this.error (file, err);
@@ -123,6 +126,12 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
this.extract_basic_information (file, info, dlna);
});
+ try {
+ this.guesser.guess_profile_async (info.get_uri (),
+ this.timeout * 1000);
+ } catch (Error error) {
+ warning ("Failed to guess DLNA profile: %s", error.message);
+ }
}
private void extract_basic_information
@@ -163,5 +172,4 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
}
}
-
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]