Merge branch 'upstream/1.16' into tizen_gst_1.16.2
[platform/upstream/gst-plugins-good.git] / ext / pulse / pulsesrc.c
index 024f105..b61fc25 100644 (file)
 #include "pulsesrc.h"
 #include "pulseutil.h"
 
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
 #include <vconf.h>
 #endif
-#endif
 
 GST_DEBUG_CATEGORY_EXTERN (pulse_debug);
 #define GST_CAT_DEFAULT pulse_debug
@@ -92,13 +90,11 @@ enum
   PROP_LAST
 };
 
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
 #define GST_PULSESRC_DUMP_VCONF_KEY            "memory/private/sound/pcm_dump"
 #define GST_PULSESRC_DUMP_OUTPUT_PATH_PREFIX   "/tmp/dump_pulsesrc_out"
 #define GST_PULSESRC_DUMP_OUTPUT_FLAG          0x00200000U
 #endif
-#endif
 
 static void gst_pulsesrc_destroy_stream (GstPulseSrc * pulsesrc);
 static void gst_pulsesrc_destroy_context (GstPulseSrc * pulsesrc);
@@ -134,12 +130,6 @@ static GstStateChangeReturn gst_pulsesrc_change_state (GstElement *
 
 static GstClockTime gst_pulsesrc_get_time (GstClock * clock, GstPulseSrc * src);
 
-static GstStaticPadTemplate pad_template = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (_PULSE_CAPS_PCM)
-    );
-
 #define gst_pulsesrc_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstPulseSrc, gst_pulsesrc, GST_TYPE_AUDIO_SRC,
     G_IMPLEMENT_INTERFACE (GST_TYPE_STREAM_VOLUME, NULL));
@@ -151,6 +141,7 @@ gst_pulsesrc_class_init (GstPulseSrcClass * klass)
   GstAudioSrcClass *gstaudiosrc_class = GST_AUDIO_SRC_CLASS (klass);
   GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+  GstCaps *caps;
   gchar *clientname;
 
   gobject_class->finalize = gst_pulsesrc_finalize;
@@ -244,7 +235,11 @@ gst_pulsesrc_class_init (GstPulseSrcClass * klass)
       "PulseAudio Audio Source",
       "Source/Audio",
       "Captures audio from a PulseAudio server", "Lennart Poettering");
-  gst_element_class_add_static_pad_template (gstelement_class, &pad_template);
+
+  caps = gst_pulse_fix_pcm_caps (gst_caps_from_string (_PULSE_CAPS_PCM));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, caps));
+  gst_caps_unref (caps);
 
   /**
    * GstPulseSrc:volume:
@@ -277,8 +272,7 @@ gst_pulsesrc_class_init (GstPulseSrcClass * klass)
 #endif /* __TIZEN__ */
 }
 
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
 static GstPadProbeReturn
 gst_pulsesrc_pad_dump_probe (GstPad *pad, GstPadProbeInfo * info, gpointer data)
 {
@@ -296,17 +290,14 @@ gst_pulsesrc_pad_dump_probe (GstPad *pad, GstPadProbeInfo * info, gpointer data)
   return GST_PAD_PROBE_OK;
 }
 #endif
-#endif
 
 static void
 gst_pulsesrc_init (GstPulseSrc * pulsesrc)
 {
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
   GstPad *srcpad = NULL;
   int vconf_dump = 0;
 #endif
-#endif
   pulsesrc->server = NULL;
   pulsesrc->device = NULL;
   pulsesrc->client_name = gst_pulse_client_name ();
@@ -700,7 +691,7 @@ gst_pulsesrc_set_stream_volume (GstPulseSrc * pulsesrc, gdouble volume)
   if (!pulsesrc->mainloop)
     goto no_mainloop;
 
-  if (!pulsesrc->source_output_idx)
+  if (pulsesrc->source_output_idx == PA_INVALID_INDEX)
     goto no_index;
 
   pa_threaded_mainloop_lock (pulsesrc->mainloop);
@@ -755,7 +746,7 @@ gst_pulsesrc_set_stream_mute (GstPulseSrc * pulsesrc, gboolean mute)
   if (!pulsesrc->mainloop)
     goto no_mainloop;
 
-  if (!pulsesrc->source_output_idx)
+  if (pulsesrc->source_output_idx == PA_INVALID_INDEX)
     goto no_index;
 
   pa_threaded_mainloop_lock (pulsesrc->mainloop);
@@ -808,7 +799,7 @@ gst_pulsesrc_set_stream_device (GstPulseSrc * pulsesrc, const gchar * device)
   if (!pulsesrc->mainloop)
     goto no_mainloop;
 
-  if (!pulsesrc->source_output_idx)
+  if (pulsesrc->source_output_idx == PA_INVALID_INDEX)
     goto no_index;
 
   pa_threaded_mainloop_lock (pulsesrc->mainloop);
@@ -1156,14 +1147,12 @@ gst_pulsesrc_close (GstAudioSrc * asrc)
   pa_threaded_mainloop_lock (pulsesrc->mainloop);
   gst_pulsesrc_destroy_context (pulsesrc);
   pa_threaded_mainloop_unlock (pulsesrc->mainloop);
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
   if (pulsesrc->dump_fd_output) {
     fclose(pulsesrc->dump_fd_output);
     pulsesrc->dump_fd_output = NULL;
   }
 #endif
-#endif
   return TRUE;
 }
 
@@ -1678,8 +1667,7 @@ gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec)
     gst_pulsesrc_set_stream_volume (pulsesrc, pulsesrc->volume);
     pulsesrc->volume_set = FALSE;
   }
-#ifdef __TIZEN__
-#ifdef PCM_DUMP_ENABLE
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
   if (pulsesrc->need_dump_output) {
     char *suffix , *dump_path;
     GDateTime *time = NULL;
@@ -1697,7 +1685,6 @@ gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec)
     g_free(dump_path);
     g_date_time_unref(time);
   }
-#endif /* PCM_DUMP_ENABLE */
 #endif
 
   /* get the actual buffering properties now */