00001
00002
00003 #ifndef _GSTREAMERMM_BASESINK_H
00004 #define _GSTREAMERMM_BASESINK_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
00029
00030 #include <gst/base/gstbasesink.h>
00031 #include <gstreamermm/element.h>
00032 #include <gstreamermm/buffer.h>
00033 #include <gstreamermm/pad.h>
00034
00035
00036 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00037 typedef struct _GstBaseSink GstBaseSink;
00038 typedef struct _GstBaseSinkClass GstBaseSinkClass;
00039 #endif
00040
00041
00042 namespace Gst
00043 { class BaseSink_Class; }
00044 namespace Gst
00045 {
00046
00150 class BaseSink
00151 : public Element
00152 {
00153
00154 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00155
00156 public:
00157 typedef BaseSink CppObjectType;
00158 typedef BaseSink_Class CppClassType;
00159 typedef GstBaseSink BaseObjectType;
00160 typedef GstBaseSinkClass BaseClassType;
00161
00162 private: friend class BaseSink_Class;
00163 static CppClassType basesink_class_;
00164
00165 private:
00166
00167 BaseSink(const BaseSink&);
00168 BaseSink& operator=(const BaseSink&);
00169
00170 protected:
00171 explicit BaseSink(const Glib::ConstructParams& construct_params);
00172 explicit BaseSink(GstBaseSink* castitem);
00173
00174 #endif
00175
00176 public:
00177 virtual ~BaseSink();
00178
00179 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00180 static GType get_type() G_GNUC_CONST;
00181 static GType get_base_type() G_GNUC_CONST;
00182 #endif
00183
00185 GstBaseSink* gobj() { return reinterpret_cast<GstBaseSink*>(gobject_); }
00186
00188 const GstBaseSink* gobj() const { return reinterpret_cast<GstBaseSink*>(gobject_); }
00189
00191 GstBaseSink* gobj_copy();
00192
00193 private:
00194
00195
00196 public:
00197
00216 bool query_latency(bool& live, bool& upstream_live, ClockTime& min_latency, ClockTime& max_latency);
00217
00223 ClockTime get_latency();
00224
00236 FlowReturn wait_preroll();
00237
00238 ClockReturn wait_clock(ClockTime time, ClockTimeDiff& jitter);
00239
00255 FlowReturn wait_eos(ClockTime time, ClockTimeDiff& jitter);
00256
00266 void set_sync(bool sync);
00267
00274 bool get_sync();
00275
00284 void set_max_lateness(gint64 max_lateness);
00285
00294 gint64 get_max_lateness();
00295
00301 void set_qos_enabled(bool enabled);
00302
00309 bool is_qos_enabled();
00310
00319 void set_async_enabled(bool enabled);
00320
00328 bool is_async_enabled();
00329
00338 void set_ts_offset(ClockTimeDiff offset);
00339
00345 ClockTimeDiff get_ts_offset();
00346
00347
00348
00349
00350
00351
00352
00353
00364 Glib::RefPtr<Gst::Buffer> get_last_buffer();
00365
00368 Glib::RefPtr<Gst::Pad> get_sink_pad() const;
00369
00370 #ifdef GLIBMM_PROPERTIES_ENABLED
00371
00377 Glib::PropertyProxy<bool> property_async() ;
00378 #endif //#GLIBMM_PROPERTIES_ENABLED
00379
00380 #ifdef GLIBMM_PROPERTIES_ENABLED
00381
00387 Glib::PropertyProxy_ReadOnly<bool> property_async() const;
00388 #endif //#GLIBMM_PROPERTIES_ENABLED
00389
00390 #ifdef GLIBMM_PROPERTIES_ENABLED
00391
00397 Glib::PropertyProxy_ReadOnly< Glib::RefPtr<Gst::Buffer> > property_last_buffer() const;
00398 #endif //#GLIBMM_PROPERTIES_ENABLED
00399
00400
00401 #ifdef GLIBMM_PROPERTIES_ENABLED
00402
00408 Glib::PropertyProxy<gint64> property_max_lateness() ;
00409 #endif //#GLIBMM_PROPERTIES_ENABLED
00410
00411 #ifdef GLIBMM_PROPERTIES_ENABLED
00412
00418 Glib::PropertyProxy_ReadOnly<gint64> property_max_lateness() const;
00419 #endif //#GLIBMM_PROPERTIES_ENABLED
00420
00421 #ifdef GLIBMM_PROPERTIES_ENABLED
00422
00428 Glib::PropertyProxy<guint> property_preroll_queue_len() ;
00429 #endif //#GLIBMM_PROPERTIES_ENABLED
00430
00431 #ifdef GLIBMM_PROPERTIES_ENABLED
00432
00438 Glib::PropertyProxy_ReadOnly<guint> property_preroll_queue_len() const;
00439 #endif //#GLIBMM_PROPERTIES_ENABLED
00440
00441 #ifdef GLIBMM_PROPERTIES_ENABLED
00442
00448 Glib::PropertyProxy<bool> property_qos() ;
00449 #endif //#GLIBMM_PROPERTIES_ENABLED
00450
00451 #ifdef GLIBMM_PROPERTIES_ENABLED
00452
00458 Glib::PropertyProxy_ReadOnly<bool> property_qos() const;
00459 #endif //#GLIBMM_PROPERTIES_ENABLED
00460
00461 #ifdef GLIBMM_PROPERTIES_ENABLED
00462
00468 Glib::PropertyProxy<bool> property_sync() ;
00469 #endif //#GLIBMM_PROPERTIES_ENABLED
00470
00471 #ifdef GLIBMM_PROPERTIES_ENABLED
00472
00478 Glib::PropertyProxy_ReadOnly<bool> property_sync() const;
00479 #endif //#GLIBMM_PROPERTIES_ENABLED
00480
00481 #ifdef GLIBMM_PROPERTIES_ENABLED
00482
00488 Glib::PropertyProxy<gint64> property_ts_offset() ;
00489 #endif //#GLIBMM_PROPERTIES_ENABLED
00490
00491 #ifdef GLIBMM_PROPERTIES_ENABLED
00492
00498 Glib::PropertyProxy_ReadOnly<gint64> property_ts_offset() const;
00499 #endif //#GLIBMM_PROPERTIES_ENABLED
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00513 #ifdef GLIBMM_VFUNCS_ENABLED
00514 virtual Glib::RefPtr<Gst::Caps> get_caps_vfunc();
00515 #endif //GLIBMM_VFUNCS_ENABLED
00516
00517
00519
00520
00521
00522
00523
00524
00525
00529 #ifdef GLIBMM_VFUNCS_ENABLED
00530 virtual void get_times_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer, ClockTime& start, ClockTime& end);
00531 #endif //GLIBMM_VFUNCS_ENABLED
00532
00533
00535
00536
00537
00539
00540
00541
00543
00544
00545
00546
00548
00549
00550
00553 #ifdef GLIBMM_VFUNCS_ENABLED
00554 virtual FlowReturn preroll_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer);
00555 #endif //GLIBMM_VFUNCS_ENABLED
00556
00557
00561 #ifdef GLIBMM_VFUNCS_ENABLED
00562 virtual FlowReturn render_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer);
00563 #endif //GLIBMM_VFUNCS_ENABLED
00564
00565
00570 #ifdef GLIBMM_VFUNCS_ENABLED
00571 virtual StateChangeReturn async_play_vfunc();
00572 #endif //GLIBMM_VFUNCS_ENABLED
00573
00574
00576
00577
00578
00579
00580
00581
00582
00588 #ifdef GLIBMM_VFUNCS_ENABLED
00589 virtual void fixate_vfunc(const Glib::RefPtr<Gst::Caps>& caps);
00590 #endif //GLIBMM_VFUNCS_ENABLED
00591
00592
00594
00595
00596
00597
00598
00599 public:
00600
00601 public:
00602
00603 #ifdef GLIBMM_VFUNCS_ENABLED
00604 #endif //GLIBMM_VFUNCS_ENABLED
00605
00606 protected:
00607
00608 #ifdef GLIBMM_VFUNCS_ENABLED
00609 #endif //GLIBMM_VFUNCS_ENABLED
00610
00611
00612 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00613 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00614
00615
00616 };
00617
00618 }
00619
00620
00621 namespace Glib
00622 {
00631 Glib::RefPtr<Gst::BaseSink> wrap(GstBaseSink* object, bool take_copy = false);
00632 }
00633
00634
00635 #endif
00636