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
00152 class BaseTransform
00153 : public Element
00154 {
00155
00156 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00157
00158 public:
00159 typedef BaseTransform CppObjectType;
00160 typedef BaseTransform_Class CppClassType;
00161 typedef GstBaseTransform BaseObjectType;
00162 typedef GstBaseTransformClass BaseClassType;
00163
00164 private: friend class BaseTransform_Class;
00165 static CppClassType basetransform_class_;
00166
00167 private:
00168
00169 BaseTransform(const BaseTransform&);
00170 BaseTransform& operator=(const BaseTransform&);
00171
00172 protected:
00173 explicit BaseTransform(const Glib::ConstructParams& construct_params);
00174 explicit BaseTransform(GstBaseTransform* castitem);
00175
00176 #endif
00177
00178 public:
00179 virtual ~BaseTransform();
00180
00181 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00182 static GType get_type() G_GNUC_CONST;
00183 static GType get_base_type() G_GNUC_CONST;
00184 #endif
00185
00187 GstBaseTransform* gobj() { return reinterpret_cast<GstBaseTransform*>(gobject_); }
00188
00190 const GstBaseTransform* gobj() const { return reinterpret_cast<GstBaseTransform*>(gobject_); }
00191
00193 GstBaseTransform* gobj_copy();
00194
00195 private:
00196
00197
00198 public:
00199
00205 bool is_passthrough() const;
00206
00216 void set_passthrough(bool passthrough);
00217
00223 bool is_in_place() const;
00224
00236 void set_in_place(bool in_place);
00237
00245 bool is_qos_enabled() const;
00246
00254 void set_qos_enabled(bool enabled);
00255
00268 void update_qos(double proportion, ClockTimeDiff diff, ClockTime timestamp);
00269
00282 void set_gap_aware(bool gap_aware);
00283
00286 void lock();
00287
00291 void unlock();
00292
00295 Glib::RefPtr<Gst::Pad> get_sink_pad();
00296 Glib::RefPtr<const Gst::Pad> get_sink_pad() const;
00297
00300 Glib::RefPtr<Gst::Pad> get_src_pad();
00301 Glib::RefPtr<const 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
00327 #ifdef GLIBMM_VFUNCS_ENABLED
00328 virtual Glib::RefPtr<Gst::Caps> transform_caps_vfunc(PadDirection direction, const Glib::RefPtr<Gst::Caps>& caps);
00329 #endif //GLIBMM_VFUNCS_ENABLED
00330
00331
00335 #ifdef GLIBMM_VFUNCS_ENABLED
00336 virtual void fixate_caps_vfunc(PadDirection direction, const Glib::RefPtr<Gst::Caps>& caps, const Glib::RefPtr<Gst::Caps>& othercaps);
00337 #endif //GLIBMM_VFUNCS_ENABLED
00338
00339
00340
00341
00342
00344
00345
00346
00347
00348
00349
00350
00351
00352
00354
00355
00356
00357
00358
00359
00360
00362
00363
00364
00365
00366
00367
00369
00370
00371
00372
00373
00374
00375
00377
00378
00379
00380
00381
00383
00384
00385
00386
00387
00388
00389
00390
00395 #ifdef GLIBMM_VFUNCS_ENABLED
00396 virtual FlowReturn transform_vfunc(const Glib::RefPtr<Gst::Buffer>& inbuf, const Glib::RefPtr<Gst::Buffer>& outbuf);
00397 #endif //GLIBMM_VFUNCS_ENABLED
00398
00399
00403 #ifdef GLIBMM_VFUNCS_ENABLED
00404 virtual FlowReturn transform_ip_vfunc(const Glib::RefPtr<Gst::Buffer>& buf);
00405 #endif //GLIBMM_VFUNCS_ENABLED
00406
00407
00408 #ifdef GLIBMM_VFUNCS_ENABLED
00409
00414 virtual FlowReturn prepare_output_buffer_vfunc(const Glib::RefPtr<Gst::Buffer>& input, int size, const Glib::RefPtr<Gst::Caps>& caps, Glib::RefPtr<Gst::Buffer>& buffer);
00415 #endif //GLIBMM_VFUNCS_ENABLED
00416
00417
00418
00419
00421
00422
00423
00428 #ifdef GLIBMM_VFUNCS_ENABLED
00429 virtual void before_transform_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer);
00430 #endif //GLIBMM_VFUNCS_ENABLED
00431
00432
00433 protected:
00434
00435
00436 public:
00437
00438 public:
00439
00440 #ifdef GLIBMM_VFUNCS_ENABLED
00441 #endif //GLIBMM_VFUNCS_ENABLED
00442
00443 protected:
00444
00445 #ifdef GLIBMM_VFUNCS_ENABLED
00446 #endif //GLIBMM_VFUNCS_ENABLED
00447
00448
00449 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00450 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00451
00452
00453 };
00454
00455 }
00456
00457
00458 namespace Glib
00459 {
00468 Glib::RefPtr<Gst::BaseTransform> wrap(GstBaseTransform* object, bool take_copy = false);
00469 }
00470
00471
00472 #endif
00473