global.h

00001 /*
00002     Copyright (C) 2010  George Kiagiadakis <kiagiadakis.george@gmail.com>
00003 
00004     This library is free software; you can redistribute it and/or modify
00005     it under the terms of the GNU Lesser General Public License as published
00006     by the Free Software Foundation; either version 2.1 of the License, or
00007     (at your option) any later version.
00008 
00009     This program is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU General Public License for more details.
00013 
00014     You should have received a copy of the GNU Lesser General Public License
00015     along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016 */
00017 #ifndef QGST_GLOBAL_H
00018 #define QGST_GLOBAL_H
00019 
00020 #include "../QGlib/type.h"
00021 #include <QtCore/QtGlobal>
00022 #include <QtCore/QDate>
00023 #include <QtCore/QSharedPointer>
00024 
00025 /* defined by cmake when building this library */
00026 #if defined(QtGStreamer_EXPORTS)
00027 # define QTGSTREAMER_EXPORT Q_DECL_EXPORT
00028 #else
00029 # define QTGSTREAMER_EXPORT Q_DECL_IMPORT
00030 #endif
00031 
00032 #if !defined(Q_OS_WIN) && !defined(Q_CC_NOKIAX86) && \
00033     !defined(Q_CC_RVCT) && defined(QT_VISIBILITY_AVAILABLE)
00034 # define QTGSTREAMER_NO_EXPORT __attribute__((visibility("hidden")))
00035 #else
00036 # define QTGSTREAMER_NO_EXPORT
00037 #endif
00038 
00039 #define QGST_REGISTER_TYPE(T) \
00040     QGLIB_REGISTER_TYPE_WITH_EXPORT_MACRO(T, QTGSTREAMER_EXPORT)
00041 
00042 //cyclic dependency, must include after defining the above
00043 #include "enums.h"
00044 
00045 //registered in value.cpp
00046 QGST_REGISTER_TYPE(QDate) //codegen: skip=true
00047 QGST_REGISTER_TYPE(QDateTime) //codegen: skip=true
00048 
00049 
00050 #define QGST_WRAPPER_GSTCLASS_DECLARATION(Class) \
00051     typedef struct _Gst##Class Gst##Class;
00052 
00053 #define QGST_WRAPPER_DIFFERENT_GSTCLASS_DECLARATION(Class, CClass) \
00054     typedef struct _Gst##CClass Gst##Class;
00055 
00056 #define QGST_WRAPPER_REFPOINTER_DECLARATION(Class) \
00057     namespace QGst { \
00058         class Class; \
00059         typedef QGlib::RefPointer<Class> Class##Ptr; \
00060     }
00061 
00062 #define QGST_WRAPPER_DECLARATION(Class) \
00063     QGST_WRAPPER_GSTCLASS_DECLARATION(Class) \
00064     QGST_WRAPPER_REFPOINTER_DECLARATION(Class)
00065 
00066 QGST_WRAPPER_DECLARATION(Bin)
00067 QGST_WRAPPER_DECLARATION(Bus)
00068 QGST_WRAPPER_DECLARATION(Caps)
00069 QGST_WRAPPER_DECLARATION(ChildProxy)
00070 QGST_WRAPPER_DECLARATION(Clock)
00071 QGST_WRAPPER_DECLARATION(ColorBalanceChannel)
00072 QGST_WRAPPER_DECLARATION(ColorBalance)
00073 QGST_WRAPPER_DECLARATION(Element)
00074 QGST_WRAPPER_DECLARATION(ElementFactory)
00075 QGST_WRAPPER_DECLARATION(GhostPad)
00076 QGST_WRAPPER_DECLARATION(Message)
00077 QGST_WRAPPER_REFPOINTER_DECLARATION(EosMessage)
00078 QGST_WRAPPER_REFPOINTER_DECLARATION(ErrorMessage)
00079 QGST_WRAPPER_REFPOINTER_DECLARATION(WarningMessage)
00080 QGST_WRAPPER_REFPOINTER_DECLARATION(InfoMessage)
00081 QGST_WRAPPER_REFPOINTER_DECLARATION(TagMessage)
00082 QGST_WRAPPER_REFPOINTER_DECLARATION(BufferingMessage)
00083 QGST_WRAPPER_REFPOINTER_DECLARATION(StateChangedMessage)
00084 QGST_WRAPPER_REFPOINTER_DECLARATION(StepDoneMessage)
00085 QGST_WRAPPER_REFPOINTER_DECLARATION(StreamStatusMessage)
00086 QGST_WRAPPER_REFPOINTER_DECLARATION(ApplicationMessage)
00087 QGST_WRAPPER_REFPOINTER_DECLARATION(ElementMessage)
00088 QGST_WRAPPER_REFPOINTER_DECLARATION(SegmentDoneMessage)
00089 QGST_WRAPPER_REFPOINTER_DECLARATION(DurationMessage)
00090 QGST_WRAPPER_REFPOINTER_DECLARATION(LatencyMessage)
00091 QGST_WRAPPER_REFPOINTER_DECLARATION(AsyncDoneMessage)
00092 QGST_WRAPPER_REFPOINTER_DECLARATION(RequestStateMessage)
00093 QGST_WRAPPER_REFPOINTER_DECLARATION(StepStartMessage)
00094 QGST_WRAPPER_REFPOINTER_DECLARATION(QosMessage)
00095 QGST_WRAPPER_DECLARATION(MiniObject)
00096 QGST_WRAPPER_DECLARATION(Object)
00097 QGST_WRAPPER_DECLARATION(Pad)
00098 QGST_WRAPPER_DECLARATION(Pipeline)
00099 QGST_WRAPPER_DECLARATION(PluginFeature)
00100 QGST_WRAPPER_DECLARATION(PropertyProbe)
00101 QGST_WRAPPER_DECLARATION(Query)
00102 QGST_WRAPPER_REFPOINTER_DECLARATION(PositionQuery)
00103 QGST_WRAPPER_REFPOINTER_DECLARATION(DurationQuery)
00104 QGST_WRAPPER_REFPOINTER_DECLARATION(LatencyQuery)
00105 QGST_WRAPPER_REFPOINTER_DECLARATION(SeekingQuery)
00106 QGST_WRAPPER_REFPOINTER_DECLARATION(SegmentQuery)
00107 QGST_WRAPPER_REFPOINTER_DECLARATION(ConvertQuery)
00108 QGST_WRAPPER_REFPOINTER_DECLARATION(FormatsQuery)
00109 QGST_WRAPPER_REFPOINTER_DECLARATION(BufferingQuery)
00110 QGST_WRAPPER_REFPOINTER_DECLARATION(UriQuery)
00111 QGST_WRAPPER_DECLARATION(Buffer)
00112 QGST_WRAPPER_DECLARATION(BufferList)
00113 QGST_WRAPPER_GSTCLASS_DECLARATION(BufferListIterator)
00114 QGST_WRAPPER_DECLARATION(Event)
00115 QGST_WRAPPER_REFPOINTER_DECLARATION(FlushStartEvent)
00116 QGST_WRAPPER_REFPOINTER_DECLARATION(FlushStopEvent)
00117 QGST_WRAPPER_REFPOINTER_DECLARATION(EosEvent)
00118 QGST_WRAPPER_REFPOINTER_DECLARATION(NewSegmentEvent)
00119 QGST_WRAPPER_REFPOINTER_DECLARATION(TagEvent)
00120 QGST_WRAPPER_REFPOINTER_DECLARATION(BufferSizeEvent)
00121 QGST_WRAPPER_REFPOINTER_DECLARATION(SinkMessageEvent)
00122 QGST_WRAPPER_REFPOINTER_DECLARATION(QosEvent)
00123 QGST_WRAPPER_REFPOINTER_DECLARATION(SeekEvent)
00124 QGST_WRAPPER_REFPOINTER_DECLARATION(NavigationEvent)
00125 QGST_WRAPPER_REFPOINTER_DECLARATION(LatencyEvent)
00126 QGST_WRAPPER_REFPOINTER_DECLARATION(StepEvent)
00127 QGST_WRAPPER_DECLARATION(StreamVolume)
00128 QGST_WRAPPER_GSTCLASS_DECLARATION(Structure)
00129 QGST_WRAPPER_DIFFERENT_GSTCLASS_DECLARATION(TagList,Structure)
00130 
00131 namespace QGst {
00132     class Structure;
00133     class SharedStructure;
00134     typedef QSharedPointer<SharedStructure> StructurePtr;
00135 }
00136 QGST_WRAPPER_GSTCLASS_DECLARATION(URIHandler)
00137 QGST_WRAPPER_REFPOINTER_DECLARATION(UriHandler)
00138 QGST_WRAPPER_DECLARATION(VideoOrientation)
00139 QGST_WRAPPER_DECLARATION(XOverlay)
00140 
00141 #undef QGST_WRAPPER_DECLARATION
00142 #undef QGST_WRAPPER_REFPOINTER_DECLARATION
00143 #undef QGST_WRAPPER_GSTCLASS_DECLARATION
00144 
00145 
00146 #define QGST_WRAPPER(Class) \
00147     QGLIB_WRAPPER_DECLARATION_MACRO(Class, Class, Gst, Class)
00148 
00149 #define QGST_WRAPPER_DIFFERENT_C_CLASS(Class, CClass) \
00150     QGLIB_WRAPPER_DECLARATION_MACRO(Class, CClass, Gst, Class)
00151 
00152 #define QGST_WRAPPER_FAKE_SUBCLASS(Sub, Class) \
00153     QGLIB_WRAPPER_DECLARATION_MACRO(Sub##Class, Class, Gst, Class)
00154 
00155 #define QGST_REGISTER_SUBCLASS(BASECLASS, TYPE) \
00156     namespace QGlib { \
00157         template <> \
00158         struct GetTypeImpl<QGst::TYPE##BASECLASS> { \
00159             inline operator Type() { return GetType<QGst::BASECLASS>(); }; \
00160         }; \
00161     }
00162 
00163 #endif
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator