QtGStreamer 0.10.1
|
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