00001
00002
00003 #ifndef _GSTREAMERMM_BASESRC_H
00004 #define _GSTREAMERMM_BASESRC_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/element.h>
00031 #include <gstreamermm/pad.h>
00032 #include <gstreamermm/format.h>
00033 #include <gstreamermm/clock.h>
00034 #include <gstreamermm/segment.h>
00035
00036
00037 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00038 typedef struct _GstBaseSrc GstBaseSrc;
00039 typedef struct _GstBaseSrcClass GstBaseSrcClass;
00040 #endif
00041
00042
00043 namespace Gst
00044 { class BaseSrc_Class; }
00045 namespace Gst
00046 {
00047
00156 class BaseSrc
00157 : public Element
00158 {
00159
00160 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00161
00162 public:
00163 typedef BaseSrc CppObjectType;
00164 typedef BaseSrc_Class CppClassType;
00165 typedef GstBaseSrc BaseObjectType;
00166 typedef GstBaseSrcClass BaseClassType;
00167
00168 private: friend class BaseSrc_Class;
00169 static CppClassType basesrc_class_;
00170
00171 private:
00172
00173 BaseSrc(const BaseSrc&);
00174 BaseSrc& operator=(const BaseSrc&);
00175
00176 protected:
00177 explicit BaseSrc(const Glib::ConstructParams& construct_params);
00178 explicit BaseSrc(GstBaseSrc* castitem);
00179
00180 #endif
00181
00182 public:
00183 virtual ~BaseSrc();
00184
00185 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00186 static GType get_type() G_GNUC_CONST;
00187 static GType get_base_type() G_GNUC_CONST;
00188 #endif
00189
00191 GstBaseSrc* gobj() { return reinterpret_cast<GstBaseSrc*>(gobject_); }
00192
00194 const GstBaseSrc* gobj() const { return reinterpret_cast<GstBaseSrc*>(gobject_); }
00195
00197 GstBaseSrc* gobj_copy();
00198
00199 private:
00200
00201
00202 public:
00203
00215 FlowReturn wait_playing();
00216
00220 bool is_live();
00221
00232 void set_live(bool live);
00233
00243 void set_format(Format format);
00244
00258 bool query_latency(bool& live, ClockTime& min_latency, ClockTime& max_latency);
00259
00265 bool get_do_timestamp();
00266
00274 void set_do_timestamp(bool timestamp);
00275
00278 Glib::RefPtr<Pad> get_src_pad() const;
00279
00280 #ifdef GLIBMM_PROPERTIES_ENABLED
00281
00287 Glib::PropertyProxy<gulong> property_blocksize() ;
00288 #endif //#GLIBMM_PROPERTIES_ENABLED
00289
00290 #ifdef GLIBMM_PROPERTIES_ENABLED
00291
00297 Glib::PropertyProxy_ReadOnly<gulong> property_blocksize() const;
00298 #endif //#GLIBMM_PROPERTIES_ENABLED
00299
00300 #ifdef GLIBMM_PROPERTIES_ENABLED
00301
00307 Glib::PropertyProxy<bool> property_do_timestamp() ;
00308 #endif //#GLIBMM_PROPERTIES_ENABLED
00309
00310 #ifdef GLIBMM_PROPERTIES_ENABLED
00311
00317 Glib::PropertyProxy_ReadOnly<bool> property_do_timestamp() const;
00318 #endif //#GLIBMM_PROPERTIES_ENABLED
00319
00320 #ifdef GLIBMM_PROPERTIES_ENABLED
00321
00327 Glib::PropertyProxy<int> property_num_buffers() ;
00328 #endif //#GLIBMM_PROPERTIES_ENABLED
00329
00330 #ifdef GLIBMM_PROPERTIES_ENABLED
00331
00337 Glib::PropertyProxy_ReadOnly<int> property_num_buffers() const;
00338 #endif //#GLIBMM_PROPERTIES_ENABLED
00339
00340 #ifdef GLIBMM_PROPERTIES_ENABLED
00341
00347 Glib::PropertyProxy<bool> property_typefind() ;
00348 #endif //#GLIBMM_PROPERTIES_ENABLED
00349
00350 #ifdef GLIBMM_PROPERTIES_ENABLED
00351
00357 Glib::PropertyProxy_ReadOnly<bool> property_typefind() const;
00358 #endif //#GLIBMM_PROPERTIES_ENABLED
00359
00360
00363 #ifdef GLIBMM_VFUNCS_ENABLED
00364 virtual Glib::RefPtr<Caps> get_caps_vfunc();
00365 #endif //GLIBMM_VFUNCS_ENABLED
00366
00367
00370 #ifdef GLIBMM_VFUNCS_ENABLED
00371 virtual bool set_caps_vfunc(const Glib::RefPtr<Caps>& caps);
00372 #endif //GLIBMM_VFUNCS_ENABLED
00373
00374
00377 #ifdef GLIBMM_VFUNCS_ENABLED
00378 virtual bool negotiate_vfunc();
00379 #endif //GLIBMM_VFUNCS_ENABLED
00380
00381
00384 #ifdef GLIBMM_VFUNCS_ENABLED
00385 virtual bool new_segment_vfunc();
00386 #endif //GLIBMM_VFUNCS_ENABLED
00387
00388
00392 #ifdef GLIBMM_VFUNCS_ENABLED
00393 virtual bool start_vfunc();
00394 #endif //GLIBMM_VFUNCS_ENABLED
00395
00396
00399 #ifdef GLIBMM_VFUNCS_ENABLED
00400 virtual bool stop_vfunc();
00401 #endif //GLIBMM_VFUNCS_ENABLED
00402
00403
00407 #ifdef GLIBMM_VFUNCS_ENABLED
00408 virtual void get_times_vfunc(const Glib::RefPtr<Buffer>& buffer, ClockTime& start, ClockTime& end);
00409 #endif //GLIBMM_VFUNCS_ENABLED
00410
00411
00414 #ifdef GLIBMM_VFUNCS_ENABLED
00415 virtual bool get_size_vfunc(guint64& size);
00416 #endif //GLIBMM_VFUNCS_ENABLED
00417
00418
00421 #ifdef GLIBMM_VFUNCS_ENABLED
00422 virtual bool is_seekable_vfunc();
00423 #endif //GLIBMM_VFUNCS_ENABLED
00424
00425
00429 #ifdef GLIBMM_VFUNCS_ENABLED
00430 virtual bool unlock_vfunc();
00431 #endif //GLIBMM_VFUNCS_ENABLED
00432
00433
00436 #ifdef GLIBMM_VFUNCS_ENABLED
00437 virtual bool event_vfunc(const Glib::RefPtr<Event>& event);
00438 #endif //GLIBMM_VFUNCS_ENABLED
00439
00440
00441
00442
00443
00444
00447 #ifdef GLIBMM_VFUNCS_ENABLED
00448 virtual bool do_seek_vfunc(Segment segment);
00449 #endif //GLIBMM_VFUNCS_ENABLED
00450
00451
00454 #ifdef GLIBMM_VFUNCS_ENABLED
00455 virtual bool query_vfunc(const Glib::RefPtr<Query>& query);
00456 #endif //GLIBMM_VFUNCS_ENABLED
00457
00458
00465 #ifdef GLIBMM_VFUNCS_ENABLED
00466 virtual bool check_get_range_vfunc();
00467 #endif //GLIBMM_VFUNCS_ENABLED
00468
00469
00473 #ifdef GLIBMM_VFUNCS_ENABLED
00474 virtual void fixate_vfunc(const Glib::RefPtr<Caps>& caps);
00475 #endif //GLIBMM_VFUNCS_ENABLED
00476
00477
00481 #ifdef GLIBMM_VFUNCS_ENABLED
00482 virtual bool unlock_stop_vfunc();
00483 #endif //GLIBMM_VFUNCS_ENABLED
00484
00485
00492 #ifdef GLIBMM_VFUNCS_ENABLED
00493 virtual bool prepare_seek_segment_vfunc(const Glib::RefPtr<Event>& seek, Segment segment);
00494 #endif //GLIBMM_VFUNCS_ENABLED
00495
00496
00497 public:
00498
00499 public:
00500
00501 #ifdef GLIBMM_VFUNCS_ENABLED
00502 #endif //GLIBMM_VFUNCS_ENABLED
00503
00504 protected:
00505
00506 #ifdef GLIBMM_VFUNCS_ENABLED
00507 #endif //GLIBMM_VFUNCS_ENABLED
00508
00509
00510 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00511 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00512
00513
00514 };
00515
00516 }
00517
00518
00519 namespace Glib
00520 {
00529 Glib::RefPtr<Gst::BaseSrc> wrap(GstBaseSrc* object, bool take_copy = false);
00530 }
00531
00532
00533 #endif
00534