/* GStreamer * Copyright (C) 2017 FIXME * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Suite 500, * Boston, MA 02110-1335, USA. */ /** * SECTION:element-gstbeatdetector * * The beatdetector element does FIXME stuff. * * * Example launch line * |[ * gst-launch -v fakesrc ! beatdetector ! FIXME ! fakesink * ]| * FIXME Describe what the pipeline does. * */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include "gstbeatdetector.h" GST_DEBUG_CATEGORY_STATIC (gst_beatdetector_debug_category); #define GST_CAT_DEFAULT gst_beatdetector_debug_category /* prototypes */ static GstCaps *gst_beatdetector_transform_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps); static void gst_beatdetector_fixate_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps); static gboolean gst_beatdetector_transform_size (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, guint size, GstCaps * othercaps, guint * othersize); static gboolean gst_beatdetector_get_unit_size (GstBaseTransform * trans, GstCaps * caps, guint * size); static gboolean gst_beatdetector_set_caps (GstBaseTransform * trans, GstCaps * incaps, GstCaps * outcaps); static gboolean gst_beatdetector_start (GstBaseTransform * trans); static gboolean gst_beatdetector_stop (GstBaseTransform * trans); static gboolean gst_beatdetector_event (GstBaseTransform * trans, GstEvent * event); static GstFlowReturn gst_beatdetector_transform (GstBaseTransform * trans, GstBuffer * inbuf, GstBuffer * outbuf); static GstFlowReturn gst_beatdetector_transform_ip (GstBaseTransform * trans, GstBuffer * buf); static GstFlowReturn gst_beatdetector_prepare_output_buffer (GstBaseTransform * trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf); static gboolean gst_beatdetector_src_event (GstBaseTransform * trans, GstEvent * event); static void gst_beatdetector_before_transform (GstBaseTransform * trans, GstBuffer * buffer); enum { PROP_0 }; /* pad templates */ /* class initialization */ #define DEBUG_INIT(bla) \ GST_DEBUG_CATEGORY_INIT (gst_beatdetector_debug_category, "beatdetector", 0, \ "debug category for beatdetector element"); GST_BOILERPLATE_FULL (GstBeatDetector, gst_beatdetector, GstBaseTransform, GST_TYPE_BASE_TRANSFORM, DEBUG_INIT); static void gst_beatdetector_base_init (gpointer g_class) { GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); gst_element_class_set_details_simple (element_class, "FIXME Long name", "Generic", "FIXME Description", "FIXME "); } static void gst_beatdetector_class_init (GstBeatDetectorClass * klass) { GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); base_transform_class->transform_caps = GST_DEBUG_FUNCPTR (gst_beatdetector_transform_caps); base_transform_class->fixate_caps = GST_DEBUG_FUNCPTR (gst_beatdetector_fixate_caps); base_transform_class->transform_size = GST_DEBUG_FUNCPTR (gst_beatdetector_transform_size); base_transform_class->get_unit_size = GST_DEBUG_FUNCPTR (gst_beatdetector_get_unit_size); base_transform_class->set_caps = GST_DEBUG_FUNCPTR (gst_beatdetector_set_caps); base_transform_class->start = GST_DEBUG_FUNCPTR (gst_beatdetector_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_beatdetector_stop); base_transform_class->event = GST_DEBUG_FUNCPTR (gst_beatdetector_event); base_transform_class->transform = GST_DEBUG_FUNCPTR (gst_beatdetector_transform); base_transform_class->transform_ip = GST_DEBUG_FUNCPTR (gst_beatdetector_transform_ip); base_transform_class->prepare_output_buffer = GST_DEBUG_FUNCPTR (gst_beatdetector_prepare_output_buffer); base_transform_class->src_event = GST_DEBUG_FUNCPTR (gst_beatdetector_src_event); base_transform_class->before_transform = GST_DEBUG_FUNCPTR (gst_beatdetector_before_transform); } static void gst_beatdetector_init (GstBeatDetector * beatdetector, GstBeatDetectorClass * beatdetector_class) { } static GstCaps * gst_beatdetector_transform_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps) { return NULL; } static void gst_beatdetector_fixate_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps) { } static gboolean gst_beatdetector_transform_size (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, guint size, GstCaps * othercaps, guint * othersize) { return FALSE; } static gboolean gst_beatdetector_get_unit_size (GstBaseTransform * trans, GstCaps * caps, guint * size) { return FALSE; } static gboolean gst_beatdetector_set_caps (GstBaseTransform * trans, GstCaps * incaps, GstCaps * outcaps) { return FALSE; } static gboolean gst_beatdetector_start (GstBaseTransform * trans) { return FALSE; } static gboolean gst_beatdetector_stop (GstBaseTransform * trans) { return FALSE; } static gboolean gst_beatdetector_event (GstBaseTransform * trans, GstEvent * event) { return FALSE; } static GstFlowReturn gst_beatdetector_transform (GstBaseTransform * trans, GstBuffer * inbuf, GstBuffer * outbuf) { return GST_FLOW_ERROR; } static GstFlowReturn gst_beatdetector_transform_ip (GstBaseTransform * trans, GstBuffer * buf) { return GST_FLOW_ERROR; } static GstFlowReturn gst_beatdetector_prepare_output_buffer (GstBaseTransform * trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf) { return GST_FLOW_ERROR; } static gboolean gst_beatdetector_src_event (GstBaseTransform * trans, GstEvent * event) { return FALSE; } static void gst_beatdetector_before_transform (GstBaseTransform * trans, GstBuffer * buffer) { } static gboolean plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "beatdetector", GST_RANK_NONE, GST_TYPE_BEATDETECTOR); } #ifndef VERSION #define VERSION "0.0.FIXME" #endif #ifndef PACKAGE #define PACKAGE "FIXME_package" #endif #ifndef PACKAGE_NAME #define PACKAGE_NAME "FIXME_package_name" #endif #ifndef GST_PACKAGE_ORIGIN #define GST_PACKAGE_ORIGIN "http://FIXME.org/" #endif GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, "beatdetector", "FIXME plugin description", plugin_init, VERSION, "LGPL", PACKAGE_NAME, GST_PACKAGE_ORIGIN)