static gboolean plugin_init (GstPlugin * plugin) #endif // GSTREAMER_LITE { /* initialize gst controller library */ gst_controller_init (NULL, NULL); #ifdef GSTREAMER_LITE return (gst_element_register (plugin, "audiopanorama", GST_RANK_NONE, GST_TYPE_AUDIO_PANORAMA)); #else // GSTREAMER_LITE return (gst_element_register (plugin, "audiopanorama", GST_RANK_NONE, GST_TYPE_AUDIO_PANORAMA) && gst_element_register (plugin, "audioinvert", GST_RANK_NONE, GST_TYPE_AUDIO_INVERT) && gst_element_register (plugin, "audiokaraoke", GST_RANK_NONE, GST_TYPE_AUDIO_KARAOKE) && gst_element_register (plugin, "audioamplify", GST_RANK_NONE, GST_TYPE_AUDIO_AMPLIFY) && gst_element_register (plugin, "audiodynamic", GST_RANK_NONE, GST_TYPE_AUDIO_DYNAMIC) && gst_element_register (plugin, "audiocheblimit", GST_RANK_NONE, GST_TYPE_AUDIO_CHEB_LIMIT) && gst_element_register (plugin, "audiochebband", GST_RANK_NONE, GST_TYPE_AUDIO_CHEB_BAND) && gst_element_register (plugin, "audioiirfilter", GST_RANK_NONE, GST_TYPE_AUDIO_IIR_FILTER) && gst_element_register (plugin, "audiowsinclimit", GST_RANK_NONE, GST_TYPE_AUDIO_WSINC_LIMIT) && gst_element_register (plugin, "audiowsincband", GST_RANK_NONE, GST_TYPE_AUDIO_WSINC_BAND) && gst_element_register (plugin, "audiofirfilter", GST_RANK_NONE, GST_TYPE_AUDIO_FIR_FILTER) && gst_element_register (plugin, "audioecho", GST_RANK_NONE, GST_TYPE_AUDIO_ECHO)); #endif // GSTREAMER_LITE }
gboolean gst_sbc_enc_plugin_init(GstPlugin *plugin) { return gst_element_register(plugin, "sbcenc", GST_RANK_NONE, GST_TYPE_SBC_ENC); }
static gboolean plugin_init (GstPlugin * plugin) { guint i, count; VisList *list; GST_DEBUG_CATEGORY_INIT (libvisual_debug, "libvisual", 0, "libvisual audio visualisations"); #ifdef LIBVISUAL_PLUGINSBASEDIR gst_plugin_add_dependency_simple (plugin, "HOME/.libvisual/actor", LIBVISUAL_PLUGINSBASEDIR "/actor", NULL, GST_PLUGIN_DEPENDENCY_FLAG_NONE); #endif visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_LOW); visual_log_set_info_handler (libvisual_log_handler, (void *) GST_LEVEL_INFO); visual_log_set_warning_handler (libvisual_log_handler, (void *) GST_LEVEL_WARNING); visual_log_set_critical_handler (libvisual_log_handler, (void *) GST_LEVEL_ERROR); visual_log_set_error_handler (libvisual_log_handler, (void *) GST_LEVEL_ERROR); if (!visual_is_initialized ()) if (visual_init (NULL, NULL) != 0) return FALSE; list = visual_actor_get_list (); #if !defined(VISUAL_API_VERSION) count = visual_list_count (list); #elif VISUAL_API_VERSION >= 4000 && VISUAL_API_VERSION < 5000 count = visual_collection_size (VISUAL_COLLECTION (list)); #endif for (i = 0; i < count; i++) { VisPluginRef *ref = visual_list_get (list, i); VisPluginData *visplugin = NULL; gboolean skip = FALSE; GType type; gchar *name; GTypeInfo info = { sizeof (GstVisualClass), NULL, NULL, gst_visual_class_init, NULL, ref, sizeof (GstVisual), 0, NULL }; visplugin = visual_plugin_load (ref); if (ref->info->plugname == NULL) continue; /* Blacklist some plugins */ if (strcmp (ref->info->plugname, "gstreamer") == 0 || strcmp (ref->info->plugname, "gdkpixbuf") == 0) { skip = TRUE; } else { /* Ignore plugins that only support GL output for now */ skip = gst_visual_actor_plugin_is_gl (visplugin->info->plugin, visplugin->info->plugname); } visual_plugin_unload (visplugin); if (!skip) { name = g_strdup_printf ("GstVisual%s", ref->info->plugname); make_valid_name (name); type = g_type_register_static (GST_TYPE_VISUAL, name, &info, 0); g_free (name); name = g_strdup_printf ("libvisual_%s", ref->info->plugname); make_valid_name (name); if (!gst_element_register (plugin, name, GST_RANK_NONE, type)) { g_free (name); return FALSE; } g_free (name); } } return TRUE; }
gboolean kms_dispatcher_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, PLUGIN_NAME, GST_RANK_NONE, KMS_TYPE_DISPATCHER); }
static gboolean plugin_init(GstPlugin *plugin) { if (!gst_element_register(plugin, "netfilter", GST_RANK_NONE, gst_netfilter_get_type())) return FALSE; return TRUE; }
static GstFlowReturn gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer) { #ifdef GSTREAMER_LITE GstSpectrum *spectrum = GST_SPECTRUM (trans); GstRingBufferSpec *format; GstSpectrumChannel *cd; GstSpectrumInputData input_data; guint rate, channels, output_channels, c, width, bands, nfft, input_pos, size, frame_size; guint fft_todo, msg_todo, block_size; gfloat max_value; gfloat *input; gboolean have_full_interval; const guint8 *data; GstMessage *m; if (!spectrum->post_messages) return GST_FLOW_OK; format = &GST_AUDIO_FILTER (spectrum)->format; rate = format->rate; channels = format->channels; output_channels = spectrum->multi_channel ? channels : 1; width = format->width / 8; max_value = (1UL << (format->depth - 1)) - 1; bands = spectrum->bands; nfft = 2 * bands - 2; data = GST_BUFFER_DATA (buffer); size = GST_BUFFER_SIZE (buffer); frame_size = width * channels; #else // GSTREAMER_LITE GstSpectrum *spectrum = GST_SPECTRUM (trans); GstRingBufferSpec *format = &GST_AUDIO_FILTER (spectrum)->format; guint rate = format->rate; guint channels = format->channels; guint output_channels = spectrum->multi_channel ? channels : 1; guint c; guint width = format->width / 8; gfloat max_value = (1UL << (format->depth - 1)) - 1; guint bands = spectrum->bands; guint nfft = 2 * bands - 2; guint input_pos; gfloat *input; const guint8 *data = GST_BUFFER_DATA (buffer); guint size = GST_BUFFER_SIZE (buffer); guint frame_size = width * channels; guint fft_todo, msg_todo, block_size; gboolean have_full_interval; GstSpectrumChannel *cd; GstSpectrumInputData input_data; #endif // GSTREAMER_LITE GST_LOG_OBJECT (spectrum, "input size: %d bytes", GST_BUFFER_SIZE (buffer)); if (GST_BUFFER_IS_DISCONT (buffer)) { GST_DEBUG_OBJECT (spectrum, "Discontinuity detected -- flushing"); gst_spectrum_flush (spectrum); } /* If we don't have a FFT context yet (or it was reset due to parameter * changes) get one and allocate memory for everything */ if (spectrum->channel_data == NULL) { GST_DEBUG_OBJECT (spectrum, "allocating for bands %u", bands); gst_spectrum_alloc_channel_data (spectrum); /* number of sample frames we process before posting a message * interval is in ns */ spectrum->frames_per_interval = gst_util_uint64_scale (spectrum->interval, rate, GST_SECOND); spectrum->frames_todo = spectrum->frames_per_interval; /* rounding error for frames_per_interval in ns, * aggregated it in accumulated_error */ spectrum->error_per_interval = (spectrum->interval * rate) % GST_SECOND; if (spectrum->frames_per_interval == 0) spectrum->frames_per_interval = 1; GST_INFO_OBJECT (spectrum, "interval %" GST_TIME_FORMAT ", fpi %" G_GUINT64_FORMAT ", error %" GST_TIME_FORMAT, GST_TIME_ARGS (spectrum->interval), spectrum->frames_per_interval, GST_TIME_ARGS (spectrum->error_per_interval)); spectrum->input_pos = 0; gst_spectrum_flush (spectrum); } if (spectrum->num_frames == 0) spectrum->message_ts = GST_BUFFER_TIMESTAMP (buffer); input_pos = spectrum->input_pos; input_data = spectrum->input_data; while (size >= frame_size) { /* run input_data for a chunk of data */ fft_todo = nfft - (spectrum->num_frames % nfft); msg_todo = spectrum->frames_todo - spectrum->num_frames; GST_LOG_OBJECT (spectrum, "message frames todo: %u, fft frames todo: %u, input frames %u", msg_todo, fft_todo, (size / frame_size)); block_size = msg_todo; if (block_size > (size / frame_size)) block_size = (size / frame_size); if (block_size > fft_todo) block_size = fft_todo; for (c = 0; c < output_channels; c++) { cd = &spectrum->channel_data[c]; input = cd->input; /* Move the current frames into our ringbuffers */ input_data (data + c * width, input, block_size, channels, max_value, input_pos, nfft); } data += block_size * frame_size; size -= block_size * frame_size; input_pos = (input_pos + block_size) % nfft; spectrum->num_frames += block_size; have_full_interval = (spectrum->num_frames == spectrum->frames_todo); GST_LOG_OBJECT (spectrum, "size: %u, do-fft = %d, do-message = %d", size, (spectrum->num_frames % nfft == 0), have_full_interval); /* If we have enough frames for an FFT or we have all frames required for * the interval and we haven't run a FFT, then run an FFT */ if ((spectrum->num_frames % nfft == 0) || (have_full_interval && !spectrum->num_fft)) { for (c = 0; c < output_channels; c++) { cd = &spectrum->channel_data[c]; gst_spectrum_run_fft (spectrum, cd, input_pos); } spectrum->num_fft++; } /* Do we have the FFTs for one interval? */ if (have_full_interval) { GST_DEBUG_OBJECT (spectrum, "nfft: %u frames: %" G_GUINT64_FORMAT " fpi: %" G_GUINT64_FORMAT " error: %" GST_TIME_FORMAT, nfft, spectrum->num_frames, spectrum->frames_per_interval, GST_TIME_ARGS (spectrum->accumulated_error)); spectrum->frames_todo = spectrum->frames_per_interval; if (spectrum->accumulated_error >= GST_SECOND) { spectrum->accumulated_error -= GST_SECOND; spectrum->frames_todo++; } spectrum->accumulated_error += spectrum->error_per_interval; #ifndef GSTREAMER_LITE if (spectrum->post_messages) { GstMessage *m; #endif // GSTREAMER_LITE for (c = 0; c < output_channels; c++) { cd = &spectrum->channel_data[c]; gst_spectrum_prepare_message_data (spectrum, cd); } m = gst_spectrum_message_new (spectrum, spectrum->message_ts, spectrum->interval); gst_element_post_message (GST_ELEMENT (spectrum), m); #ifndef GSTREAMER_LITE } #endif // GSTREAMER_LITE if (GST_CLOCK_TIME_IS_VALID (spectrum->message_ts)) spectrum->message_ts += gst_util_uint64_scale (spectrum->num_frames, GST_SECOND, rate); #ifdef GSTREAMER_LITE for (c = 0; c < spectrum->num_channels; c++) { #else // GSTREAMER_LITE for (c = 0; c < channels; c++) { #endif // GSTREAMER_LITE cd = &spectrum->channel_data[c]; gst_spectrum_reset_message_data (spectrum, cd); } spectrum->num_frames = 0; spectrum->num_fft = 0; } } spectrum->input_pos = input_pos; g_assert (size == 0); return GST_FLOW_OK; } #ifdef GSTREAMER_LITE gboolean plugin_init_spectrum (GstPlugin * plugin) #else // GSTREAMER_LITE static gboolean plugin_init (GstPlugin * plugin) #endif // GSTREAMER_LITE { return gst_element_register (plugin, "spectrum", GST_RANK_NONE, GST_TYPE_SPECTRUM); } #ifndef GSTREAMER_LITE GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, "spectrum", "Run an FFT on the audio signal, output spectrum data", plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
gboolean gst_rtp_L16_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpL16depay", GST_RANK_SECONDARY, GST_TYPE_RTP_L16_DEPAY); }
gboolean gst_rtp_vp8_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpvp8depay", GST_RANK_MARGINAL, GST_TYPE_RTP_VP8_DEPAY); }
gboolean gst_ffmpegscale_register (GstPlugin * plugin) { return gst_element_register (plugin, "ffvideoscale", GST_RANK_NONE, GST_TYPE_FFMPEGSCALE); }
gboolean kms_show_data_plugin_init (GstPlugin *plugin) { return gst_element_register (plugin, PLUGIN_NAME, GST_RANK_NONE, KMS_TYPE_SHOW_DATA); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "spectrum", GST_RANK_NONE, GST_TYPE_SPECTRUM); }
gboolean gst_rtp_qcelp_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpqcelpdepay", GST_RANK_SECONDARY, GST_TYPE_RTP_QCELP_DEPAY); }
gboolean gst_rtp_mp2t_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpmp2tdepay", GST_RANK_MARGINAL, GST_TYPE_RTP_MP2T_DEPAY); }
gboolean gst_qt_moov_recover_register (GstPlugin * plugin) { return gst_element_register (plugin, "qtmoovrecover", GST_RANK_NONE, GST_TYPE_QT_MOOV_RECOVER); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "testmpegaudioparse", GST_RANK_NONE, test_mpeg_audio_parse_get_type ()); }
gboolean gst_dtmf_src_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "dtmfsrc", GST_RANK_NONE, GST_TYPE_DTMF_SRC); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "audioflingersink", GST_RANK_PRIMARY, GST_TYPE_AUDIOFLINGERSINK); }
static gboolean plugin_init(GstPlugin *plugin) { return gst_element_register(plugin, XING_MP3_ENCODER_NAME, GST_RANK_NONE, XING_TYPE_MP3_ENCODER); }
gboolean gst_rtp_j2k_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpj2kdepay", GST_RANK_MARGINAL, GST_TYPE_RTP_J2K_DEPAY); }
gboolean kms_selectable_mixer_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, PLUGIN_NAME, GST_RANK_NONE, KMS_TYPE_SELECTABLE_MIXER); }
gboolean gst_rtp_sv3v_depay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpsv3vdepay", GST_RANK_NONE, GST_TYPE_RTP_SV3V_DEPAY); }
gboolean gst_rtp_mp4v_pay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpmp4vpay", GST_RANK_NONE, GST_TYPE_RTP_MP4V_PAY); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "dataurisrc", GST_RANK_PRIMARY, GST_TYPE_DATA_URI_SRC); }
gboolean gst_openni2src_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "openni2src", GST_RANK_NONE, GST_TYPE_OPENNI2_SRC); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "wininetsrc", GST_RANK_NONE, GST_TYPE_WIN_INET_SRC); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "wavenc", GST_RANK_PRIMARY, GST_TYPE_WAVENC); }
gboolean gst_rtp_pcma_pay_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtppcmapay", GST_RANK_NONE, GST_TYPE_RTP_PCMA_PAY); }
gboolean gst_siren_enc_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "sirenenc", GST_RANK_MARGINAL, GST_TYPE_SIREN_ENC); }
static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "amrwbdec", GST_RANK_PRIMARY, GST_TYPE_AMRWBDEC); }
static gboolean afcsrc_init(GstPlugin* afcsrc) { return gst_element_register(afcsrc, "afcsrc", GST_RANK_PRIMARY, GST_TYPE_AFCSRC); }