1 /* GStreamer 2 * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 21 #ifndef __GST_SHOUT2SEND_H__ 22 #define __GST_SHOUT2SEND_H__ 23 24 #include <gst/gst.h> 25 #include <gst/base/gstbasesink.h> 26 #include <shout/shout.h> 27 28 G_BEGIN_DECLS 29 30 /* Protocol type enum */ 31 typedef enum { 32 SHOUT2SEND_PROTOCOL_XAUDIOCAST = 1, 33 SHOUT2SEND_PROTOCOL_ICY, 34 SHOUT2SEND_PROTOCOL_HTTP 35 } GstShout2SendProtocol; 36 37 38 /* Definition of structure storing data for this element. */ 39 typedef struct _GstShout2send GstShout2send; 40 struct _GstShout2send { 41 GstBaseSink parent; 42 43 GstShout2SendProtocol protocol; 44 45 GstPoll *timer; 46 47 shout_t *conn; 48 49 guint64 prev_queuelen; 50 guint64 data_sent; 51 GstClockTime datasent_reset_ts; 52 gboolean stalled; 53 GstClockTime stalled_ts; 54 55 gchar *ip; 56 guint port; 57 gchar *password; 58 gchar *username; 59 gchar *streamname; 60 gchar *description; 61 gchar *genre; 62 gchar *mount; 63 gchar *url; 64 gboolean connected; 65 gboolean ispublic; 66 gchar *songmetadata; 67 gchar *songartist; 68 gchar *songtitle; 69 gint format; 70 guint timeout; 71 72 GstTagList* tags; 73 }; 74 75 76 77 /* Standard definition defining a class for this element. */ 78 typedef struct _GstShout2sendClass GstShout2sendClass; 79 struct _GstShout2sendClass { 80 GstBaseSinkClass parent_class; 81 82 /* signal callbacks */ 83 void (*connection_problem) (GstElement *element,guint errno); 84 }; 85 86 /* Standard macros for defining types for this element. */ 87 #define GST_TYPE_SHOUT2SEND \ 88 (gst_shout2send_get_type()) 89 #define GST_SHOUT2SEND(obj) \ 90 (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SHOUT2SEND,GstShout2send)) 91 #define GST_SHOUT2SEND_CLASS(klass) \ 92 (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SHOUT2SEND,GstShout2sendClass)) 93 #define GST_IS_SHOUT2SEND(obj) \ 94 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SHOUT2SEND)) 95 #define GST_IS_SHOUT2SEND_CLASS(klass) \ 96 (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SHOUT2SEND)) 97 98 /* Standard function returning type information. */ 99 GType gst_shout2send_get_type(void); 100 101 102 G_END_DECLS 103 104 #endif /* __GST_SHOUT2SEND_H__ */ 105