diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c
index 3385db3..43bf3be 100644
--- a/ext/shout2/gstshout2.c
+++ b/ext/shout2/gstshout2.c
@@ -68,6 +68,7 @@ enum
 #define DEFAULT_PORT         8000
 #define DEFAULT_PASSWORD     "hackme"
 #define DEFAULT_USERNAME     "source"
+#define DEFAULT_ISPUBLIC     0
 #define DEFAULT_STREAMNAME   ""
 #define DEFAULT_DESCRIPTION  ""
 #define DEFAULT_GENRE        ""
@@ -204,6 +205,11 @@ gst_shout2send_class_init (GstShout2sendClass * klass)
           G_PARAM_READWRITE));
 
   /* metadata */
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PUBLIC,
+      g_param_spec_int ("ispublic", "ispublic",
+          "Stream is submitted to directory", 0, 1, DEFAULT_ISPUBLIC,
+          G_PARAM_READWRITE));
+
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_STREAMNAME,
       g_param_spec_string ("streamname", "streamname", "name of the stream",
           DEFAULT_STREAMNAME, G_PARAM_READWRITE));
@@ -266,6 +272,7 @@ gst_shout2send_init (GstShout2send * shout2send)
   shout2send->mount = g_strdup (DEFAULT_MOUNT);
   shout2send->url = g_strdup (DEFAULT_URL);
   shout2send->protocol = DEFAULT_PROTOCOL;
+  shout2send->ispublic = DEFAULT_ISPUBLIC;
 
   shout2send->tags = gst_tag_list_new ();
   shout2send->conn = NULL;
@@ -479,6 +486,11 @@ gst_shout2send_start (GstBaseSink * basesink)
   if (shout_set_password (sink->conn, sink->password) != SHOUTERR_SUCCESS)
     goto set_failed;
 
+  cur_prop = "ispublic";
+  GST_DEBUG_OBJECT (sink, "setting %s: %u", cur_prop, sink->ispublic);
+  if (shout_set_public (sink->conn, sink->ispublic) != SHOUTERR_SUCCESS)
+    goto set_failed;
+
   cur_prop = "streamname";
   GST_DEBUG_OBJECT (sink, "setting %s: %s", cur_prop, sink->streamname);
   if (shout_set_name (sink->conn, sink->streamname) != SHOUTERR_SUCCESS)
@@ -693,6 +705,9 @@ gst_shout2send_set_property (GObject * object, guint prop_id,
         g_free (shout2send->username);
       shout2send->username = g_strdup (g_value_get_string (value));
       break;
+    case ARG_PUBLIC:
+      shout2send->ispublic = g_value_get_int (value);
+      break;
     case ARG_STREAMNAME:       /* Name of the stream */
       if (shout2send->streamname)
         g_free (shout2send->streamname);
@@ -748,6 +763,9 @@ gst_shout2send_get_property (GObject * object, guint prop_id,
     case ARG_USERNAME:
       g_value_set_string (value, shout2send->username);
       break;
+    case ARG_PUBLIC:
+      g_value_set_int (value, shout2send->ispublic);
+      break;
     case ARG_STREAMNAME:       /* Name of the stream */
       g_value_set_string (value, shout2send->streamname);
       break;
diff --git a/ext/shout2/gstshout2.h b/ext/shout2/gstshout2.h
index 6f97c77..544696b 100644
--- a/ext/shout2/gstshout2.h
+++ b/ext/shout2/gstshout2.h
@@ -56,6 +56,7 @@ struct _GstShout2send {
   gchar *mount;
   gchar *url;
   gboolean connected;
+  guint ispublic;
   gchar *songmetadata;
   gchar *songartist;
   gchar *songtitle;
