One can use (or not use) master and slave mode independently.
static volatile gsize type = 0;
if (g_once_init_enter (&type)) {
- static const GEnumValue enum_values[] = {
- {GST_JACK_TRANSPORT_AUTONOMOUS,
- "No transport support", "autonomous"},
+ static const GFlagsValue flag_values[] = {
{GST_JACK_TRANSPORT_MASTER,
"Start and stop transport with state changes", "master"},
{GST_JACK_TRANSPORT_SLAVE,
"Follow transport state changes", "slave"},
{0, NULL, NULL},
};
- GType tmp = g_enum_register_static ("GstJackTransport", enum_values);
+ GType tmp = g_flags_register_static ("GstJackTransport", flag_values);
g_once_init_leave (&type, tmp);
}
return (GType) type;
* client behaviour regarding to the transport mechanism.
*/
typedef enum {
- GST_JACK_TRANSPORT_AUTONOMOUS,
- GST_JACK_TRANSPORT_MASTER,
- GST_JACK_TRANSPORT_SLAVE
+ GST_JACK_TRANSPORT_AUTONOMOUS = 0,
+ GST_JACK_TRANSPORT_MASTER = (0 << 1),
+ GST_JACK_TRANSPORT_SLAVE = (1 << 1),
} GstJackTransport;
typedef jack_default_audio_sample_t sample_t;
jack_handle_transport_change (GstJackAudioClient * client, GstState state)
{
GstObject *obj = GST_OBJECT_PARENT (client->user_data);
- GstJackTransport mode;
+ guint mode;
g_object_get (obj, "transport", &mode, NULL);
- if ((mode == GST_JACK_TRANSPORT_SLAVE) && (GST_STATE (obj) != state)) {
+ if ((mode & GST_JACK_TRANSPORT_SLAVE) && (GST_STATE (obj) != state)) {
GST_INFO_OBJECT (obj, "requesting state change: %s",
gst_element_state_get_name (state));
gst_element_post_message (GST_ELEMENT (obj),
GST_DEBUG_OBJECT (sink, "start");
- if (sink->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
GST_DEBUG_OBJECT (sink, "pause");
- if (sink->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
GST_DEBUG_OBJECT (sink, "stop");
- if (sink->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
* Since: 0.10.31
*/
g_object_class_install_property (gobject_class, PROP_TRANSPORT,
- g_param_spec_enum ("transport", "Transport mode",
+ g_param_spec_flags ("transport", "Transport mode",
"Jack transport behaviour of the client",
GST_TYPE_JACK_TRANSPORT, DEFAULT_PROP_TRANSPORT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
break;
case PROP_TRANSPORT:
- sink->transport = g_value_get_enum (value);
+ sink->transport = g_value_get_flags (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
g_value_set_boxed (value, sink->jclient);
break;
case PROP_TRANSPORT:
- g_value_set_enum (value, sink->transport);
+ g_value_set_flags (value, sink->transport);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
gchar *server;
jack_client_t *jclient;
gchar *client_name;
- GstJackTransport transport;
+ guint transport;
/* our client */
GstJackAudioClient *client;
GST_DEBUG_OBJECT (src, "start");
- if (src->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
GST_DEBUG_OBJECT (src, "pause");
- if (src->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
GST_DEBUG_OBJECT (src, "stop");
- if (src->transport == GST_JACK_TRANSPORT_MASTER) {
+ if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
* Since: 0.10.31
*/
g_object_class_install_property (gobject_class, PROP_TRANSPORT,
- g_param_spec_enum ("transport", "Transport mode",
+ g_param_spec_flags ("transport", "Transport mode",
"Jack transport behaviour of the client",
GST_TYPE_JACK_TRANSPORT, DEFAULT_PROP_TRANSPORT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
break;
case PROP_TRANSPORT:
- src->transport = g_value_get_enum (value);
+ src->transport = g_value_get_flags (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
g_value_set_boxed (value, src->jclient);
break;
case PROP_TRANSPORT:
- g_value_set_enum (value, src->transport);
+ g_value_set_flags (value, src->transport);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
GstCaps *caps;
/* properties */
- GstJackConnect connect;
+ GstJackConnect connect;
gchar *server;
jack_client_t *jclient;
gchar *client_name;
- GstJackTransport transport;
+ guint transport;
/* our client */
GstJackAudioClient *client;