[rygel-gst-0-10-plugins] Perform basic extraction on discoverer creation failure.



commit 2eb1af65785b50e2e1e18f627075af9c2314abae
Author: Krzesimir Nowak <krnowak openismus com>
Date:   Mon Feb 18 12:54:17 2013 +0100

    Perform basic extraction on discoverer creation failure.

 .../rygel-media-export-metadata-extractor.c        |   99 ++++++++++----------
 1 files changed, 49 insertions(+), 50 deletions(-)
---
diff --git a/src/media-export/rygel-media-export-metadata-extractor.c 
b/src/media-export/rygel-media-export-metadata-extractor.c
index b747c14..162d34b 100644
--- a/src/media-export/rygel-media-export-metadata-extractor.c
+++ b/src/media-export/rygel-media-export-metadata-extractor.c
@@ -144,58 +144,53 @@ rygel_media_export_metadata_extractor_on_done (RygelMediaExportMetadataExtractor
   g_return_if_fail (GST_IS_DISCOVERER_INFO (gst_info));
 
   priv = self->priv;
-  if (priv->discoverer) {
-    signal_id = 0;
-    g_signal_parse_name ("discovered", GST_TYPE_DISCOVERER, &signal_id, NULL, FALSE);
-    g_signal_handlers_disconnect_matched (priv->discoverer,
-                                          G_SIGNAL_MATCH_ID |
-                                          G_SIGNAL_MATCH_FUNC |
-                                          G_SIGNAL_MATCH_DATA, signal_id,
-                                          0,
-                                          NULL,
-                                          G_CALLBACK 
(rygel_media_export_metadata_extractor_on_done_gst_discoverer_discovered),
-                                          self);
-
-    g_object_unref (priv->discoverer);
-    priv->discoverer = NULL;
+  signal_id = 0;
+  g_signal_parse_name ("discovered", GST_TYPE_DISCOVERER, &signal_id, NULL, FALSE);
+  g_signal_handlers_disconnect_matched (priv->discoverer,
+                                        G_SIGNAL_MATCH_ID |
+                                        G_SIGNAL_MATCH_FUNC |
+                                        G_SIGNAL_MATCH_DATA, signal_id,
+                                        0,
+                                        NULL,
+                                        G_CALLBACK 
(rygel_media_export_metadata_extractor_on_done_gst_discoverer_discovered),
+                                        self);
+
+  g_object_unref (priv->discoverer);
+  priv->discoverer = NULL;
+
+  uri = gst_discoverer_info_get_uri (gst_info);
+  abstract_file_hash = GEE_ABSTRACT_MAP (priv->file_hash);
+  file = G_FILE (gee_abstract_map_get (abstract_file_hash, uri));
+  if (!file) {
+    g_warning ("File %s already handled, ignoring event", uri);
+    return;
   }
-  if (gst_info) {
-    uri = gst_discoverer_info_get_uri (gst_info);
-    abstract_file_hash = GEE_ABSTRACT_MAP (priv->file_hash);
-    file = G_FILE (gee_abstract_map_get (abstract_file_hash, uri));
-    if (!file) {
-      g_warning ("File %s already handled, ignoring event", uri);
-      return;
-    }
-    gee_abstract_map_unset (abstract_file_hash, uri, NULL);
-    result = gst_discoverer_info_get_result (gst_info);
-
-    if ((result & GST_DISCOVERER_ERROR) == GST_DISCOVERER_ERROR) {
-      g_signal_emit (self, signals[ERROR], 0, file, err);
-    } else {
-      GUPnPDLNAProfile *dlna_profile;
+  gee_abstract_map_unset (abstract_file_hash, uri, NULL);
+  result = gst_discoverer_info_get_result (gst_info);
 
-      if ((result & GST_DISCOVERER_TIMEOUT) == GST_DISCOVERER_TIMEOUT) {
-       gchar* file_uri = g_file_get_uri (file);
+  if ((result & GST_DISCOVERER_ERROR) == GST_DISCOVERER_ERROR) {
+    g_signal_emit (self, signals[ERROR], 0, file, err);
+  } else {
+    GUPnPDLNAProfile *dlna_profile;
 
-       g_debug ("Extraction timed out on %s", file_uri);
-       g_free (file_uri);
-       dlna_profile = NULL;
-      } else {
-       GUPnPDLNAInformation *dlna_info = gupnp_dlna_gst_utils_information_from_discoverer_info (gst_info);
+    if ((result & GST_DISCOVERER_TIMEOUT) == GST_DISCOVERER_TIMEOUT) {
+      gchar* file_uri = g_file_get_uri (file);
 
-       dlna_profile = gupnp_dlna_profile_guesser_guess_profile_from_info (priv->guesser,
-                                                                          dlna_info);
-       g_object_unref (dlna_info);
-      }
+      g_debug ("Extraction timed out on %s", file_uri);
+      g_free (file_uri);
+      dlna_profile = NULL;
+    } else {
+      GUPnPDLNAInformation *dlna_info = gupnp_dlna_gst_utils_information_from_discoverer_info (gst_info);
 
-      rygel_media_export_metadata_extractor_extract_basic_information (self,
-                                                                      file,
-                                                                      gst_info,
-                                                                      dlna_profile);
+      dlna_profile = gupnp_dlna_profile_guesser_guess_profile_from_info (priv->guesser,
+                                                                         dlna_info);
+      g_object_unref (dlna_info);
     }
-  } else {
-    g_signal_emit (self, signals[ERROR], 0, NULL, err);
+
+    rygel_media_export_metadata_extractor_extract_basic_information (self,
+                                                                     file,
+                                                                     gst_info,
+                                                                     dlna_profile);
   }
 
   g_object_unref (file);
@@ -203,9 +198,9 @@ rygel_media_export_metadata_extractor_on_done (RygelMediaExportMetadataExtractor
 
 static void
 rygel_media_export_metadata_extractor_on_done_gst_discoverer_discovered (GstDiscoverer     *sender 
G_GNUC_UNUSED,
-                                                                        GstDiscovererInfo *info,
-                                                                        GError            *err,
-                                                                        gpointer           self) {
+                                                                         GstDiscovererInfo *info,
+                                                                         GError            *err,
+                                                                         gpointer           self) {
   rygel_media_export_metadata_extractor_on_done (self, info, err);
 }
 
@@ -229,8 +224,12 @@ rygel_media_export_metadata_extractor_extract (RygelMediaExportMetadataExtractor
     gst_timeout = (GstClockTime) (EXTRACTOR_TIMEOUT * GST_SECOND);
     discoverer = gst_discoverer_new (gst_timeout, &error);
     if (error) {
-      g_signal_emit (self, signals[ERROR], 0, file, error);
       g_error_free (error);
+      g_debug ("Failed to create a discoverer. Doing basic extraction.");
+      rygel_media_export_metadata_extractor_extract_basic_information (self,
+                                                                       file,
+                                                                       NULL,
+                                                                       NULL);
       return;
     }
     if (priv->discoverer) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]