mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
decklink: Add connection type
This commit is contained in:
parent
bb4844b29e
commit
16a49a3617
4 changed files with 65 additions and 12 deletions
|
@ -47,6 +47,27 @@ gst_decklink_mode_get_type (void)
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GType
|
||||||
|
gst_decklink_connection_get_type (void)
|
||||||
|
{
|
||||||
|
static GType type;
|
||||||
|
|
||||||
|
if (!type) {
|
||||||
|
static const GEnumValue connections[] = {
|
||||||
|
{GST_DECKLINK_CONNECTION_SDI, "sdi", "SDI"},
|
||||||
|
{GST_DECKLINK_CONNECTION_HDMI, "hdmi", "HDMI"},
|
||||||
|
{GST_DECKLINK_CONNECTION_OPTICAL_SDI, "optical-sdi", "Optical SDI"},
|
||||||
|
{GST_DECKLINK_CONNECTION_COMPONENT, "component", "Component"},
|
||||||
|
{GST_DECKLINK_CONNECTION_COMPOSITE, "composite", "Composite"},
|
||||||
|
{GST_DECKLINK_CONNECTION_SVIDEO, "svideo", "S-Video"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
type = g_enum_register_static ("GstDecklinkConnection", connections);
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
static const GstDecklinkMode modes[] = {
|
static const GstDecklinkMode modes[] = {
|
||||||
{bmdModeNTSC, 720, 486, 30000, 1001, true},
|
{bmdModeNTSC, 720, 486, 30000, 1001, true},
|
||||||
{bmdModePAL, 720, 576, 25, 1, true},
|
{bmdModePAL, 720, 576, 25, 1, true},
|
||||||
|
|
|
@ -35,6 +35,16 @@ typedef enum {
|
||||||
#define GST_TYPE_DECKLINK_MODE (gst_decklink_mode_get_type ())
|
#define GST_TYPE_DECKLINK_MODE (gst_decklink_mode_get_type ())
|
||||||
GType gst_decklink_mode_get_type (void);
|
GType gst_decklink_mode_get_type (void);
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GST_DECKLINK_CONNECTION_SDI,
|
||||||
|
GST_DECKLINK_CONNECTION_HDMI,
|
||||||
|
GST_DECKLINK_CONNECTION_OPTICAL_SDI,
|
||||||
|
GST_DECKLINK_CONNECTION_COMPONENT,
|
||||||
|
GST_DECKLINK_CONNECTION_COMPOSITE,
|
||||||
|
GST_DECKLINK_CONNECTION_SVIDEO
|
||||||
|
} GstDecklinkConnectionEnum;
|
||||||
|
#define GST_TYPE_DECKLINK_CONNECTION (gst_decklink_connection_get_type ())
|
||||||
|
GType gst_decklink_connection_get_type (void);
|
||||||
|
|
||||||
typedef struct _GstDecklinkMode GstDecklinkMode;
|
typedef struct _GstDecklinkMode GstDecklinkMode;
|
||||||
struct _GstDecklinkMode {
|
struct _GstDecklinkMode {
|
||||||
|
|
|
@ -119,7 +119,7 @@ enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_MODE,
|
PROP_MODE,
|
||||||
PROP_OPTICAL
|
PROP_CONNECTION
|
||||||
};
|
};
|
||||||
|
|
||||||
/* pad templates */
|
/* pad templates */
|
||||||
|
@ -189,9 +189,9 @@ gst_decklink_src_class_init (GstDecklinkSrcClass * klass)
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
||||||
G_PARAM_CONSTRUCT)));
|
G_PARAM_CONSTRUCT)));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class, PROP_OPTICAL,
|
g_object_class_install_property (gobject_class, PROP_CONNECTION,
|
||||||
g_param_spec_boolean ("optical", "Optical", "Optical",
|
g_param_spec_enum ("connection", "Connection", "Connection",
|
||||||
TRUE,
|
GST_TYPE_DECKLINK_CONNECTION, GST_DECKLINK_CONNECTION_SDI,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
||||||
G_PARAM_CONSTRUCT)));
|
G_PARAM_CONSTRUCT)));
|
||||||
}
|
}
|
||||||
|
@ -286,8 +286,9 @@ gst_decklink_src_set_property (GObject * object, guint property_id,
|
||||||
case PROP_MODE:
|
case PROP_MODE:
|
||||||
decklinksrc->mode = (GstDecklinkModeEnum) g_value_get_enum (value);
|
decklinksrc->mode = (GstDecklinkModeEnum) g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
case PROP_OPTICAL:
|
case PROP_CONNECTION:
|
||||||
decklinksrc->optical = g_value_get_boolean (value);
|
decklinksrc->connection =
|
||||||
|
(GstDecklinkConnectionEnum) g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
@ -308,8 +309,8 @@ gst_decklink_src_get_property (GObject * object, guint property_id,
|
||||||
case PROP_MODE:
|
case PROP_MODE:
|
||||||
g_value_set_enum (value, decklinksrc->mode);
|
g_value_set_enum (value, decklinksrc->mode);
|
||||||
break;
|
break;
|
||||||
case PROP_OPTICAL:
|
case PROP_CONNECTION:
|
||||||
g_value_set_boolean (value, decklinksrc->optical);
|
g_value_set_enum (value, decklinksrc->connection);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
@ -380,6 +381,7 @@ gst_decklink_src_start (GstElement * element)
|
||||||
HRESULT ret;
|
HRESULT ret;
|
||||||
const GstDecklinkMode *mode;
|
const GstDecklinkMode *mode;
|
||||||
IDeckLinkConfiguration *config;
|
IDeckLinkConfiguration *config;
|
||||||
|
BMDVideoConnection conn;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (decklinksrc, "start");
|
GST_DEBUG_OBJECT (decklinksrc, "start");
|
||||||
|
|
||||||
|
@ -413,9 +415,29 @@ gst_decklink_src_start (GstElement * element)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = config->SetInt (bmdDeckLinkConfigVideoInputConnection,
|
switch (decklinksrc->connection) {
|
||||||
decklinksrc->optical ? bmdVideoConnectionOpticalSDI :
|
default:
|
||||||
bmdVideoConnectionSDI);
|
case GST_DECKLINK_CONNECTION_SDI:
|
||||||
|
conn = bmdVideoConnectionSDI;
|
||||||
|
break;
|
||||||
|
case GST_DECKLINK_CONNECTION_HDMI:
|
||||||
|
conn = bmdVideoConnectionHDMI;
|
||||||
|
break;
|
||||||
|
case GST_DECKLINK_CONNECTION_OPTICAL_SDI:
|
||||||
|
conn = bmdVideoConnectionOpticalSDI;
|
||||||
|
break;
|
||||||
|
case GST_DECKLINK_CONNECTION_COMPONENT:
|
||||||
|
conn = bmdVideoConnectionComponent;
|
||||||
|
break;
|
||||||
|
case GST_DECKLINK_CONNECTION_COMPOSITE:
|
||||||
|
conn = bmdVideoConnectionComposite;
|
||||||
|
break;
|
||||||
|
case GST_DECKLINK_CONNECTION_SVIDEO:
|
||||||
|
conn = bmdVideoConnectionSVideo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = config->SetInt (bmdDeckLinkConfigVideoInputConnection, conn);
|
||||||
if (ret != S_OK) {
|
if (ret != S_OK) {
|
||||||
GST_ERROR ("set configuration (input source)");
|
GST_ERROR ("set configuration (input source)");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -71,7 +71,7 @@ struct _GstDecklinkSrc
|
||||||
/* properties */
|
/* properties */
|
||||||
gboolean copy_data;
|
gboolean copy_data;
|
||||||
GstDecklinkModeEnum mode;
|
GstDecklinkModeEnum mode;
|
||||||
gboolean optical;
|
GstDecklinkConnectionEnum connection;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstDecklinkSrcClass
|
struct _GstDecklinkSrcClass
|
||||||
|
|
Loading…
Reference in a new issue