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 {