alsasink: Add passthrough property
- Add property pass-through to control
if enable pass-through mode
Signed-off-by: Lyon Wang <lyon.wang@nxp.com>
diff --git a/ext/alsa/gstalsasink.c b/ext/alsa/gstalsasink.c
index d6d287b..79b4f4a 100644
--- a/ext/alsa/gstalsasink.c
+++ b/ext/alsa/gstalsasink.c
@@ -70,6 +70,7 @@
PROP_DEVICE,
PROP_DEVICE_NAME,
PROP_CARD_NAME,
+ PROP_PASSTHROUGH,
PROP_LAST
};
@@ -198,6 +199,11 @@
g_param_spec_string ("card-name", "Card name",
"Human-readable name of the sound card", DEFAULT_CARD_NAME,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_PASSTHROUGH,
+ g_param_spec_boolean ("pass-through", "Pass through",
+ "enable pass through mode",
+ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
static void
@@ -217,6 +223,9 @@
sink->device = g_strdup (DEFAULT_DEVICE);
}
break;
+ case PROP_PASSTHROUGH:
+ sink->passthrough = g_value_get_boolean(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -245,6 +254,9 @@
gst_alsa_find_card_name (GST_OBJECT_CAST (sink),
sink->device, SND_PCM_STREAM_PLAYBACK));
break;
+ case PROP_PASSTHROUGH:
+ g_value_set_boolean (value, sink->passthrough);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -259,6 +271,7 @@
alsasink->device = g_strdup (DEFAULT_DEVICE);
alsasink->handle = NULL;
alsasink->cached_caps = NULL;
+ alsasink->passthrough = FALSE;
g_mutex_init (&alsasink->alsa_lock);
g_mutex_init (&alsasink->delay_lock);
@@ -333,7 +346,8 @@
if (gst_alsa_iec958_formats_supported(GST_OBJECT (sink), sink->device,
&sink->handle) == TRUE) {
GST_LOG_OBJECT (sink, "Add pass-through capabilities");
- gst_caps_append (caps, gst_caps_from_string (PASSTHROUGH_CAPS));
+ if (TRUE == sink->passthrough)
+ gst_caps_append (caps, gst_caps_from_string (PASSTHROUGH_CAPS));
}
if (caps) {
diff --git a/ext/alsa/gstalsasink.h b/ext/alsa/gstalsasink.h
index b240fe4..64bd1f5 100644
--- a/ext/alsa/gstalsasink.h
+++ b/ext/alsa/gstalsasink.h
@@ -76,6 +76,8 @@
GMutex alsa_lock;
GMutex delay_lock;
+
+ gboolean passthrough;
};
struct _GstAlsaSinkClass {