00001
00002
00003 #ifndef _GSTREAMERMM_MULTIFDSINK_H
00004 #define _GSTREAMERMM_MULTIFDSINK_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 <gstreamermm/basesink.h>
00031 #include <gstreamermm/enums.h>
00032 #include <glibmm/valuearray.h>
00033
00034
00035
00036 enum GstSyncMethod
00037 {
00038 GST_SYNC_METHOD_LATEST = 0,
00039 GST_SYNC_METHOD_NEXT_KEYFRAME = 1,
00040 GST_SYNC_METHOD_LATEST_KEYFRAME = 2,
00041 GST_SYNC_METHOD_BURST = 3,
00042 GST_SYNC_METHOD_BURST_KEYFRAME = 4,
00043 GST_SYNC_METHOD_BURST_WITH_KEYFRAME = 5
00044 };
00045
00046 enum GstTCPUnitType
00047 {
00048 GST_TCP_UNIT_TYPE_UNDEFINED = 0,
00049 GST_TCP_UNIT_TYPE_BUFFERS = 1,
00050 GST_TCP_UNIT_TYPE_BYTES = 3,
00051 GST_TCP_UNIT_TYPE_TIME = 2
00052 };
00053
00054 enum GstClientStatus
00055 {
00056 GST_CLIENT_STATUS_OK = 0,
00057 GST_CLIENT_STATUS_CLOSED = 1,
00058 GST_CLIENT_STATUS_REMOVED = 2,
00059 GST_CLIENT_STATUS_SLOW = 3,
00060 GST_CLIENT_STATUS_ERROR = 4,
00061 GST_CLIENT_STATUS_DUPLICATE = 5,
00062 GST_CLIENT_STATUS_FLUSHING = 6
00063 };
00064
00065 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00066 typedef struct _GstMultiFdSink GstMultiFdSink;
00067 typedef struct _GstMultiFdSinkClass GstMultiFdSinkClass;
00068 #endif
00069
00070
00071 namespace Gst
00072 { class MultiFdSink_Class; }
00073 namespace Gst
00074 {
00075
00081 enum FDSetMode
00082 {
00083 FD_SET_MODE_SELECT,
00084 FD_SET_MODE_POLL,
00085 FD_SET_MODE_EPOLL
00086 };
00087
00088 }
00089
00090
00091 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00092 namespace Glib
00093 {
00094
00095 template <>
00096 class Value<Gst::FDSetMode> : public Glib::Value_Enum<Gst::FDSetMode>
00097 {
00098 public:
00099 static GType value_type() G_GNUC_CONST;
00100 };
00101
00102 }
00103 #endif
00104
00105
00106 namespace Gst
00107 {
00108
00109
00113 enum TCPUnitType
00114 {
00115 TCP_UNIT_TYPE_UNDEFINED,
00116 TCP_UNIT_TYPE_BUFFERS,
00117 TCP_UNIT_TYPE_TIME,
00118 TCP_UNIT_TYPE_BYTES
00119 };
00120
00121 }
00122
00123
00124 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00125 namespace Glib
00126 {
00127
00128 template <>
00129 class Value<Gst::TCPUnitType> : public Glib::Value_Enum<Gst::TCPUnitType>
00130 {
00131 public:
00132 static GType value_type() G_GNUC_CONST;
00133 };
00134
00135 }
00136 #endif
00137
00138
00139 namespace Gst
00140 {
00141
00142
00146 enum RecoverPolicy
00147 {
00148 RECOVER_POLICY_NONE,
00149 RECOVER_POLICY_RESYNC_LATEST,
00150 RECOVER_POLICY_RESYNC_SOFT_LIMIT,
00151 RECOVER_POLICY_RESYNC_KEYFRAME
00152 };
00153
00154 }
00155
00156
00157 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00158 namespace Glib
00159 {
00160
00161 template <>
00162 class Value<Gst::RecoverPolicy> : public Glib::Value_Enum<Gst::RecoverPolicy>
00163 {
00164 public:
00165 static GType value_type() G_GNUC_CONST;
00166 };
00167
00168 }
00169 #endif
00170
00171
00172 namespace Gst
00173 {
00174
00175
00179 enum SyncMethod
00180 {
00181 SYNC_METHOD_LATEST,
00182 SYNC_METHOD_NEXT_KEYFRAME,
00183 SYNC_METHOD_LATEST_KEYFRAME,
00184 SYNC_METHOD_BURST,
00185 SYNC_METHOD_BURST_KEYFRAME,
00186 SYNC_METHOD_BURST_WITH_KEYFRAME
00187 };
00188
00189 }
00190
00191
00192 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00193 namespace Glib
00194 {
00195
00196 template <>
00197 class Value<Gst::SyncMethod> : public Glib::Value_Enum<Gst::SyncMethod>
00198 {
00199 public:
00200 static GType value_type() G_GNUC_CONST;
00201 };
00202
00203 }
00204 #endif
00205
00206
00207 namespace Gst
00208 {
00209
00210
00214 enum ClientStatus
00215 {
00216 CLIENT_STATUS_OK,
00217 CLIENT_STATUS_CLOSED,
00218 CLIENT_STATUS_REMOVED,
00219 CLIENT_STATUS_SLOW,
00220 CLIENT_STATUS_ERROR,
00221 CLIENT_STATUS_DUPLICATE,
00222 CLIENT_STATUS_FLUSHING
00223 };
00224
00225 }
00226
00227
00228 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00229 namespace Glib
00230 {
00231
00232 template <>
00233 class Value<Gst::ClientStatus> : public Glib::Value_Enum<Gst::ClientStatus>
00234 {
00235 public:
00236 static GType value_type() G_GNUC_CONST;
00237 };
00238
00239 }
00240 #endif
00241
00242
00243 namespace Gst
00244 {
00245
00246
00257 class MultiFdSink
00258 : public Gst::BaseSink
00259 {
00260
00261 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00262
00263 public:
00264 typedef MultiFdSink CppObjectType;
00265 typedef MultiFdSink_Class CppClassType;
00266 typedef GstMultiFdSink BaseObjectType;
00267 typedef GstMultiFdSinkClass BaseClassType;
00268
00269 private: friend class MultiFdSink_Class;
00270 static CppClassType multifdsink_class_;
00271
00272 private:
00273
00274 MultiFdSink(const MultiFdSink&);
00275 MultiFdSink& operator=(const MultiFdSink&);
00276
00277 protected:
00278 explicit MultiFdSink(const Glib::ConstructParams& construct_params);
00279 explicit MultiFdSink(GstMultiFdSink* castitem);
00280
00281 #endif
00282
00283 public:
00284 virtual ~MultiFdSink();
00285
00286 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00287 static GType get_type() G_GNUC_CONST;
00288
00289
00290 static GType get_base_type() G_GNUC_CONST;
00291 #endif
00292
00294 GstMultiFdSink* gobj() { return reinterpret_cast<GstMultiFdSink*>(gobject_); }
00295
00297 const GstMultiFdSink* gobj() const { return reinterpret_cast<GstMultiFdSink*>(gobject_); }
00298
00300 GstMultiFdSink* gobj_copy();
00301
00302 private:
00303
00304
00305 protected:
00306 MultiFdSink();
00307 MultiFdSink(const Glib::ustring& name);
00308
00309 public:
00313 static Glib::RefPtr<MultiFdSink> create();
00314
00315
00319 static Glib::RefPtr<MultiFdSink> create(const Glib::ustring& name);
00320
00321
00322 #ifdef GLIBMM_PROPERTIES_ENABLED
00323
00329 Glib::PropertyProxy<Gst::TCPProtocol> property_protocol() ;
00330 #endif //#GLIBMM_PROPERTIES_ENABLED
00331
00332 #ifdef GLIBMM_PROPERTIES_ENABLED
00333
00339 Glib::PropertyProxy_ReadOnly<Gst::TCPProtocol> property_protocol() const;
00340 #endif //#GLIBMM_PROPERTIES_ENABLED
00341
00342 #ifdef GLIBMM_PROPERTIES_ENABLED
00343
00349 Glib::PropertyProxy<Gst::FDSetMode> property_mode() ;
00350 #endif //#GLIBMM_PROPERTIES_ENABLED
00351
00352 #ifdef GLIBMM_PROPERTIES_ENABLED
00353
00359 Glib::PropertyProxy_ReadOnly<Gst::FDSetMode> property_mode() const;
00360 #endif //#GLIBMM_PROPERTIES_ENABLED
00361
00362 #ifdef GLIBMM_PROPERTIES_ENABLED
00363
00369 Glib::PropertyProxy_ReadOnly<guint> property_buffers_queued() const;
00370 #endif //#GLIBMM_PROPERTIES_ENABLED
00371
00372
00373 #ifdef GLIBMM_PROPERTIES_ENABLED
00374
00380 Glib::PropertyProxy<Gst::TCPUnitType> property_unit_type() ;
00381 #endif //#GLIBMM_PROPERTIES_ENABLED
00382
00383 #ifdef GLIBMM_PROPERTIES_ENABLED
00384
00390 Glib::PropertyProxy_ReadOnly<Gst::TCPUnitType> property_unit_type() const;
00391 #endif //#GLIBMM_PROPERTIES_ENABLED
00392
00393 #ifdef GLIBMM_PROPERTIES_ENABLED
00394
00400 Glib::PropertyProxy<gint64> property_units_max() ;
00401 #endif //#GLIBMM_PROPERTIES_ENABLED
00402
00403 #ifdef GLIBMM_PROPERTIES_ENABLED
00404
00410 Glib::PropertyProxy_ReadOnly<gint64> property_units_max() const;
00411 #endif //#GLIBMM_PROPERTIES_ENABLED
00412
00413 #ifdef GLIBMM_PROPERTIES_ENABLED
00414
00420 Glib::PropertyProxy<gint64> property_units_soft_max() ;
00421 #endif //#GLIBMM_PROPERTIES_ENABLED
00422
00423 #ifdef GLIBMM_PROPERTIES_ENABLED
00424
00430 Glib::PropertyProxy_ReadOnly<gint64> property_units_soft_max() const;
00431 #endif //#GLIBMM_PROPERTIES_ENABLED
00432
00433 #ifdef GLIBMM_PROPERTIES_ENABLED
00434
00440 Glib::PropertyProxy<int> property_buffers_max() ;
00441 #endif //#GLIBMM_PROPERTIES_ENABLED
00442
00443 #ifdef GLIBMM_PROPERTIES_ENABLED
00444
00450 Glib::PropertyProxy_ReadOnly<int> property_buffers_max() const;
00451 #endif //#GLIBMM_PROPERTIES_ENABLED
00452
00453 #ifdef GLIBMM_PROPERTIES_ENABLED
00454
00460 Glib::PropertyProxy<int> property_buffers_soft_max() ;
00461 #endif //#GLIBMM_PROPERTIES_ENABLED
00462
00463 #ifdef GLIBMM_PROPERTIES_ENABLED
00464
00470 Glib::PropertyProxy_ReadOnly<int> property_buffers_soft_max() const;
00471 #endif //#GLIBMM_PROPERTIES_ENABLED
00472
00473 #ifdef GLIBMM_PROPERTIES_ENABLED
00474
00480 Glib::PropertyProxy<gint64> property_time_min() ;
00481 #endif //#GLIBMM_PROPERTIES_ENABLED
00482
00483 #ifdef GLIBMM_PROPERTIES_ENABLED
00484
00490 Glib::PropertyProxy_ReadOnly<gint64> property_time_min() const;
00491 #endif //#GLIBMM_PROPERTIES_ENABLED
00492
00493 #ifdef GLIBMM_PROPERTIES_ENABLED
00494
00500 Glib::PropertyProxy<int> property_bytes_min() ;
00501 #endif //#GLIBMM_PROPERTIES_ENABLED
00502
00503 #ifdef GLIBMM_PROPERTIES_ENABLED
00504
00510 Glib::PropertyProxy_ReadOnly<int> property_bytes_min() const;
00511 #endif //#GLIBMM_PROPERTIES_ENABLED
00512
00513 #ifdef GLIBMM_PROPERTIES_ENABLED
00514
00520 Glib::PropertyProxy<int> property_buffers_min() ;
00521 #endif //#GLIBMM_PROPERTIES_ENABLED
00522
00523 #ifdef GLIBMM_PROPERTIES_ENABLED
00524
00530 Glib::PropertyProxy_ReadOnly<int> property_buffers_min() const;
00531 #endif //#GLIBMM_PROPERTIES_ENABLED
00532
00533 #ifdef GLIBMM_PROPERTIES_ENABLED
00534
00540 Glib::PropertyProxy<Gst::RecoverPolicy> property_recover_policy() ;
00541 #endif //#GLIBMM_PROPERTIES_ENABLED
00542
00543 #ifdef GLIBMM_PROPERTIES_ENABLED
00544
00550 Glib::PropertyProxy_ReadOnly<Gst::RecoverPolicy> property_recover_policy() const;
00551 #endif //#GLIBMM_PROPERTIES_ENABLED
00552
00553 #ifdef GLIBMM_PROPERTIES_ENABLED
00554
00560 Glib::PropertyProxy<guint64> property_timeout() ;
00561 #endif //#GLIBMM_PROPERTIES_ENABLED
00562
00563 #ifdef GLIBMM_PROPERTIES_ENABLED
00564
00570 Glib::PropertyProxy_ReadOnly<guint64> property_timeout() const;
00571 #endif //#GLIBMM_PROPERTIES_ENABLED
00572
00573 #ifdef GLIBMM_PROPERTIES_ENABLED
00574
00580 Glib::PropertyProxy<Gst::SyncMethod> property_sync_method() ;
00581 #endif //#GLIBMM_PROPERTIES_ENABLED
00582
00583 #ifdef GLIBMM_PROPERTIES_ENABLED
00584
00590 Glib::PropertyProxy_ReadOnly<Gst::SyncMethod> property_sync_method() const;
00591 #endif //#GLIBMM_PROPERTIES_ENABLED
00592
00593 #ifdef GLIBMM_PROPERTIES_ENABLED
00594
00600 Glib::PropertyProxy_ReadOnly<guint64> property_bytes_to_serve() const;
00601 #endif //#GLIBMM_PROPERTIES_ENABLED
00602
00603
00604 #ifdef GLIBMM_PROPERTIES_ENABLED
00605
00611 Glib::PropertyProxy_ReadOnly<guint64> property_bytes_served() const;
00612 #endif //#GLIBMM_PROPERTIES_ENABLED
00613
00614
00615 #ifdef GLIBMM_PROPERTIES_ENABLED
00616
00622 Glib::PropertyProxy<Gst::TCPUnitType> property_burst_unit() ;
00623 #endif //#GLIBMM_PROPERTIES_ENABLED
00624
00625 #ifdef GLIBMM_PROPERTIES_ENABLED
00626
00632 Glib::PropertyProxy_ReadOnly<Gst::TCPUnitType> property_burst_unit() const;
00633 #endif //#GLIBMM_PROPERTIES_ENABLED
00634
00635 #ifdef GLIBMM_PROPERTIES_ENABLED
00636
00642 Glib::PropertyProxy<guint64> property_burst_value() ;
00643 #endif //#GLIBMM_PROPERTIES_ENABLED
00644
00645 #ifdef GLIBMM_PROPERTIES_ENABLED
00646
00652 Glib::PropertyProxy_ReadOnly<guint64> property_burst_value() const;
00653 #endif //#GLIBMM_PROPERTIES_ENABLED
00654
00655 #ifdef GLIBMM_PROPERTIES_ENABLED
00656
00662 Glib::PropertyProxy<int> property_qos_dscp() ;
00663 #endif //#GLIBMM_PROPERTIES_ENABLED
00664
00665 #ifdef GLIBMM_PROPERTIES_ENABLED
00666
00672 Glib::PropertyProxy_ReadOnly<int> property_qos_dscp() const;
00673 #endif //#GLIBMM_PROPERTIES_ENABLED
00674
00675 #ifdef GLIBMM_PROPERTIES_ENABLED
00676
00682 Glib::PropertyProxy<bool> property_handle_read() ;
00683 #endif //#GLIBMM_PROPERTIES_ENABLED
00684
00685 #ifdef GLIBMM_PROPERTIES_ENABLED
00686
00692 Glib::PropertyProxy_ReadOnly<bool> property_handle_read() const;
00693 #endif //#GLIBMM_PROPERTIES_ENABLED
00694
00695 #ifdef GLIBMM_PROPERTIES_ENABLED
00696
00702 Glib::PropertyProxy<bool> property_resend_streamheader() ;
00703 #endif //#GLIBMM_PROPERTIES_ENABLED
00704
00705 #ifdef GLIBMM_PROPERTIES_ENABLED
00706
00712 Glib::PropertyProxy_ReadOnly<bool> property_resend_streamheader() const;
00713 #endif //#GLIBMM_PROPERTIES_ENABLED
00714
00715 #ifdef GLIBMM_PROPERTIES_ENABLED
00716
00722 Glib::PropertyProxy_ReadOnly<guint> property_num_fds() const;
00723 #endif //#GLIBMM_PROPERTIES_ENABLED
00724
00725
00731 Glib::SignalProxy1< void,int > signal_add();
00732
00733
00739 Glib::SignalProxy6< void,int,Gst::SyncMethod,Gst::TCPUnitType,guint64,Gst::TCPUnitType,guint64 > signal_add_full();
00740
00741
00747 Glib::SignalProxy1< void,int > signal_remove();
00748
00749
00755 Glib::SignalProxy1< void,int > signal_remove_flush();
00756
00757
00763 Glib::SignalProxy0< void > signal_clear();
00764
00765
00771 Glib::SignalProxy1< Glib::ValueArray,int > signal_get_stats();
00772
00773
00779 Glib::SignalProxy1< void,int > signal_client_added();
00780
00781
00787 Glib::SignalProxy2< void,int,Gst::ClientStatus > signal_client_removed();
00788
00789
00795 Glib::SignalProxy1< void,int > signal_client_fd_removed();
00796
00797
00798 public:
00799
00800 public:
00801
00802 #ifdef GLIBMM_VFUNCS_ENABLED
00803 #endif //GLIBMM_VFUNCS_ENABLED
00804
00805 protected:
00806
00807 #ifdef GLIBMM_VFUNCS_ENABLED
00808 #endif //GLIBMM_VFUNCS_ENABLED
00809
00810
00811 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00812 virtual void on_add(int arg0);
00813 virtual void on_add_full(int arg0, Gst::SyncMethod arg1, Gst::TCPUnitType arg2, guint64 arg3, Gst::TCPUnitType arg4, guint64 arg5);
00814 virtual void on_remove(int arg0);
00815 virtual void on_remove_flush(int arg0);
00816 virtual void on_clear();
00817 virtual Glib::ValueArray on_get_stats(int arg0);
00818 virtual void on_client_added(int arg0);
00819 virtual void on_client_removed(int arg0, Gst::ClientStatus arg1);
00820 virtual void on_client_fd_removed(int arg0);
00821 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00822
00823
00824 };
00825
00826 }
00827
00828
00829 namespace Glib
00830 {
00839 Glib::RefPtr<Gst::MultiFdSink> wrap(GstMultiFdSink* object, bool take_copy = false);
00840 }
00841
00842
00843 #endif
00844