return type;
}
+GType
+gst_decklink_audio_connection_get_type (void)
+{
+ static GType type;
+
+ if (!type) {
+ static const GEnumValue connections[] = {
+ {GST_DECKLINK_AUDIO_CONNECTION_AUTO, "auto", "Automatic"},
+ {GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED, "embedded", "SDI/HDMI embedded audio"},
+ {GST_DECKLINK_AUDIO_CONNECTION_AES_EBU, "aes", "AES/EBU input"},
+ {GST_DECKLINK_AUDIO_CONNECTION_ANALOG, "analog", "Analog input"},
+ {0, NULL, NULL}
+ };
+
+ type = g_enum_register_static ("GstDecklinkAudioConnection", connections);
+ }
+ return type;
+}
+
#define NTSC 10, 11, false, false
#define PAL 12, 11, true, false
#define HD 1, 1, false, true
#define GST_TYPE_DECKLINK_CONNECTION (gst_decklink_connection_get_type ())
GType gst_decklink_connection_get_type (void);
+typedef enum {
+ GST_DECKLINK_AUDIO_CONNECTION_AUTO,
+ GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED,
+ GST_DECKLINK_AUDIO_CONNECTION_AES_EBU,
+ GST_DECKLINK_AUDIO_CONNECTION_ANALOG
+} GstDecklinkAudioConnectionEnum;
+#define GST_TYPE_DECKLINK_AUDIO_CONNECTION (gst_decklink_audio_connection_get_type ())
+GType gst_decklink_audio_connection_get_type (void);
+
typedef struct _GstDecklinkMode GstDecklinkMode;
struct _GstDecklinkMode {
BMDDisplayMode mode;
{
PROP_0,
PROP_MODE,
- PROP_CONNECTION
+ PROP_CONNECTION,
+ PROP_AUDIO_INPUT
};
/* pad templates */
GST_TYPE_DECKLINK_CONNECTION, GST_DECKLINK_CONNECTION_SDI,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class, PROP_AUDIO_INPUT,
+ g_param_spec_enum ("audio-input", "Audio Input", "Audio Input Connection",
+ GST_TYPE_DECKLINK_AUDIO_CONNECTION, GST_DECKLINK_AUDIO_CONNECTION_AUTO,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
}
static void
decklinksrc->copy_data = TRUE;
decklinksrc->mode = GST_DECKLINK_MODE_NTSC;
+ decklinksrc->connection = GST_DECKLINK_CONNECTION_SDI;
+ decklinksrc->audio_connection = GST_DECKLINK_AUDIO_CONNECTION_AUTO;
}
decklinksrc->connection =
(GstDecklinkConnectionEnum) g_value_get_enum (value);
break;
+ case PROP_AUDIO_INPUT:
+ decklinksrc->audio_connection =
+ (GstDecklinkAudioConnectionEnum) g_value_get_enum (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
case PROP_CONNECTION:
g_value_set_enum (value, decklinksrc->connection);
break;
+ case PROP_AUDIO_INPUT:
+ g_value_set_enum (value, decklinksrc->audio_connection);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
const GstDecklinkMode *mode;
IDeckLinkConfiguration *config;
BMDVideoConnection conn;
+ BMDAudioConnection aconn;
GST_DEBUG_OBJECT (decklinksrc, "start");
default:
case GST_DECKLINK_CONNECTION_SDI:
conn = bmdVideoConnectionSDI;
+ aconn = bmdAudioConnectionEmbedded;
break;
case GST_DECKLINK_CONNECTION_HDMI:
conn = bmdVideoConnectionHDMI;
+ aconn = bmdAudioConnectionEmbedded;
break;
case GST_DECKLINK_CONNECTION_OPTICAL_SDI:
conn = bmdVideoConnectionOpticalSDI;
+ aconn = bmdAudioConnectionEmbedded;
break;
case GST_DECKLINK_CONNECTION_COMPONENT:
conn = bmdVideoConnectionComponent;
+ aconn = bmdAudioConnectionAnalog;
break;
case GST_DECKLINK_CONNECTION_COMPOSITE:
conn = bmdVideoConnectionComposite;
+ aconn = bmdAudioConnectionAnalog;
break;
case GST_DECKLINK_CONNECTION_SVIDEO:
conn = bmdVideoConnectionSVideo;
+ aconn = bmdAudioConnectionAnalog;
break;
}
}
}
- if (decklinksrc->connection == GST_DECKLINK_CONNECTION_COMPOSITE ||
- decklinksrc->connection == GST_DECKLINK_CONNECTION_COMPONENT ||
- decklinksrc->connection == GST_DECKLINK_CONNECTION_SVIDEO) {
- ret = config->SetInt (bmdDeckLinkConfigAudioInputConnection,
- bmdAudioConnectionAnalog);
- if (ret != S_OK) {
- GST_ERROR ("set configuration (audio input connection)");
- return FALSE;
- }
+ switch (decklinksrc->audio_connection) {
+ default:
+ case GST_DECKLINK_AUDIO_CONNECTION_AUTO:
+ break;
+ case GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED:
+ aconn = bmdAudioConnectionEmbedded;
+ break;
+ case GST_DECKLINK_AUDIO_CONNECTION_AES_EBU:
+ aconn = bmdAudioConnectionAESEBU;
+ break;
+ case GST_DECKLINK_AUDIO_CONNECTION_ANALOG:
+ aconn = bmdAudioConnectionAnalog;
+ break;
+ }
+ ret = config->SetInt (bmdDeckLinkConfigAudioInputConnection, aconn);
+ if (ret != S_OK) {
+ GST_ERROR ("set configuration (audio input connection)");
+ return FALSE;
}
#if 0