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 #include <gst/base/gstbasesink.h>
00029 #include <gstreamermm/element.h>
00030 #include <gstreamermm/buffer.h>
00031 #include <gstreamermm/pad.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GstBaseSink GstBaseSink;
00036 typedef struct _GstBaseSinkClass GstBaseSinkClass;
00037 #endif
00038
00039
00040 namespace Gst
00041 { class BaseSink_Class; }
00042 namespace Gst
00043 {
00044
00148 class BaseSink
00149 : public Element
00150 {
00151
00152 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00153
00154 public:
00155 typedef BaseSink CppObjectType;
00156 typedef BaseSink_Class CppClassType;
00157 typedef GstBaseSink BaseObjectType;
00158 typedef GstBaseSinkClass BaseClassType;
00159
00160 private: friend class BaseSink_Class;
00161 static CppClassType basesink_class_;
00162
00163 private:
00164
00165 BaseSink(const BaseSink&);
00166 BaseSink& operator=(const BaseSink&);
00167
00168 protected:
00169 explicit BaseSink(const Glib::ConstructParams& construct_params);
00170 explicit BaseSink(GstBaseSink* castitem);
00171
00172 #endif
00173
00174 public:
00175 virtual ~BaseSink();
00176
00177 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00178 static GType get_type() G_GNUC_CONST;
00179 static GType get_base_type() G_GNUC_CONST;
00180 #endif
00181
00183 GstBaseSink* gobj() { return reinterpret_cast<GstBaseSink*>(gobject_); }
00184
00186 const GstBaseSink* gobj() const { return reinterpret_cast<GstBaseSink*>(gobject_); }
00187
00189 GstBaseSink* gobj_copy();
00190
00191 private:
00192
00193
00194 public:
00195
00214 bool query_latency(bool& live, bool& upstream_live, ClockTime& min_latency, ClockTime& max_latency) const;
00215
00221 ClockTime get_latency() const;
00222
00234 FlowReturn wait_preroll();
00235
00256 ClockReturn wait_clock(ClockTime time, ClockTimeDiff& jitter);
00257
00279 ClockReturn wait_clock(ClockTime time);
00280
00281
00297 FlowReturn wait_eos(ClockTime time, ClockTimeDiff& jitter);
00298
00314 FlowReturn wait_eos(ClockTime time);
00315
00316
00326 void set_sync(bool sync);
00327
00334 bool get_sync() const;
00335
00344 void set_max_lateness(gint64 max_lateness);
00345
00354 gint64 get_max_lateness() const;
00355
00361 void set_qos_enabled(bool enabled);
00362
00369 bool is_qos_enabled() const;
00370
00379 void set_async_enabled(bool enabled);
00380
00388 bool is_async_enabled() const;
00389
00398 void set_ts_offset(ClockTimeDiff offset);
00399
00405 ClockTimeDiff get_ts_offset() const;
00406
00420 void set_render_delay(ClockTime delay);
00421
00428 ClockTime get_render_delay() const;
00429
00440 Glib::RefPtr<Gst::Buffer> get_last_buffer();
00441
00452 Glib::RefPtr<const Gst::Buffer> get_last_buffer() const;
00453
00456 Glib::RefPtr<Gst::Pad> get_sink_pad() const;
00457
00458 #ifdef GLIBMM_PROPERTIES_ENABLED
00459
00465 Glib::PropertyProxy<bool> property_async() ;
00466 #endif //#GLIBMM_PROPERTIES_ENABLED
00467
00468 #ifdef GLIBMM_PROPERTIES_ENABLED
00469
00475 Glib::PropertyProxy_ReadOnly<bool> property_async() const;
00476 #endif //#GLIBMM_PROPERTIES_ENABLED
00477
00478 #ifdef GLIBMM_PROPERTIES_ENABLED
00479
00485 Glib::PropertyProxy_ReadOnly< Glib::RefPtr<Gst::Buffer> > property_last_buffer() const;
00486 #endif //#GLIBMM_PROPERTIES_ENABLED
00487
00488
00489 #ifdef GLIBMM_PROPERTIES_ENABLED
00490
00496 Glib::PropertyProxy<gint64> property_max_lateness() ;
00497 #endif //#GLIBMM_PROPERTIES_ENABLED
00498
00499 #ifdef GLIBMM_PROPERTIES_ENABLED
00500
00506 Glib::PropertyProxy_ReadOnly<gint64> property_max_lateness() const;
00507 #endif //#GLIBMM_PROPERTIES_ENABLED
00508
00509 #ifdef GLIBMM_PROPERTIES_ENABLED
00510
00516 Glib::PropertyProxy<guint> property_preroll_queue_len() ;
00517 #endif //#GLIBMM_PROPERTIES_ENABLED
00518
00519 #ifdef GLIBMM_PROPERTIES_ENABLED
00520
00526 Glib::PropertyProxy_ReadOnly<guint> property_preroll_queue_len() const;
00527 #endif //#GLIBMM_PROPERTIES_ENABLED
00528
00529 #ifdef GLIBMM_PROPERTIES_ENABLED
00530
00536 Glib::PropertyProxy<bool> property_qos() ;
00537 #endif //#GLIBMM_PROPERTIES_ENABLED
00538
00539 #ifdef GLIBMM_PROPERTIES_ENABLED
00540
00546 Glib::PropertyProxy_ReadOnly<bool> property_qos() const;
00547 #endif //#GLIBMM_PROPERTIES_ENABLED
00548
00549 #ifdef GLIBMM_PROPERTIES_ENABLED
00550
00556 Glib::PropertyProxy<bool> property_sync() ;
00557 #endif //#GLIBMM_PROPERTIES_ENABLED
00558
00559 #ifdef GLIBMM_PROPERTIES_ENABLED
00560
00566 Glib::PropertyProxy_ReadOnly<bool> property_sync() const;
00567 #endif //#GLIBMM_PROPERTIES_ENABLED
00568
00569 #ifdef GLIBMM_PROPERTIES_ENABLED
00570
00576 Glib::PropertyProxy<gint64> property_ts_offset() ;
00577 #endif //#GLIBMM_PROPERTIES_ENABLED
00578
00579 #ifdef GLIBMM_PROPERTIES_ENABLED
00580
00586 Glib::PropertyProxy_ReadOnly<gint64> property_ts_offset() const;
00587 #endif //#GLIBMM_PROPERTIES_ENABLED
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00601 #ifdef GLIBMM_VFUNCS_ENABLED
00602 virtual Glib::RefPtr<Gst::Caps> get_caps_vfunc() const;
00603 #endif //GLIBMM_VFUNCS_ENABLED
00604
00605
00607
00608
00609
00610
00611
00612
00613
00617 #ifdef GLIBMM_VFUNCS_ENABLED
00618 virtual void get_times_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer, ClockTime& start, ClockTime& end) const;
00619 #endif //GLIBMM_VFUNCS_ENABLED
00620
00621
00623
00624
00625
00627
00628
00629
00631
00632
00633
00634
00636
00637
00638
00641 #ifdef GLIBMM_VFUNCS_ENABLED
00642 virtual FlowReturn preroll_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer);
00643 #endif //GLIBMM_VFUNCS_ENABLED
00644
00645
00649 #ifdef GLIBMM_VFUNCS_ENABLED
00650 virtual FlowReturn render_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer);
00651 #endif //GLIBMM_VFUNCS_ENABLED
00652
00653
00658 #ifdef GLIBMM_VFUNCS_ENABLED
00659 virtual StateChangeReturn async_play_vfunc();
00660 #endif //GLIBMM_VFUNCS_ENABLED
00661
00662
00664
00665
00666
00667
00668
00669
00670
00676 #ifdef GLIBMM_VFUNCS_ENABLED
00677 virtual void fixate_vfunc(const Glib::RefPtr<Gst::Caps>& caps);
00678 #endif //GLIBMM_VFUNCS_ENABLED
00679
00680
00682
00683
00684
00685
00686
00687 public:
00688
00689 public:
00690
00691 #ifdef GLIBMM_VFUNCS_ENABLED
00692 #endif //GLIBMM_VFUNCS_ENABLED
00693
00694 protected:
00695
00696 #ifdef GLIBMM_VFUNCS_ENABLED
00697 #endif //GLIBMM_VFUNCS_ENABLED
00698
00699
00700 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00701 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00702
00703
00704 };
00705
00706 }
00707
00708
00709 namespace Glib
00710 {
00719 Glib::RefPtr<Gst::BaseSink> wrap(GstBaseSink* object, bool take_copy = false);
00720 }
00721
00722
00723 #endif
00724