gstreamermm: basesrc.h Source File

- Main Page
- Modules
- Namespaces
- Classes
- Files

# basesrc.h

Go to the documentation of this file.

    00001 // -*- c++ -*-
    00002 // Generated by gtkmmproc -- DO NOT MODIFY!
    00003 #ifndef _GSTREAMERMM_BASESRC_H
    00004 #define _GSTREAMERMM_BASESRC_H
    00005
    00006
    00007 #include <glibmm.h>
    00008
    00009 /* gstreamermm - a C++ wrapper for gstreamer
    00010  *
    00011  * Copyright 2008 The gstreamermm Development Team
    00012  *
    00013  * This library is free software; you can redistribute it and/or
    00014  * modify it under the terms of the GNU Lesser General Public
    00015  * License as published by the Free Software Foundation; either
    00016  * version 2.1 of the License, or (at your option) any later version.
    00017  *
    00018  * This library is distributed in the hope that it will be useful,
    00019  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00021  * Lesser General Public License for more details.
    00022  *
    00023  * You should have received a copy of the GNU Lesser General Public
    00024  * License along with this library; if not, write to the Free
    00025  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00026  */
    00027
    00028 #include <gst/base/gstbasesrc.h>
    00029 #include <gstreamermm/element.h>
    00030 #include <gstreamermm/pad.h>
    00031 #include <gstreamermm/format.h>
    00032 #include <gstreamermm/clock.h>
    00033 #include <gstreamermm/segment.h>
    00034
    00035
    00036 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00037 typedef struct _GstBaseSrc GstBaseSrc;
    00038 typedef struct _GstBaseSrcClass GstBaseSrcClass;
    00039 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00040
    00041
    00042 namespace Gst
    00043 { class BaseSrc_Class; } // namespace Gst
    00044 namespace Gst
    00045 {
    00046
    00157 class BaseSrc
    00158 : public Element
    00159 {
    00160
    00161 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00162
    00163 public:
    00164   typedef BaseSrc CppObjectType;
    00165   typedef BaseSrc_Class CppClassType;
    00166   typedef GstBaseSrc BaseObjectType;
    00167   typedef GstBaseSrcClass BaseClassType;
    00168
    00169 private:  friend class BaseSrc_Class;
    00170   static CppClassType basesrc_class_;
    00171
    00172 private:
    00173   // noncopyable
    00174   BaseSrc(const BaseSrc&);
    00175   BaseSrc& operator=(const BaseSrc&);
    00176
    00177 protected:
    00178   explicit BaseSrc(const Glib::ConstructParams& construct_params);
    00179   explicit BaseSrc(GstBaseSrc* castitem);
    00180
    00181 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00182
    00183 public:
    00184   virtual ~BaseSrc();
    00185
    00186 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00187   static GType get_type()      G_GNUC_CONST;
    00188   static GType get_base_type() G_GNUC_CONST;
    00189 #endif
    00190
    00192   GstBaseSrc*       gobj()       { return reinterpret_cast<GstBaseSrc*>(gobject_); }
    00193
    00195   const GstBaseSrc* gobj() const { return reinterpret_cast<GstBaseSrc*>(gobject_); }
    00196
    00198   GstBaseSrc* gobj_copy();
    00199
    00200 private:
    00201
    00202
    00203 public:
    00204
    00216   FlowReturn wait_playing();
    00217
    00221   bool is_live() const;
    00222
    00233   void set_live(bool live);
    00234
    00244   void set_format(Format format);
    00245
    00259   bool query_latency(bool& live, ClockTime& min_latency, ClockTime& max_latency) const;
    00260
    00266   bool get_do_timestamp() const;
    00267
    00275   void set_do_timestamp(bool timestamp);
    00276
    00279    Glib::RefPtr<Gst::Pad> get_src_pad() const;
    00280
    00281   #ifdef GLIBMM_PROPERTIES_ENABLED
    00282
    00288   Glib::PropertyProxy<gulong> property_blocksize() ;
    00289 #endif //#GLIBMM_PROPERTIES_ENABLED
    00290
    00291 #ifdef GLIBMM_PROPERTIES_ENABLED
    00292
    00298   Glib::PropertyProxy_ReadOnly<gulong> property_blocksize() const;
    00299 #endif //#GLIBMM_PROPERTIES_ENABLED
    00300
    00301   #ifdef GLIBMM_PROPERTIES_ENABLED
    00302
    00308   Glib::PropertyProxy<bool> property_do_timestamp() ;
    00309 #endif //#GLIBMM_PROPERTIES_ENABLED
    00310
    00311 #ifdef GLIBMM_PROPERTIES_ENABLED
    00312
    00318   Glib::PropertyProxy_ReadOnly<bool> property_do_timestamp() const;
    00319 #endif //#GLIBMM_PROPERTIES_ENABLED
    00320
    00321   #ifdef GLIBMM_PROPERTIES_ENABLED
    00322
    00328   Glib::PropertyProxy<int> property_num_buffers() ;
    00329 #endif //#GLIBMM_PROPERTIES_ENABLED
    00330
    00331 #ifdef GLIBMM_PROPERTIES_ENABLED
    00332
    00338   Glib::PropertyProxy_ReadOnly<int> property_num_buffers() const;
    00339 #endif //#GLIBMM_PROPERTIES_ENABLED
    00340
    00341   #ifdef GLIBMM_PROPERTIES_ENABLED
    00342
    00348   Glib::PropertyProxy<bool> property_typefind() ;
    00349 #endif //#GLIBMM_PROPERTIES_ENABLED
    00350
    00351 #ifdef GLIBMM_PROPERTIES_ENABLED
    00352
    00358   Glib::PropertyProxy_ReadOnly<bool> property_typefind() const;
    00359 #endif //#GLIBMM_PROPERTIES_ENABLED
    00360
    00361
    00362   //TODO: bool vfuncs are a problem because if the base class does not
    00363   //implement one (which occurs often in GStreamer -- don't know why) the
    00364   //default generated callback returns false because of the "typedef RType;
    00365   //return RType()" statements (see discussion about bug #530416 in element.hg
    00366   //for more).  I've filed a patch for the bug which will allow a custom return
    00367   //to be specified for the callback, in which case the bool vfuncs can be made
    00368   //to return true which would then work.
    00369
    00370
    00373   #ifdef GLIBMM_VFUNCS_ENABLED
    00374   virtual Glib::RefPtr<Gst::Caps> get_caps_vfunc() const;
    00375 #endif //GLIBMM_VFUNCS_ENABLED
    00376
    00377
    00379    //*/
    00380   //_WRAP_VFUNC(bool set_caps(const Glib::RefPtr<Gst::Caps>& caps), "set_caps")
    00381
    00383    //*/
    00384   //_WRAP_VFUNC(bool negotiate(), "negotiate")
    00385
    00387    //*/
    00388   //_WRAP_VFUNC(bool new_segment(), "newsegment")
    00389
    00391    //* data.
    00392    //*/
    00393   //_WRAP_VFUNC(bool start(), "start")
    00394
    00396    //*/
    00397   //_WRAP_VFUNC(bool stop(), "stop")
    00398
    00399
    00403   #ifdef GLIBMM_VFUNCS_ENABLED
    00404   virtual void get_times_vfunc(const Glib::RefPtr<Gst::Buffer>& buffer, ClockTime& start, ClockTime& end) const;
    00405 #endif //GLIBMM_VFUNCS_ENABLED
    00406
    00407
    00409    //*/
    00410   //_WRAP_VFUNC(bool get_size(guint64& size) const, "get_size")
    00411
    00413    //*/
    00414   //_WRAP_VFUNC(bool is_seekable() const, "is_seekable")
    00415
    00417    //* blocked function ASAP.
    00418    //*/
    00419   //_WRAP_VFUNC(bool unlock(), "unlock")
    00420
    00422    //*/
    00423   //_WRAP_VFUNC(bool event(const Glib::RefPtr<Gst::Event>& event), "event")
    00424
    00425 //TODO: #m4 __CONVERSION(`Glib::RefPtr<Gst::Buffer>&', `GstBuffer**', `*($3)')
    00426   //_WRAP_VFUNC(FlowReturn create(guint64 offset, guint size, Glib::RefPtr<Gst::Buffer>& buffer), "create")
    00427
    00428
    00430    //*/
    00431   //_WRAP_VFUNC(bool do_seek(Segment& segment), "do_seek")
    00432
    00434    //*/
    00435   //_WRAP_VFUNC(bool query(const Glib::RefPtr<Gst::Query>& query), "query")
    00436
    00438    //* be opened now. This vfunc is optional, but should be implemented if
    00439    //* possible to avoid unnecessary start/stop cycles. The default
    00440    //* implementation will open and close the resource to find out whether
    00441    //* get_range() is supported, and that is usually undesirable.
    00442    //*/
    00443   //_WRAP_VFUNC(bool check_get_range(), "check_get_range")
    00444
    00448   #ifdef GLIBMM_VFUNCS_ENABLED
    00449   virtual void fixate_vfunc(const Glib::RefPtr<Gst::Caps>& caps);
    00450 #endif //GLIBMM_VFUNCS_ENABLED
    00451
    00452
    00454    //* set during unlock_vfunc(), such as clearing command queues.
    00455    //*/
    00456   //_WRAP_VFUNC(bool unlock_stop(), "unlock_stop")
    00457
    00459    //* for executing a seek request. Sub-classes should override this if they
    00460    //* support seeking in formats other than the configured native format. By
    00461    //* default, it tries to convert the seek arguments to the configured native
    00462    //* format and prepare a segment in that format.
    00463    //*/
    00464   //_WRAP_VFUNC(bool prepare_seek_segment(const Glib::RefPtr<Gst::Event>& seek, Segment& segment), "prepare_seek_segment")
    00465
    00466
    00467 public:
    00468
    00469 public:
    00470   //C++ methods used to invoke GTK+ virtual functions:
    00471 #ifdef GLIBMM_VFUNCS_ENABLED
    00472 #endif //GLIBMM_VFUNCS_ENABLED
    00473
    00474 protected:
    00475   //GTK+ Virtual Functions (override these to change behaviour):
    00476 #ifdef GLIBMM_VFUNCS_ENABLED
    00477 #endif //GLIBMM_VFUNCS_ENABLED
    00478
    00479   //Default Signal Handlers::
    00480 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    00481 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    00482
    00483
    00484 };
    00485
    00486 } //namespace Gst
    00487
    00488
    00489 namespace Glib
    00490 {
    00499   Glib::RefPtr<Gst::BaseSrc> wrap(GstBaseSrc* object, bool take_copy = false);
    00500 }
    00501
    00502
    00503 #endif /* _GSTREAMERMM_BASESRC_H */
    00504