00001
00002
00003 #ifndef _GSTREAMERMM_BASEAUDIOSRC_H
00004 #define _GSTREAMERMM_BASEAUDIOSRC_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <gst/audio/gstringbuffer.h>
00029 #include <gstreamermm/pushsrc.h>
00030
00031
00032 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00033 typedef struct _GstBaseAudioSrc GstBaseAudioSrc;
00034 typedef struct _GstBaseAudioSrcClass GstBaseAudioSrcClass;
00035 #endif
00036
00037
00038 namespace Gst
00039 { class BaseAudioSrc_Class; }
00040 namespace Gst
00041 {
00042
00043 class RingBuffer;
00044
00050 enum BaseAudioSrcSlaveMethod
00051 {
00052 BASE_AUDIO_SRC_SLAVE_RESAMPLE,
00053 BASE_AUDIO_SRC_SLAVE_RETIMESTAMP,
00054 BASE_AUDIO_SRC_SLAVE_SKEW,
00055 BASE_AUDIO_SRC_SLAVE_NONE
00056 };
00057
00058 }
00059
00060
00061 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00062 namespace Glib
00063 {
00064
00065 template <>
00066 class Value<Gst::BaseAudioSrcSlaveMethod> : public Glib::Value_Enum<Gst::BaseAudioSrcSlaveMethod>
00067 {
00068 public:
00069 static GType value_type() G_GNUC_CONST;
00070 };
00071
00072 }
00073 #endif
00074
00075
00076 namespace Gst
00077 {
00078
00079
00090 class BaseAudioSrc : public Gst::PushSrc
00091 {
00092
00093 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00094
00095 public:
00096 typedef BaseAudioSrc CppObjectType;
00097 typedef BaseAudioSrc_Class CppClassType;
00098 typedef GstBaseAudioSrc BaseObjectType;
00099 typedef GstBaseAudioSrcClass BaseClassType;
00100
00101 private: friend class BaseAudioSrc_Class;
00102 static CppClassType baseaudiosrc_class_;
00103
00104 private:
00105
00106 BaseAudioSrc(const BaseAudioSrc&);
00107 BaseAudioSrc& operator=(const BaseAudioSrc&);
00108
00109 protected:
00110 explicit BaseAudioSrc(const Glib::ConstructParams& construct_params);
00111 explicit BaseAudioSrc(GstBaseAudioSrc* castitem);
00112
00113 #endif
00114
00115 public:
00116 virtual ~BaseAudioSrc();
00117
00118 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00119 static GType get_type() G_GNUC_CONST;
00120
00121
00122 static GType get_base_type() G_GNUC_CONST;
00123 #endif
00124
00126 GstBaseAudioSrc* gobj() { return reinterpret_cast<GstBaseAudioSrc*>(gobject_); }
00127
00129 const GstBaseAudioSrc* gobj() const { return reinterpret_cast<GstBaseAudioSrc*>(gobject_); }
00130
00132 GstBaseAudioSrc* gobj_copy();
00133
00134 private:
00135
00136
00137 public:
00140 Glib::RefPtr<Gst::Clock> get_clock();
00141 Glib::RefPtr<const Gst::Clock> get_clock() const;
00142
00143
00149 Glib::RefPtr<Gst::RingBuffer> create_ring_buffer();
00150
00151
00159 void set_provide_clock(bool provide);
00160
00167 bool get_provide_clock() const;
00168
00174 void set_slave_method(Gst::BaseAudioSrcSlaveMethod method);
00175
00181 Gst::BaseAudioSrcSlaveMethod get_slave_method() const;
00182
00183 #ifdef GLIBMM_PROPERTIES_ENABLED
00184
00190 Glib::PropertyProxy_ReadOnly<gint64> property_actual_buffer_time() const;
00191 #endif //#GLIBMM_PROPERTIES_ENABLED
00192
00193
00194 #ifdef GLIBMM_PROPERTIES_ENABLED
00195
00201 Glib::PropertyProxy_ReadOnly<gint64> property_actual_latency_time() const;
00202 #endif //#GLIBMM_PROPERTIES_ENABLED
00203
00204
00205 #ifdef GLIBMM_PROPERTIES_ENABLED
00206
00212 Glib::PropertyProxy<gint64> property_buffer_time() ;
00213 #endif //#GLIBMM_PROPERTIES_ENABLED
00214
00215 #ifdef GLIBMM_PROPERTIES_ENABLED
00216
00222 Glib::PropertyProxy_ReadOnly<gint64> property_buffer_time() const;
00223 #endif //#GLIBMM_PROPERTIES_ENABLED
00224
00225 #ifdef GLIBMM_PROPERTIES_ENABLED
00226
00232 Glib::PropertyProxy<gint64> property_latency_time() ;
00233 #endif //#GLIBMM_PROPERTIES_ENABLED
00234
00235 #ifdef GLIBMM_PROPERTIES_ENABLED
00236
00242 Glib::PropertyProxy_ReadOnly<gint64> property_latency_time() const;
00243 #endif //#GLIBMM_PROPERTIES_ENABLED
00244
00245 #ifdef GLIBMM_PROPERTIES_ENABLED
00246
00252 Glib::PropertyProxy<bool> property_provide_clock() ;
00253 #endif //#GLIBMM_PROPERTIES_ENABLED
00254
00255 #ifdef GLIBMM_PROPERTIES_ENABLED
00256
00262 Glib::PropertyProxy_ReadOnly<bool> property_provide_clock() const;
00263 #endif //#GLIBMM_PROPERTIES_ENABLED
00264
00265
00266 #ifdef GLIBMM_PROPERTIES_ENABLED
00267
00273 Glib::PropertyProxy<BaseAudioSrcSlaveMethod> property_slave_method() ;
00274 #endif //#GLIBMM_PROPERTIES_ENABLED
00275
00276 #ifdef GLIBMM_PROPERTIES_ENABLED
00277
00283 Glib::PropertyProxy_ReadOnly<BaseAudioSrcSlaveMethod> property_slave_method() const;
00284 #endif //#GLIBMM_PROPERTIES_ENABLED
00285
00286
00289 #ifdef GLIBMM_VFUNCS_ENABLED
00290 virtual Glib::RefPtr<Gst::RingBuffer> create_ring_buffer_vfunc();
00291 #endif //GLIBMM_VFUNCS_ENABLED
00292
00293
00294 public:
00295
00296 public:
00297
00298 #ifdef GLIBMM_VFUNCS_ENABLED
00299 #endif //GLIBMM_VFUNCS_ENABLED
00300
00301 protected:
00302
00303 #ifdef GLIBMM_VFUNCS_ENABLED
00304 #endif //GLIBMM_VFUNCS_ENABLED
00305
00306
00307 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00308 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00309
00310
00311 };
00312
00313 }
00314
00315
00316 namespace Glib
00317 {
00326 Glib::RefPtr<Gst::BaseAudioSrc> wrap(GstBaseAudioSrc* object, bool take_copy = false);
00327 }
00328
00329
00330 #endif
00331