[longomatch] Move device name trickery to the backend and filter blackmagic in avfvideosrc.



commit 43709d622656ab6b72ac3c1f0c4b229c1b75863e
Author: Josep Torra <n770galaxy gmail com>
Date:   Fri Apr 24 16:28:41 2015 +0200

    Move device name trickery to the backend and filter blackmagic in avfvideosrc.

 LongoMatch.Multimedia/Utils/Devices.cs |    3 ---
 libcesarplayer/gst-camera-capturer.c   |    3 ++-
 libcesarplayer/lgm-device.c            |   12 +++++++++++-
 3 files changed, 13 insertions(+), 5 deletions(-)
---
diff --git a/LongoMatch.Multimedia/Utils/Devices.cs b/LongoMatch.Multimedia/Utils/Devices.cs
index a8814b8..565829a 100644
--- a/LongoMatch.Multimedia/Utils/Devices.cs
+++ b/LongoMatch.Multimedia/Utils/Devices.cs
@@ -75,9 +75,6 @@ namespace LongoMatch.Multimedia.Utils
                                        device.DeviceType = CaptureSourceType.System;
                                        device.SourceElement = source;
                                        device.ID = GLib.Marshaller.PtrToStringGFree 
(lgm_device_get_device_name (device_raw));
-                                       if (source == "decklinkvideosrc") {
-                                               device.ID = "Blackmagic" + device.ID;
-                                       }
 
                                        GLib.List formats_raw = new GLib.List (lgm_device_get_formats 
(device_raw),
                                                                        typeof(IntPtr), false, false);
diff --git a/libcesarplayer/gst-camera-capturer.c b/libcesarplayer/gst-camera-capturer.c
index e76f01a..64ac667 100644
--- a/libcesarplayer/gst-camera-capturer.c
+++ b/libcesarplayer/gst-camera-capturer.c
@@ -313,7 +313,8 @@ gst_camera_capturer_update_device_id (GstCameraCapturer * gcc)
     prop_name = "device-name";
 
   if (!g_strcmp0 (gcc->priv->source_element_name, "decklinkvideosrc")) {
-    g_object_set (gcc->priv->source, "device-number", atoi(gcc->priv->device_id),
+    /* The blackmagic device name we use conforms the pattern "Blackmagic%d" */
+    g_object_set (gcc->priv->source, "device-number", atoi(gcc->priv->device_id + 10),
         NULL);
   } else {
     if (prop_name)
diff --git a/libcesarplayer/lgm-device.c b/libcesarplayer/lgm-device.c
index 6e6420a..99a422d 100644
--- a/libcesarplayer/lgm-device.c
+++ b/libcesarplayer/lgm-device.c
@@ -328,7 +328,17 @@ lgm_device_enum_devices (const gchar * source_name,
     if (!g_value_transform (v, &valstr))
       continue;
 
-    name = g_value_dup_string (&valstr);
+    /* Skip blackmagic on avfvideosrc as we only properly support them
+     * through decklinkvideosrc. */
+    if (!g_strcmp0 (source_name, "avfvideosrc"))
+      if (!g_strcmp0 (g_value_get_string (&valstr), "Blackmagic"))
+        continue;
+
+    /* Use the pattern "Blackmagic%d" for device name when decklinkvideosrc */
+    if (!g_strcmp0 (source_name, "decklinkvideosrc"))
+      name = g_strdup_printf ("Blackmagic%s", g_value_get_string (&valstr));
+    else
+      name = g_value_dup_string (&valstr);
     device = lgm_device_new (source_name, name, type);
     g_value_unset (&valstr);
     g_free (name);


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