summaryrefslogtreecommitdiffstats
path: root/src/polypsrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/polypsrc.c')
-rw-r--r--src/polypsrc.c39
1 files changed, 8 insertions, 31 deletions
diff --git a/src/polypsrc.c b/src/polypsrc.c
index b396e3d..a790e6d 100644
--- a/src/polypsrc.c
+++ b/src/polypsrc.c
@@ -30,6 +30,7 @@
#include <gst/gsttaglist.h>
#include "polypsrc.h"
+#include "polyputil.h"
GST_DEBUG_CATEGORY_EXTERN(polyp_debug);
#define GST_CAT_DEFAULT polyp_debug
@@ -298,10 +299,11 @@ static void gst_polypsrc_stream_request_cb(pa_stream *s, size_t length, void *us
static gboolean gst_polypsrc_open(GstAudioSrc *asrc) {
GstPolypSrc *polypsrc = GST_POLYPSRC(asrc);
+ gchar *name = gst_polyp_client_name();
pa_threaded_mainloop_lock(polypsrc->mainloop);
- if (!(polypsrc->context = pa_context_new(pa_threaded_mainloop_get_api(polypsrc->mainloop), "gstreamer"))) {
+ if (!(polypsrc->context = pa_context_new(pa_threaded_mainloop_get_api(polypsrc->mainloop), name))) {
GST_ELEMENT_ERROR(polypsrc, RESOURCE, FAILED, ("Failed to create context"), (NULL));
goto unlock_and_fail;
}
@@ -322,11 +324,15 @@ static gboolean gst_polypsrc_open(GstAudioSrc *asrc) {
}
pa_threaded_mainloop_unlock(polypsrc->mainloop);
+
+ g_free(name);
return TRUE;
unlock_and_fail:
pa_threaded_mainloop_unlock(polypsrc->mainloop);
+
+ g_free(name);
return FALSE;
}
@@ -339,41 +345,12 @@ static gboolean gst_polypsrc_close(GstAudioSrc *asrc) {
return TRUE;
}
-
-static gboolean gst_polypsrc_fill_sample_spec(GstRingBufferSpec *spec, pa_sample_spec *ss) {
-
- if (spec->format == GST_MU_LAW && spec->width == 8)
- ss->format = PA_SAMPLE_ULAW;
- else if (spec->format == GST_A_LAW && spec->width == 8)
- ss->format = PA_SAMPLE_ALAW;
- else if (spec->format == GST_U8 && spec->width == 8)
- ss->format = PA_SAMPLE_U8;
- else if (spec->format == GST_S16_LE && spec->width == 16)
- ss->format = PA_SAMPLE_S16LE;
- else if (spec->format == GST_S16_BE && spec->width == 16)
- ss->format = PA_SAMPLE_S16BE;
- else if (spec->format == GST_FLOAT32_LE && spec->width == 32)
- ss->format = PA_SAMPLE_FLOAT32LE;
- else if (spec->format == GST_FLOAT32_BE && spec->width == 32)
- ss->format = PA_SAMPLE_FLOAT32BE;
- else
- return FALSE;
-
- ss->channels = spec->channels;
- ss->rate = spec->rate;
-
- if (!pa_sample_spec_valid(ss))
- return FALSE;
-
- return TRUE;
-}
-
static gboolean gst_polypsrc_prepare(GstAudioSrc *asrc, GstRingBufferSpec *spec) {
pa_buffer_attr buf_attr;
GstPolypSrc *polypsrc = GST_POLYPSRC(asrc);
- if (!gst_polypsrc_fill_sample_spec(spec, &polypsrc->sample_spec)) {
+ if (!gst_polyp_fill_sample_spec(spec, &polypsrc->sample_spec)) {
GST_ELEMENT_ERROR(polypsrc, RESOURCE, SETTINGS, ("Invalid sample specification."), (NULL));
goto unlock_and_fail;
}