#define DEFAULT_SAMPLES_PER_BUFFER 1024 enum { PROP_0, PROP_SAMPLES_PER_BUFFER, PROP_LAST }; static GstStaticPadTemplate gst_flite_test_src_src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) " GST_AUDIO_NE (S16) ", " "layout = (string) interleaved, " "rate = (int) 48000, " "channels = (int) [1, 8]") ); #define gst_flite_test_src_parent_class parent_class G_DEFINE_TYPE (GstFliteTestSrc, gst_flite_test_src, GST_TYPE_BASE_SRC); static void gst_flite_test_src_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_flite_test_src_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); static gboolean gst_flite_test_src_start (GstBaseSrc * basesrc); static gboolean gst_flite_test_src_stop (GstBaseSrc * basesrc); static GstFlowReturn gst_flite_test_src_create (GstBaseSrc * basesrc,
static void gst_mpg123_audio_dec_class_init (GstMpg123AudioDecClass * klass) { GstAudioDecoderClass *base_class; GstElementClass *element_class; GstPadTemplate *src_template, *sink_template; int error; GST_DEBUG_CATEGORY_INIT (mpg123_debug, "mpg123", 0, "mpg123 mp3 decoder"); base_class = GST_AUDIO_DECODER_CLASS (klass); element_class = GST_ELEMENT_CLASS (klass); gst_element_class_set_static_metadata (element_class, "mpg123 mp3 decoder", "Codec/Decoder/Audio", "Decodes mp3 streams using the mpg123 library", "Carlos Rafael Giani <*****@*****.**>"); /* Not using static pad template for srccaps, since the comma-separated list * of formats needs to be created depending on whatever mpg123 supports */ { const int *format_list; const long *rates_list; size_t num, i; GString *s; GstCaps *src_template_caps; s = g_string_new ("audio/x-raw, "); mpg123_encodings (&format_list, &num); g_string_append (s, "format = { "); for (i = 0; i < num; ++i) { switch (format_list[i]) { case MPG123_ENC_SIGNED_16: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (S16)); break; case MPG123_ENC_UNSIGNED_16: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (U16)); break; case MPG123_ENC_SIGNED_24: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (S24)); break; case MPG123_ENC_UNSIGNED_24: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (U24)); break; case MPG123_ENC_SIGNED_32: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (S32)); break; case MPG123_ENC_UNSIGNED_32: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (U32)); break; case MPG123_ENC_FLOAT_32: g_string_append (s, (i > 0) ? ", " : ""); g_string_append (s, GST_AUDIO_NE (F32)); break; default: GST_DEBUG ("Ignoring mpg123 format %d", format_list[i]); break; } } g_string_append (s, " }, "); mpg123_rates (&rates_list, &num); g_string_append (s, "rate = (int) { "); for (i = 0; i < num; ++i) { g_string_append_printf (s, "%s%lu", (i > 0) ? ", " : "", rates_list[i]); } g_string_append (s, "}, "); g_string_append (s, "channels = (int) [ 1, 2 ], "); g_string_append (s, "layout = (string) interleaved"); src_template_caps = gst_caps_from_string (s->str); src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, src_template_caps); g_string_free (s, TRUE); } sink_template = gst_static_pad_template_get (&static_sink_template); gst_element_class_add_pad_template (element_class, sink_template); gst_element_class_add_pad_template (element_class, src_template); base_class->start = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_start); base_class->stop = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_stop); base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_handle_frame); base_class->set_format = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_set_format); base_class->flush = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_flush); error = mpg123_init (); if (G_UNLIKELY (error != MPG123_OK)) GST_ERROR ("Could not initialize mpg123 library: %s", mpg123_plain_strerror (error)); else GST_INFO ("mpg123 library initialized"); }
* Wrapper for buzzmachine sound effects. */ // see also: gstidentity, gstvolume, gstlevel #include "plugin.h" #define GST_CAT_DEFAULT bml_debug GST_DEBUG_CATEGORY_EXTERN (GST_CAT_DEFAULT); static GstStaticPadTemplate bml_pad_caps_mono_src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) " GST_AUDIO_NE (F32) ", " "layout = (string) interleaved, " "rate = (int) [ 1, MAX ], " "channels = (int) 1") ); static GstStaticPadTemplate bml_pad_caps_stereo_src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) " GST_AUDIO_NE (F32) ", " "layout = (string) interleaved, " "rate = (int) [ 1, MAX ], " "channels = (int) 2") ); static GstStaticPadTemplate bml_pad_caps_mono_sink_template =
GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); enum { PROP_0, PROP_ROOM_SIZE, PROP_DAMPING, PROP_PAN_WIDTH, PROP_LEVEL }; static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (S16) "}, " "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ], " "layout = (string) interleaved") ); static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (S16) "}, " "rate = (int) [ 1, MAX ], " "channels = (int) 2, " "layout = (string) interleaved") ); G_DEFINE_TYPE_WITH_CODE (GstFreeverb, gst_freeverb, GST_TYPE_BASE_TRANSFORM, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL));
#endif #include "gstdtmfdetect.h" #include <string.h> #include <gst/audio/audio.h> GST_DEBUG_CATEGORY (dtmf_detect_debug); #define GST_CAT_DEFAULT (dtmf_detect_debug) static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) \"" GST_AUDIO_NE (S16) "\", " "rate = (int) 8000, " "channels = (int) 1") ); static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) \"" GST_AUDIO_NE (S16) "\", " "rate = (int) 8000, " "channels = (int) 1") ); /* signals and args */ enum {
GST_DEBUG_CATEGORY_STATIC (sbc_dec_debug); #define GST_CAT_DEFAULT sbc_dec_debug #define parent_class gst_sbc_dec_parent_class G_DEFINE_TYPE (GstSbcDec, gst_sbc_dec, GST_TYPE_AUDIO_DECODER); static GstStaticPadTemplate sbc_dec_sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-sbc, channels = (int) [ 1, 2 ], " "rate = (int) { 16000, 32000, 44100, 48000 }, " "parsed = (boolean) true")); static GstStaticPadTemplate sbc_dec_src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, format=" GST_AUDIO_NE (S16) ", " "rate = (int) { 16000, 32000, 44100, 48000 }, " "channels = (int) [ 1, 2 ], layout=interleaved")); static GstFlowReturn gst_sbc_dec_handle_frame (GstAudioDecoder * audio_dec, GstBuffer * buf) { GstSbcDec *dec = GST_SBC_DEC (audio_dec); GstBuffer *outbuf = NULL; GstMapInfo out_map; GstMapInfo in_map; gsize output_size; guint num_frames, i; /* no fancy draining */ if (G_UNLIKELY (buf == NULL))
#define ECHO_CAPS_STRING \ "audio/x-raw, " \ "channels = (int) 2, " \ "channel-mask = (bitmask) 3, " \ "rate = (int) 100000, " \ "layout = (string) interleaved, " \ "format = (string) " GST_AUDIO_NE(F64) static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "channels = (int) [ 1, 2 ], " "rate = (int) [ 1, MAX ], " "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (F64) " }")); static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "channels = (int) [ 1, 2 ], " "rate = (int) [ 1, MAX ], " "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (F64) " }")); static GstElement * setup_echo (void) { GstElement *echo; GST_DEBUG ("setup_echo");
#include <gst/audio/audio.h> #include "gstcutter.h" #include "math.h" GST_DEBUG_CATEGORY_STATIC (cutter_debug); #define GST_CAT_DEFAULT cutter_debug #define CUTTER_DEFAULT_THRESHOLD_LEVEL 0.1 #define CUTTER_DEFAULT_THRESHOLD_LENGTH (500 * GST_MSECOND) #define CUTTER_DEFAULT_PRE_LENGTH (200 * GST_MSECOND) static GstStaticPadTemplate cutter_src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) { S8," GST_AUDIO_NE (S16) " }, " "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, MAX ], " "layout = (string) interleaved") ); static GstStaticPadTemplate cutter_sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) { S8," GST_AUDIO_NE (S16) " }, " "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, MAX ], " "layout = (string) interleaved") ); enum