diff options
Diffstat (limited to 'ext/musicbrainz')
-rw-r--r-- | ext/musicbrainz/gsttrm.c | 230 | ||||
-rw-r--r-- | ext/musicbrainz/gsttrm.h | 59 |
2 files changed, 144 insertions, 145 deletions
diff --git a/ext/musicbrainz/gsttrm.c b/ext/musicbrainz/gsttrm.c index d70f0b6e..484be50f 100644 --- a/ext/musicbrainz/gsttrm.c +++ b/ext/musicbrainz/gsttrm.c @@ -27,62 +27,58 @@ #include "gsttrm.h" /* musicbrainz signals and args */ -enum { +enum +{ SIGNAL_SIGNATURE_AVAILABLE, LAST_SIGNAL }; -enum { +enum +{ ARG_0, ARG_SIGNATURE, ARG_ASCII_SIGNATURE }; -GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ( - "src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (bool) TRUE, " - "width = (int) { 8, 16 }, " - "depth = (int) { 8, 16 }, " - "rate = (int) [ 8000, 96000 ], " - "channels = (int) [ 1, 2 ]" - ) -); - - -GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ( - "sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (bool) TRUE, " - "width = (int) { 8, 16 }, " - "depth = (int) { 8, 16 }, " - "rate = (int) [ 8000, 96000 ], " - "channels = (int) [ 1, 2 ]" - ) -); - - -static void gst_musicbrainz_class_init (GstMusicBrainzClass *klass); -static void gst_musicbrainz_base_init (GstMusicBrainzClass *klass); -static void gst_musicbrainz_init (GstMusicBrainz *musicbrainz); - -static void gst_musicbrainz_chain (GstPad *pad, GstData *data); - -static void gst_musicbrainz_set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec); -static void gst_musicbrainz_get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec); - -static GstElementStateReturn - gst_musicbrainz_change_state (GstElement *element); +GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (bool) TRUE, " + "width = (int) { 8, 16 }, " + "depth = (int) { 8, 16 }, " + "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]") + ); + + +GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (bool) TRUE, " + "width = (int) { 8, 16 }, " + "depth = (int) { 8, 16 }, " + "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]") + ); + + +static void gst_musicbrainz_class_init (GstMusicBrainzClass * klass); +static void gst_musicbrainz_base_init (GstMusicBrainzClass * klass); +static void gst_musicbrainz_init (GstMusicBrainz * musicbrainz); + +static void gst_musicbrainz_chain (GstPad * pad, GstData * data); + +static void gst_musicbrainz_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_musicbrainz_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + +static GstElementStateReturn +gst_musicbrainz_change_state (GstElement * element); static GstElementClass *parent_class = NULL; @@ -96,26 +92,25 @@ gst_musicbrainz_get_type (void) if (!musicbrainz_type) { static const GTypeInfo musicbrainz_info = { - sizeof(GstMusicBrainzClass), + sizeof (GstMusicBrainzClass), (GBaseInitFunc) gst_musicbrainz_base_init, NULL, (GClassInitFunc) gst_musicbrainz_class_init, NULL, NULL, - sizeof(GstMusicBrainz), + sizeof (GstMusicBrainz), 0, - (GInstanceInitFunc)gst_musicbrainz_init, + (GInstanceInitFunc) gst_musicbrainz_init, }; - musicbrainz_type = g_type_register_static (GST_TYPE_ELEMENT, - "GstMusicBrainz", - &musicbrainz_info, 0); + musicbrainz_type = g_type_register_static (GST_TYPE_ELEMENT, + "GstMusicBrainz", &musicbrainz_info, 0); } return musicbrainz_type; } static void -gst_musicbrainz_base_init (GstMusicBrainzClass *klass) +gst_musicbrainz_base_init (GstMusicBrainzClass * klass) { GstElementDetails gst_musicbrainz_details = { "Compute TRM Id", @@ -126,9 +121,9 @@ gst_musicbrainz_base_init (GstMusicBrainzClass *klass) GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&src_template)); + gst_static_pad_template_get (&src_template)); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&sink_template)); + gst_static_pad_template_get (&sink_template)); gst_element_class_set_details (element_class, &gst_musicbrainz_details); } @@ -136,44 +131,45 @@ gst_musicbrainz_base_init (GstMusicBrainzClass *klass) static void -gst_musicbrainz_class_init (GstMusicBrainzClass *klass) +gst_musicbrainz_class_init (GstMusicBrainzClass * klass) { GObjectClass *gobject_class; GstElementClass *gstelement_class; - gobject_class = (GObjectClass*)klass; - gstelement_class = (GstElementClass*)klass; + gobject_class = (GObjectClass *) klass; + gstelement_class = (GstElementClass *) klass; parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SIGNATURE, - g_param_spec_string ("signature","signature","signature", - NULL, G_PARAM_READABLE)); - g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ASCII_SIGNATURE, - g_param_spec_string ("ascii_signature","ascii_signature","ascii_signature", - NULL, G_PARAM_READABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SIGNATURE, + g_param_spec_string ("signature", "signature", "signature", + NULL, G_PARAM_READABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ASCII_SIGNATURE, + g_param_spec_string ("ascii_signature", "ascii_signature", + "ascii_signature", NULL, G_PARAM_READABLE)); gobject_class->set_property = gst_musicbrainz_set_property; gobject_class->get_property = gst_musicbrainz_get_property; gst_musicbrainz_signals[SIGNAL_SIGNATURE_AVAILABLE] = - g_signal_new ("signature-available", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GstMusicBrainzClass, signature_available), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("signature-available", G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstMusicBrainzClass, + signature_available), NULL, NULL, g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); gstelement_class->change_state = gst_musicbrainz_change_state; } static GstPadLinkReturn -gst_musicbrainz_sinkconnect (GstPad *pad, const GstCaps *caps) +gst_musicbrainz_sinkconnect (GstPad * pad, const GstCaps * caps) { GstMusicBrainz *musicbrainz; GstStructure *structure; const gchar *mimetype; gint width; - musicbrainz = GST_MUSICBRAINZ (gst_pad_get_parent (pad)); - + musicbrainz = GST_MUSICBRAINZ (gst_pad_get_parent (pad)); + musicbrainz->caps = caps; structure = gst_caps_get_structure (caps, 0); @@ -181,35 +177,38 @@ gst_musicbrainz_sinkconnect (GstPad *pad, const GstCaps *caps) if (!gst_structure_get_int (structure, "depth", &musicbrainz->depth) || !gst_structure_get_int (structure, "width", &width)) - return GST_PAD_LINK_REFUSED; + return GST_PAD_LINK_REFUSED; if (musicbrainz->depth != width) - return GST_PAD_LINK_REFUSED; + return GST_PAD_LINK_REFUSED; if (!gst_structure_get_int (structure, "channels", &musicbrainz->channels)) - return GST_PAD_LINK_REFUSED; + return GST_PAD_LINK_REFUSED; if (!gst_structure_get_int (structure, "rate", &musicbrainz->rate)) - return GST_PAD_LINK_REFUSED; + return GST_PAD_LINK_REFUSED; - trm_SetPCMDataInfo (musicbrainz->trm, musicbrainz->rate, musicbrainz->channels, musicbrainz->depth); - musicbrainz->linked= TRUE; + trm_SetPCMDataInfo (musicbrainz->trm, musicbrainz->rate, + musicbrainz->channels, musicbrainz->depth); + musicbrainz->linked = TRUE; - return GST_PAD_LINK_OK; + return GST_PAD_LINK_OK; } static void -gst_musicbrainz_init (GstMusicBrainz *musicbrainz) +gst_musicbrainz_init (GstMusicBrainz * musicbrainz) { - musicbrainz->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&sink_template), "sink"); + musicbrainz->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get (&sink_template), + "sink"); gst_element_add_pad (GST_ELEMENT (musicbrainz), musicbrainz->sinkpad); gst_pad_set_chain_function (musicbrainz->sinkpad, gst_musicbrainz_chain); gst_pad_set_link_function (musicbrainz->sinkpad, gst_musicbrainz_sinkconnect); - musicbrainz->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&src_template), "src"); + musicbrainz->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get (&src_template), + "src"); gst_element_add_pad (GST_ELEMENT (musicbrainz), musicbrainz->srcpad); musicbrainz->trm = NULL; @@ -219,11 +218,11 @@ gst_musicbrainz_init (GstMusicBrainz *musicbrainz) musicbrainz->signature_available = FALSE; GST_FLAG_SET (musicbrainz, GST_ELEMENT_EVENT_AWARE); - /*GST_FLAG_SET(musicbrainz, GST_ELEMENT_THREAD_SUGGESTED);*/ + /*GST_FLAG_SET(musicbrainz, GST_ELEMENT_THREAD_SUGGESTED); */ } static void -gst_trm_handle_event (GstPad *pad, GstData *data) +gst_trm_handle_event (GstPad * pad, GstData * data) { GstEvent *event = GST_EVENT (data); @@ -231,7 +230,7 @@ gst_trm_handle_event (GstPad *pad, GstData *data) } static void -gst_musicbrainz_chain (GstPad *pad, GstData *data) +gst_musicbrainz_chain (GstPad * pad, GstData * data) { GstMusicBrainz *musicbrainz; GstBuffer *buf; @@ -243,33 +242,35 @@ gst_musicbrainz_chain (GstPad *pad, GstData *data) musicbrainz = GST_MUSICBRAINZ (gst_pad_get_parent (pad)); - if (GST_IS_EVENT (data)) - { + if (GST_IS_EVENT (data)) { gst_trm_handle_event (pad, data); return; } buf = GST_BUFFER (data); - + if (musicbrainz->linked && !musicbrainz->data_available) - if (gst_pad_query (gst_pad_get_peer (pad), GST_QUERY_TOTAL, &format, &nanos)) - { + if (gst_pad_query (gst_pad_get_peer (pad), GST_QUERY_TOTAL, &format, + &nanos)) { musicbrainz->total_time = nanos / GST_SECOND; - trm_SetSongLength(musicbrainz->trm, musicbrainz->total_time); + trm_SetSongLength (musicbrainz->trm, musicbrainz->total_time); musicbrainz->data_available = TRUE; gst_pad_try_set_caps (musicbrainz->srcpad, musicbrainz->caps); } - if (!musicbrainz->signature_available && trm_GenerateSignature (musicbrainz->trm, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf))) - { + if (!musicbrainz->signature_available + && trm_GenerateSignature (musicbrainz->trm, GST_BUFFER_DATA (buf), + GST_BUFFER_SIZE (buf))) { GST_DEBUG ("Signature"); - trm_FinalizeSignature(musicbrainz->trm, musicbrainz->signature, NULL); - trm_ConvertSigToASCII (musicbrainz->trm, musicbrainz->signature, musicbrainz->ascii_signature); -g_print ("Signature : %s\n", musicbrainz->ascii_signature); + trm_FinalizeSignature (musicbrainz->trm, musicbrainz->signature, NULL); + trm_ConvertSigToASCII (musicbrainz->trm, musicbrainz->signature, + musicbrainz->ascii_signature); + g_print ("Signature : %s\n", musicbrainz->ascii_signature); musicbrainz->signature_available = TRUE; - g_signal_emit (G_OBJECT(musicbrainz),gst_musicbrainz_signals[SIGNAL_SIGNATURE_AVAILABLE], 0); + g_signal_emit (G_OBJECT (musicbrainz), + gst_musicbrainz_signals[SIGNAL_SIGNATURE_AVAILABLE], 0); GST_DEBUG ("Signature : %s", musicbrainz->ascii_signature); @@ -281,7 +282,8 @@ g_print ("Signature : %s\n", musicbrainz->ascii_signature); static void -gst_musicbrainz_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +gst_musicbrainz_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstMusicBrainz *musicbrainz; @@ -302,23 +304,24 @@ gst_musicbrainz_set_property (GObject *object, guint prop_id, const GValue *valu } static void -gst_musicbrainz_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +gst_musicbrainz_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstMusicBrainz *musicbrainz; /* it's not null if we got it, but it might not be ours */ - musicbrainz = GST_MUSICBRAINZ(object); + musicbrainz = GST_MUSICBRAINZ (object); switch (prop_id) { - case ARG_SIGNATURE: { + case ARG_SIGNATURE:{ g_value_set_string (value, musicbrainz->signature); break; } - case ARG_ASCII_SIGNATURE: { + case ARG_ASCII_SIGNATURE:{ g_value_set_string (value, musicbrainz->ascii_signature); break; } - default: { + default:{ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } @@ -327,7 +330,7 @@ gst_musicbrainz_get_property (GObject *object, guint prop_id, GValue *value, GPa static GstElementStateReturn -gst_musicbrainz_change_state (GstElement *element) +gst_musicbrainz_change_state (GstElement * element) { GstMusicBrainz *musicbrainz; @@ -358,22 +361,15 @@ gst_musicbrainz_change_state (GstElement *element) } static gboolean -plugin_init (GstPlugin *plugin) +plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "trm", - GST_RANK_NONE, - GST_TYPE_MUSICBRAINZ); + GST_RANK_NONE, GST_TYPE_MUSICBRAINZ); } -GST_PLUGIN_DEFINE ( - GST_VERSION_MAJOR, - GST_VERSION_MINOR, - "trm", - "A trm signature producer", - plugin_init, - VERSION, - "GPL", - GST_PACKAGE, - GST_ORIGIN -) +GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, + "trm", + "A trm signature producer", + plugin_init, VERSION, "GPL", GST_PACKAGE, GST_ORIGIN) diff --git a/ext/musicbrainz/gsttrm.h b/ext/musicbrainz/gsttrm.h index 6516f94d..717826b7 100644 --- a/ext/musicbrainz/gsttrm.h +++ b/ext/musicbrainz/gsttrm.h @@ -26,8 +26,9 @@ #include <musicbrainz/mb_c.h> #ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +extern "C" +{ +#endif /* __cplusplus */ #define GST_TYPE_MUSICBRAINZ \ @@ -42,41 +43,43 @@ extern "C" { (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MUSICBRAINZ)) -typedef struct _GstMusicBrainz GstMusicBrainz; -typedef struct _GstMusicBrainzClass GstMusicBrainzClass; + typedef struct _GstMusicBrainz GstMusicBrainz; + typedef struct _GstMusicBrainzClass GstMusicBrainzClass; -struct _GstMusicBrainz { - GstElement element; + struct _GstMusicBrainz + { + GstElement element; - GstPad *sinkpad; - GstPad *srcpad; - const GstCaps *caps; + GstPad *sinkpad; + GstPad *srcpad; + const GstCaps *caps; - trm_t trm; - gchar signature[17]; - gchar ascii_signature[37]; + trm_t trm; + gchar signature[17]; + gchar ascii_signature[37]; - guint depth; - guint rate; - guint channels; - gboolean linked; - gboolean data_available; - gboolean signature_available; - guint64 total_time; -}; + guint depth; + guint rate; + guint channels; + gboolean linked; + gboolean data_available; + gboolean signature_available; + guint64 total_time; + }; -struct _GstMusicBrainzClass { - GstElementClass parent_class; + struct _GstMusicBrainzClass + { + GstElementClass parent_class; - /* signals */ - void (*signature_available) (GstElement *element); -}; + /* signals */ + void (*signature_available) (GstElement * element); + }; -GType gst_musicbrainz_get_type(void); + GType gst_musicbrainz_get_type (void); #ifdef __cplusplus } -#endif /* __cplusplus */ +#endif /* __cplusplus */ -#endif /* __GST_MUSICBRAINZE_H__ */ +#endif /* __GST_MUSICBRAINZE_H__ */ |