00001
00002
00003 #ifndef _GSTREAMERMM_BASETRANSFORM_H
00004 #define _GSTREAMERMM_BASETRANSFORM_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/base/gstbasetransform.h>
00029 #include <gstreamermm/element.h>
00030 #include <gstreamermm/pad.h>
00031
00032
00033 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00034 typedef struct _GstBaseTransform GstBaseTransform;
00035 typedef struct _GstBaseTransformClass GstBaseTransformClass;
00036 #endif
00037
00038
00039 namespace Gst
00040 { class BaseTransform_Class; }
00041 namespace Gst
00042 {
00045 const Glib::ustring BASE_TRANSFORM_SINK_NAME = GST_BASE_TRANSFORM_SINK_NAME;
00046
00049 const Glib::ustring BASE_TRANSFORM_SRC_NAME = GST_BASE_TRANSFORM_SRC_NAME;
00050
00154 class BaseTransform
00155 : public Element
00156 {
00157
00158 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00159
00160 public:
00161 typedef BaseTransform CppObjectType;
00162 typedef BaseTransform_Class CppClassType;
00163 typedef GstBaseTransform BaseObjectType;
00164 typedef GstBaseTransformClass BaseClassType;
00165
00166 private: friend class BaseTransform_Class;
00167 static CppClassType basetransform_class_;
00168
00169 private:
00170
00171 BaseTransform(const BaseTransform&);
00172 BaseTransform& operator=(const BaseTransform&);
00173
00174 protected:
00175 explicit BaseTransform(const Glib::ConstructParams& construct_params);
00176 explicit BaseTransform(GstBaseTransform* castitem);
00177
00178 #endif
00179
00180 public:
00181 virtual ~BaseTransform();
00182
00183 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00184 static GType get_type() G_GNUC_CONST;
00185 static GType get_base_type() G_GNUC_CONST;
00186 #endif
00187
00189 GstBaseTransform* gobj() { return reinterpret_cast<GstBaseTransform*>(gobject_); }
00190
00192 const GstBaseTransform* gobj() const { return reinterpret_cast<GstBaseTransform*>(gobject_); }
00193
00195 GstBaseTransform* gobj_copy();
00196
00197 private:
00198
00199
00200 public:
00201
00207 bool is_passthrough() const;
00208
00218 void set_passthrough(bool passthrough);
00219
00225 bool is_in_place() const;
00226
00238 void set_in_place(bool in_place);
00239
00247 bool is_qos_enabled() const;
00248
00256 void set_qos_enabled(bool enabled);
00257
00270 void update_qos(double proportion, ClockTimeDiff diff, ClockTime timestamp);
00271
00284 void set_gap_aware(bool gap_aware);
00285
00288 void lock();
00289
00293 void unlock();
00294
00297 Glib::RefPtr<Gst::Pad> get_sink_pad() const;
00298
00301 Glib::RefPtr<Gst::Pad> get_src_pad() const;
00302
00303 #ifdef GLIBMM_PROPERTIES_ENABLED
00304
00310 Glib::PropertyProxy<bool> property_qos() ;
00311 #endif //#GLIBMM_PROPERTIES_ENABLED
00312
00313 #ifdef GLIBMM_PROPERTIES_ENABLED
00314
00320 Glib::PropertyProxy_ReadOnly<bool> property_qos() const;
00321 #endif //#GLIBMM_PROPERTIES_ENABLED
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00336 #ifdef GLIBMM_VFUNCS_ENABLED
00337 virtual Glib::RefPtr<Gst::Caps> transform_caps_vfunc(PadDirection direction, const Glib::RefPtr<Gst::Caps>& caps);
00338 #endif //GLIBMM_VFUNCS_ENABLED
00339
00340
00344 #ifdef GLIBMM_VFUNCS_ENABLED
00345 virtual void fixate_caps_vfunc(PadDirection direction, const Glib::RefPtr<Gst::Caps>& caps, const Glib::RefPtr<Gst::Caps>& othercaps);
00346 #endif //GLIBMM_VFUNCS_ENABLED
00347
00348
00350
00351
00352
00353
00354
00355
00357
00358
00359
00360
00362
00363
00364
00366
00367
00368
00369
00371
00372
00373
00374
00376
00377
00378
00379
00380
00385 #ifdef GLIBMM_VFUNCS_ENABLED
00386 virtual FlowReturn transform_vfunc(const Glib::RefPtr<Gst::Buffer>& inbuf, const Glib::RefPtr<Gst::Buffer>& outbuf);
00387 #endif //GLIBMM_VFUNCS_ENABLED
00388
00389
00393 #ifdef GLIBMM_VFUNCS_ENABLED
00394 virtual FlowReturn transform_ip_vfunc(const Glib::RefPtr<Gst::Buffer>& buf);
00395 #endif //GLIBMM_VFUNCS_ENABLED
00396
00397
00398
00399
00400
00401
00402
00403
00404
00406
00407
00408
00409
00410 public:
00411
00412 public:
00413
00414 #ifdef GLIBMM_VFUNCS_ENABLED
00415 #endif //GLIBMM_VFUNCS_ENABLED
00416
00417 protected:
00418
00419 #ifdef GLIBMM_VFUNCS_ENABLED
00420 #endif //GLIBMM_VFUNCS_ENABLED
00421
00422
00423 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00424 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00425
00426
00427 };
00428
00429 }
00430
00431
00432 namespace Glib
00433 {
00442 Glib::RefPtr<Gst::BaseTransform> wrap(GstBaseTransform* object, bool take_copy = false);
00443 }
00444
00445
00446 #endif
00447