12 years agoImprove the build system; add new features and examples:
George Kiagiadakis [Sun, 11 Jul 2010 14:44:09 +0000 (17:44 +0300)]
Improve the build system; add new features and examples:
* Add ability to build QtGstreamer as a static library by passing -DSTATIC_QTGSTREAMER=1 to cmake.
* Add a FindQtGstreamer.cmake script, which is installed as QtGstreamerConfig.cmake
  together with a generated QtGstreamerTargets.cmake script, that can be used to
  find QtGstreamer from external cmake-based projects. Both shared and static versions
  of QtGstreamer are supported.
* Add an uninstall target, copied from the KDE4 scripts.
* Rewrite the CMakeLists.txt of the examples so that they can also be built standalone
  and serve as examples of how to use QtGstreamer from external projects.
* Add qmake project files for the examples, to act as examples for people using qmake.

12 years agoFix RefPointer::staticCast() to behave like static_cast(), not like reinterpret_cast().
George Kiagiadakis [Sat, 10 Jul 2010 11:03:51 +0000 (14:03 +0300)]
Fix RefPointer::staticCast() to behave like static_cast(), not like reinterpret_cast().

12 years agoRename QGst::deinit() to QGst::cleanup(). deinit is not a good name.
George Kiagiadakis [Sat, 10 Jul 2010 10:49:07 +0000 (13:49 +0300)]
Rename QGst::deinit() to QGst::cleanup(). deinit is not a good name.

12 years agoAdd wrapper for the GstURIHandler interface.
George Kiagiadakis [Thu, 8 Jul 2010 19:22:24 +0000 (22:22 +0300)]
Add wrapper for the GstURIHandler interface.

12 years agoAdd a const SharedStructure Caps::structure(uint index) const method.
George Kiagiadakis [Thu, 8 Jul 2010 16:32:21 +0000 (19:32 +0300)]
Add a const SharedStructure Caps::structure(uint index) const method.

12 years agoAdd a Structure(const GstStructure*) constructor and make the equivalent Value constr...
George Kiagiadakis [Thu, 8 Jul 2010 16:30:45 +0000 (19:30 +0300)]
Add a Structure(const GstStructure*) constructor and make the equivalent Value constructor take a pointer too instead of a reference,
to make the API more uniform between those two classes. Also make some of their constructors explicit, to avoid nasty bugs.

12 years agoImprove the CMakeLists.txt files.
George Kiagiadakis [Thu, 8 Jul 2010 15:00:01 +0000 (18:00 +0300)]
Improve the CMakeLists.txt files.
* Cleanup the g++ flags and enable -std=c++0x only if g++ is recent enough to support it.
* Enable testing with ctest.
* Make the qgst_test() macro syntax easier.

12 years agoUpdate the README.
George Kiagiadakis [Thu, 8 Jul 2010 14:57:33 +0000 (17:57 +0300)]
Update the README.
* Declare the project ready for simple uses.
* Add some information regarding compilers and C++0x usage.
* Document the makeWritable() method for refcounted wrappers.

12 years agoAdd wrappers for the simple gst_parse_* methods.
George Kiagiadakis [Thu, 8 Jul 2010 10:49:56 +0000 (13:49 +0300)]
Add wrappers for the simple gst_parse_* methods.

12 years agoAdd wrapper for GError.
George Kiagiadakis [Wed, 7 Jul 2010 14:31:30 +0000 (17:31 +0300)]
Add wrapper for GError.

12 years agoAdd a new "player" example: a simple command-line audio player.
George Kiagiadakis [Tue, 6 Jul 2010 16:17:51 +0000 (19:17 +0300)]
Add a new "player" example: a simple command-line audio player.

In the future it will probably be expanded to handle video as well.
Although it is technically possible to do that now, I would like to
use the VideoWidget class that I plan to write for QtGstreamer.

12 years agoAdd ValueImpl specialization for Caps, Message and MiniObject.
George Kiagiadakis [Tue, 6 Jul 2010 15:43:17 +0000 (18:43 +0300)]
Add ValueImpl specialization for Caps, Message and MiniObject.

12 years agoAdd Pipeline::bus() method.
George Kiagiadakis [Tue, 6 Jul 2010 14:55:38 +0000 (17:55 +0300)]
Add Pipeline::bus() method.

12 years agos/runtime_error/logic_error/ in the exceptions that ValueBase throws and all the...
George Kiagiadakis [Sun, 4 Jul 2010 18:36:55 +0000 (21:36 +0300)]
s/runtime_error/logic_error/ in the exceptions that ValueBase throws and all the exceptions used in the signals & closures system.
These errors are really programmer errors, not something that can happen unexpectedly at runtime, so logic_error fits better.

12 years agoFix stupid mistakes. Signal::d should have been a QSharedDataPointer, not a QSharedPo...
George Kiagiadakis [Sun, 4 Jul 2010 18:26:13 +0000 (21:26 +0300)]
Fix stupid mistakes. Signal::d should have been a QSharedDataPointer, not a QSharedPointer,
and Signal::Private::query() should actually cache its results.

12 years agoRemove QGlib::String again. It sucks.
George Kiagiadakis [Sun, 4 Jul 2010 17:52:09 +0000 (20:52 +0300)]
Remove QGlib::String again. It sucks.

From now on the following policy will apply:
- Any methods that need to take a string argument will take a const char*.
This is because native gstreamer functions also take a const char* and in most
cases the programmer just passes an ascii string literal, so there is no need
to copy it in some string class and then let gstreamer copy it again. QString
is out of the question in this case, since it copies and converts to utf16, only
to let the wrapper function copy it again and convert it back to ascii. In case
the programmer needs to pass a QString to such a function, he should first convert
it to utf8 with QString::toUtf8(). This will be documented later.
- Any methods that need to return a string should return a QString.
This is because: 1) we need to make sure that the programmer won't do anything stupid
with the string, such as not free it or hold a reference to a free()-ed string, so
we can't return char* like the C functions do. 2) Usually these strings are used
for display or comparison, so the programmer needs to have an encoding-safe way
to do that and this is what QString offers. Returning a QByteArray and forcing the
programmer to convert it to unicode is not a good option.

12 years agoChange PluginFeature::load() to return void and internally change m_object if needed.
George Kiagiadakis [Sat, 3 Jul 2010 18:16:02 +0000 (21:16 +0300)]
Change PluginFeature::load() to return void and internally change m_object if needed.
It makes no sense to return a new object.

12 years agoAdd missing gst_object_ref_sink() in Pad::create().
George Kiagiadakis [Sat, 3 Jul 2010 18:04:55 +0000 (21:04 +0300)]
Add missing gst_object_ref_sink() in Pad::create().

12 years agoChange RefCountedObject::object() to be a template that automatically casts to the...
George Kiagiadakis [Sat, 3 Jul 2010 17:40:25 +0000 (20:40 +0300)]
Change RefCountedObject::object() to be a template that automatically casts to the requested pointer type.
This is to avoid the overhead of using gstreamer's GST_FOO() macros that internally make a type check too.

12 years agoRename all the "newClass" pseudo-constructors to "create".
George Kiagiadakis [Wed, 30 Jun 2010 14:52:49 +0000 (17:52 +0300)]
Rename all the "newClass" pseudo-constructors to "create".

Since these are static methods, you need to type the class name anyway,
so there is no need to type it again after "new". Plain "new" would have
been ideal, but unfortunately it is a keyword.
For consistency, the Caps constructors have been renamed too, although
they did not follow the "newClass" pattern.

12 years agoAdd wrapper for GstBus.
George Kiagiadakis [Wed, 30 Jun 2010 14:30:30 +0000 (17:30 +0300)]
Add wrapper for GstBus.

12 years agoAdd typedefs for GstClockTime and GstClockTimeDiff.
George Kiagiadakis [Tue, 29 Jun 2010 11:47:14 +0000 (14:47 +0300)]
Add typedefs for GstClockTime and GstClockTimeDiff.

12 years agoAdd structs Fourcc, Fraction, IntRange, DoubleRange and FractionRange.
George Kiagiadakis [Mon, 28 Jun 2010 19:09:08 +0000 (22:09 +0300)]
Add structs Fourcc, Fraction, IntRange, DoubleRange and FractionRange.

12 years agoInitial implementation of the GObject signal wrapper system.
George Kiagiadakis [Mon, 28 Jun 2010 12:42:22 +0000 (15:42 +0300)]
Initial implementation of the GObject signal wrapper system.
* Implement classes Signal and SignalHandler that wrap the basic functionality of
  the g_signal* methods, including signal connection and emission and using both
  variadic and non-variadic template versions for the connect() and emit() methods.
* Refactor the Closure system and add non-variadic versions of the templates for
  compilers that do not support C++0x variadic templates.
* Make the ValueBase::get / ValueBase::set methods throw exceptions instead of
  asserting. This helps showing nicer error messages from the signal system when
  these methods are called from there and allows in some non-fatal cases to
  continue execution.

12 years agoImplement a QSharedDataPointer-like method for ensuring that caps and miniobjects...
George Kiagiadakis [Mon, 21 Jun 2010 11:41:52 +0000 (14:41 +0300)]
Implement a QSharedDataPointer-like method for ensuring that caps and miniobjects are writable when needed.

The trick is to get the pointer to the underlying object using an object() method that has a const and
a non-const version. The non-const one calls makeWritable() internally, which makes a copy of the
object if needed, so any non-const method trying to access the underlying object is guaranteed that
it is writable. This is very similar to Qt's implicit sharing mechanism and what QSharedDataPointer does.

12 years agoMake RefPointer::operator->() return an object pointer with the same const-ness as...
George Kiagiadakis [Sun, 20 Jun 2010 14:09:36 +0000 (17:09 +0300)]
Make RefPointer::operator->() return an object pointer with the same const-ness as the RefPointer, so that it actually makes sense to use const RefPointers.

12 years agoQGst::StructureBase: Replace the peekGstStructure() methods with operator GstStructur...
George Kiagiadakis [Sun, 20 Jun 2010 13:21:54 +0000 (16:21 +0300)]
QGst::StructureBase: Replace the peekGstStructure() methods with operator GstStructure* to keep consistency with QGlib::ValueBase

12 years agovaluetest: Add a Value <-> GValue cast test and use GetType() for all the type checks.
George Kiagiadakis [Sun, 20 Jun 2010 13:00:28 +0000 (16:00 +0300)]
valuetest: Add a Value <-> GValue cast test and use GetType() for all the type checks.

12 years agoRefactor the Type and Value systems, cleanup code, add useful macros, documentation...
George Kiagiadakis [Sat, 19 Jun 2010 17:21:36 +0000 (20:21 +0300)]
Refactor the Type and Value systems, cleanup code, add useful macros, documentation, etc..
* Add struct GetTypeImpl and its specializations in type.h.
* Make GetType() an inline function that uses GetTypeImpl internally.
* Add basic documentation for Type, GetType and their associated macros.
* Add QGLIB_STATIC_ASSERT() macro to allow specifying a nice assertion message when using C++0x.
* Add macros for defining ValueImpl specializations.
* Remove the ValueBase::getFoo / ValueBase::setFoo methods.
* Place all basic ValueImpl specializations in value.h, remove the valueimpl headers.
* Remove VALUE_ASSERT and use a type check inside ValueBase::get/set.
* Remove ValueImpl specialization for pointers. Allow only void* (Type::Pointer) and const char* (Type::String).
* Register Type, ValueBase, Value, SharedValue, StructureBase and SharedStructure with the type system.
* Attempt to fix the mess with the included headers. Try to include all used headers instead of relying on indirect inclusion from global.h.
* Remove the peekGValue() methods from ValueBase and replace them with operator GValue*().
* Minor fixes here and there...

(Long commit, sorry...)

12 years agoAdd methods in RefPointer to allow casting RefPointers of derived classes to RefPoint...
George Kiagiadakis [Mon, 14 Jun 2010 15:39:42 +0000 (18:39 +0300)]
Add methods in RefPointer to allow casting RefPointers of derived classes to RefPointers of their base classes.
This allows for example to implicitly cast a QGst::ElementPtr to a QGst::ObjectPtr without using staticCast()
or dynamicCast(). The use of a static assertion and boost's type traits ensures that you cannot cast
in the opposite direction (i.e. ObjectPtr to ElementPtr).

12 years agoAdd overloaded String::operator==() methods to fix a build failure in some tests.
George Kiagiadakis [Mon, 14 Jun 2010 11:45:42 +0000 (14:45 +0300)]
Add overloaded String::operator==() methods to fix a build failure in some tests.

12 years agoIntroduce a new String class, based on QByteArray, to avoid the overhead
George Kiagiadakis [Mon, 14 Jun 2010 09:50:36 +0000 (12:50 +0300)]
Introduce a new String class, based on QByteArray, to avoid the overhead
of converting to/from UTF-16 when not necessary by using QString.
This class also introduces replacements for the gcharPtrToQString()
and qstringToGCharPtr() helper methods, so that it's easier to wrap
strings in the bindings.

12 years agoAdd wrapper for GstMessage.
George Kiagiadakis [Wed, 2 Jun 2010 11:42:30 +0000 (14:42 +0300)]
Add wrapper for GstMessage.

12 years agoProperly fix the reference counting bug I had with adding elements to bins.
George Kiagiadakis [Sun, 23 May 2010 08:34:51 +0000 (11:34 +0300)]
Properly fix the reference counting bug I had with adding elements to bins.
Apparently GstBin adds a new reference to the elements that are added in it,
except if they are floating, in which case it takes the floating reference.

12 years agoAdd wrapper for GstGhostPad.
George Kiagiadakis [Fri, 7 May 2010 10:33:41 +0000 (13:33 +0300)]
Add wrapper for GstGhostPad.

12 years agoPort the 'echo' example to the new bindings to make it work again.
George Kiagiadakis [Mon, 19 Apr 2010 21:05:43 +0000 (00:05 +0300)]
Port the 'echo' example to the new bindings to make it work again.

12 years agoAdd global init/deinit functions.
George Kiagiadakis [Mon, 19 Apr 2010 21:05:07 +0000 (00:05 +0300)]
Add global init/deinit functions.

12 years agoAdd basic wrapper for GstPipeline (just the method to create a new pipeline for now).
George Kiagiadakis [Mon, 19 Apr 2010 20:36:51 +0000 (23:36 +0300)]
Add basic wrapper for GstPipeline (just the method to create a new pipeline for now).

12 years agoAdd wrapper for the GstChildProxy interface and use it in Bin.
George Kiagiadakis [Sat, 17 Apr 2010 11:18:41 +0000 (14:18 +0300)]
Add wrapper for the GstChildProxy interface and use it in Bin.

12 years agoImprove the Object properties api. Use QString and export the methods that get/return...
George Kiagiadakis [Sat, 17 Apr 2010 09:23:38 +0000 (12:23 +0300)]
Improve the Object properties api. Use QString and export the methods that get/return a Value object.

12 years agoAdd wrapper class for GstBin.
George Kiagiadakis [Wed, 14 Apr 2010 15:44:24 +0000 (18:44 +0300)]
Add wrapper class for GstBin.
Still missing the iterator methods, though.

12 years agoAdd wrapper class for GstElementFactory.
George Kiagiadakis [Wed, 14 Apr 2010 14:05:35 +0000 (17:05 +0300)]
Add wrapper class for GstElementFactory.

12 years agoAdd a new qstringToGcharPtr() macro that converts a QString to a const gchar * and...
George Kiagiadakis [Wed, 14 Apr 2010 12:54:52 +0000 (15:54 +0300)]
Add a new qstringToGcharPtr() macro that converts a QString to a const gchar * and use it where appropriate.
This macro makes sure that empty strings become NULL instead of "" (i.e. empty string),
as most (if not all) gstreamer methods use NULL to represent an empty string.

12 years agoAdd wrapper class for GstPluginFeature.
George Kiagiadakis [Wed, 14 Apr 2010 10:51:54 +0000 (13:51 +0300)]
Add wrapper class for GstPluginFeature.

12 years agoAdd a README file with various information, mostly targeted to people that want to...
George Kiagiadakis [Wed, 14 Apr 2010 09:17:46 +0000 (12:17 +0300)]
Add a README file with various information, mostly targeted to people that want to contribute.

12 years agoAdd initial wrappers for GstPad and GstElement. Not all methods are yet there.
George Kiagiadakis [Tue, 13 Apr 2010 17:45:09 +0000 (20:45 +0300)]
Add initial wrappers for GstPad and GstElement. Not all methods are yet there.

12 years agoSupport mixed type registrations and enum definitions in codegen, needed for enums.h.
George Kiagiadakis [Tue, 13 Apr 2010 08:45:09 +0000 (11:45 +0300)]
Support mixed type registrations and enum definitions in codegen, needed for enums.h.

12 years agoRemove the headers from the tests and put the class declarations in the cpp files.
George Kiagiadakis [Thu, 1 Apr 2010 14:09:07 +0000 (17:09 +0300)]
Remove the headers from the tests and put the class declarations in the cpp files.

12 years agoAdd wrapper class for GstCaps.
George Kiagiadakis [Thu, 1 Apr 2010 14:02:13 +0000 (17:02 +0300)]
Add wrapper class for GstCaps.

12 years agoAdd wrapper class for GstMiniObject.
George Kiagiadakis [Wed, 31 Mar 2010 15:53:48 +0000 (18:53 +0300)]
Add wrapper class for GstMiniObject.

12 years agoImprove enum assertions generation.
George Kiagiadakis [Wed, 31 Mar 2010 15:47:04 +0000 (18:47 +0300)]
Improve enum assertions generation.
Make it possible to use enums that are not part of some class and make use
of the class name in the gst-style output if the enum belongs to a class.

12 years agoAdd wrapper class for GstStructure.
George Kiagiadakis [Fri, 26 Mar 2010 19:55:21 +0000 (21:55 +0200)]
Add wrapper class for GstStructure.

12 years agoAdd forward declarations for the gstreamer wrapper classes that will be implemented...
George Kiagiadakis [Fri, 26 Mar 2010 19:50:48 +0000 (21:50 +0200)]
Add forward declarations for the gstreamer wrapper classes that will be implemented next.

12 years agoImprove the Value API:
George Kiagiadakis [Thu, 25 Mar 2010 17:11:05 +0000 (19:11 +0200)]
Improve the Value API:
* Add constructor and assignment operator to allow copying a SharedValue to a Value.
* Add QDebug stream operator and remove the dumpContents() method.
* Rename peekNativeObject() to peekGValue().
* Add template init() method.
* Other minor fixes.

12 years agoAdd the most useful methods to the GstObject wrapper class.
George Kiagiadakis [Thu, 25 Mar 2010 14:05:15 +0000 (16:05 +0200)]
Add the most useful methods to the GstObject wrapper class.

12 years agoAdd protected constructors/destructor to all wrapper classes, so that they can only...
George Kiagiadakis [Mon, 22 Mar 2010 14:13:50 +0000 (16:13 +0200)]
Add protected constructors/destructor to all wrapper classes, so that they can only be used with RefPointer.

12 years agoMake use of the code generator.
George Kiagiadakis [Sun, 14 Mar 2010 13:48:15 +0000 (15:48 +0200)]
Make use of the code generator.
Changes include:
* Buildsystem changes to call the code generator.
* Register classes and enums with QGLIB_REGISTER_TYPE.
* QGLIB_GTYPE_WRAPPER becomes QGLIB_WRAPPER and no longer defines
  the member type() method.
* Use GetType<T>() instead of T::type() in GetType<RefPointer<T>>.
* Rename some of the enums in Type::FundamentalType so that they match
  the coding style that the code generator expects.
* Other minor compile fixes.

12 years agoInitial commit of the QtGstreamer helper code generator.
George Kiagiadakis [Sun, 14 Mar 2010 12:37:57 +0000 (14:37 +0200)]
Initial commit of the QtGstreamer helper code generator.

This is a code generator that will parse QtGstreamer's
header files and will produce some extra code:
 * For each QGLIB_REGISTER_TYPE() macro, it will provide its
 * For each defined enum, it will generate BOOST_STATIC_ASSERTs
   that will ensure that the values of the enums are exactly
   the same as in Gstreamer. This will help catch enum errors at
   compile time, since all Gstreamer's enums need to be redefined
   in the bindings to avoid exporting the Gstreamer API/ABI.

12 years agoMove the GetType<>() helper template to global.h and improve the macros a bit.
George Kiagiadakis [Sat, 13 Mar 2010 23:03:58 +0000 (01:03 +0200)]
Move the GetType<>() helper template to global.h and improve the macros a bit.

12 years agoAdd the missing find_package(Boost REQUIRED).
George Kiagiadakis [Sat, 13 Mar 2010 23:14:57 +0000 (01:14 +0200)]
Add the missing find_package(Boost REQUIRED).

12 years agoInitial commit of the new code.
George Kiagiadakis [Fri, 5 Mar 2010 18:16:22 +0000 (20:16 +0200)]
Initial commit of the new code.

This mostly acts as a proof of concept for the following implemented features:
 - Generic GValue C++ wrapper.
 - Better support for setting/getting GObject properties.
 - Connection of arbitrary class member functions to GObject signals knowing
   only the signal name as a string, with conversion to/from GValue at compile
   time (using templates) and with actual type checking at runtime.

This is not yet meant to be a replacement for the old code, but it will
slowly evolve into that.

12 years agoDelete old code. Re-writing everything from scratch now.
George Kiagiadakis [Thu, 18 Feb 2010 17:27:57 +0000 (19:27 +0200)]
Delete old code. Re-writing everything from scratch now.

13 years agoRemove extra underscore from header guards to suspend krazy warnings.
George Kiagiadakis [Sat, 15 Aug 2009 11:49:49 +0000 (14:49 +0300)]
Remove extra underscore from header guards to suspend krazy warnings.

13 years agoUse peekNativeObject() to get the native object pointer instead of using m_object...
George Kiagiadakis [Mon, 3 Aug 2009 14:58:10 +0000 (17:58 +0300)]
Use peekNativeObject() to get the native object pointer instead of using m_object and making every class friend with each other.

13 years agoAdd functions for getting the native object in GstObject and GstMiniObject.
George Kiagiadakis [Mon, 3 Aug 2009 13:46:56 +0000 (16:46 +0300)]
Add functions for getting the native object in GstObject and GstMiniObject.
These are useful for combining QtGstreamer with native gstreamer API.

13 years agoAdd a wrapper class for GstMessage.
George Kiagiadakis [Mon, 3 Aug 2009 13:18:53 +0000 (16:18 +0300)]
Add a wrapper class for GstMessage.
Currently supporting only Info/Warning/Error messages.

13 years agoAdd a wrapper class for GstMiniObject.
George Kiagiadakis [Sun, 2 Aug 2009 18:28:19 +0000 (21:28 +0300)]
Add a wrapper class for GstMiniObject.

13 years agoImplement support for dynamic casting between QGstObject subclasses.
George Kiagiadakis [Sun, 2 Aug 2009 16:07:40 +0000 (19:07 +0300)]
Implement support for dynamic casting between QGstObject subclasses.

This adds a new qtgstreamer_cast() template function that takes into account the internal
GType of the object it is casting and appropriately returns NULL if the cast cannot be done.
For example, casting a QGstElement to a QGstPad will fail, but casting a QGstPipeline to
QGstElement and back to QGstPipeline will succeed.

13 years agoRemove QGstElement::currentState() and fix the testcase to work without it.
George Kiagiadakis [Thu, 30 Jul 2009 19:02:18 +0000 (22:02 +0300)]
Remove QGstElement::currentState() and fix the testcase to work without it.
This method is completely wrong in concept it seems...

13 years agoImplement QGstElement::getState() and fix the currentState() convenience method to...
George Kiagiadakis [Thu, 30 Jul 2009 12:23:08 +0000 (15:23 +0300)]
Implement QGstElement::getState() and fix the currentState() convenience method to use getState()
so that it correctly blocks and waits for the state change to happen.

13 years agoQGstStructure: Implement getName, hasName, setName methods.
George Kiagiadakis [Thu, 30 Jul 2009 09:50:46 +0000 (12:50 +0300)]
QGstStructure: Implement getName, hasName, setName methods.

13 years agoImplement the methods: QGstPad::getCaps, QGstPad::setBlocked, QGstElement::syncStateW...
George Kiagiadakis [Thu, 30 Jul 2009 09:44:18 +0000 (12:44 +0300)]
Implement the methods: QGstPad::getCaps, QGstPad::setBlocked, QGstElement::syncStateWithParent, QGstCaps::getSize.

13 years agoRename class QGValue to QGstValue.
George Kiagiadakis [Wed, 29 Jul 2009 17:27:30 +0000 (20:27 +0300)]
Rename class QGValue to QGstValue.

This is because we are making GStreamer bindings, not GObject ones
and QGValue already has much gstreamer-specific functionality.

13 years agoPopulate QGValue with functions to handle the most useful types, including most GstVa...
George Kiagiadakis [Wed, 29 Jul 2009 17:16:50 +0000 (20:16 +0300)]
Populate QGValue with functions to handle the most useful types, including most GstValue types.

13 years agoImplement a wrapper for the GstXOverlay interface.
George Kiagiadakis [Fri, 24 Jul 2009 10:03:12 +0000 (13:03 +0300)]
Implement a wrapper for the GstXOverlay interface.

13 years agoInstall qgstdefinitions.h.
George Kiagiadakis [Wed, 22 Jul 2009 12:51:08 +0000 (15:51 +0300)]
Install qgstdefinitions.h.

13 years agoAdd basic support for GstCaps.
George Kiagiadakis [Wed, 22 Jul 2009 11:35:28 +0000 (14:35 +0300)]
Add basic support for GstCaps.

The api is not as convenient as the C api, because it needs to be usable
without including gstreamer headers and linking to gstreamer, so we can't
expect the user to give us the GType of the caps fields. So, the only way
of constructing QGstCaps for now is the one seen in QtGstreamerTest::capsTest().

13 years agoMove all the forward declarations and typedefs in a separate header to keep the other...
George Kiagiadakis [Wed, 22 Jul 2009 09:31:21 +0000 (12:31 +0300)]
Move all the forward declarations and typedefs in a separate header to keep the other headers clean.

13 years agoAdd a QGValue class, a wrapper for GValue.
George Kiagiadakis [Tue, 21 Jul 2009 18:58:35 +0000 (21:58 +0300)]
Add a QGValue class, a wrapper for GValue.

This class is similar to QVariant and thus I wrote some conversion methods
from/to QVariant, but they will only work with basic types at the moment.
I also changed QGstObject::property and setProperty to use QGValue.

13 years agoWhen destroying a QGstElement, set its state to Null if the underlying GstElement...
George Kiagiadakis [Wed, 22 Jul 2009 12:32:47 +0000 (15:32 +0300)]
When destroying a QGstElement, set its state to Null if the underlying GstElement is going to be deleted.
This is to allow the GstElement to cleanup without requiring the user to set the state explicitly to Null.

13 years agoImplement QGstBin::getByName()
George Kiagiadakis [Mon, 20 Jul 2009 15:04:45 +0000 (18:04 +0300)]
Implement QGstBin::getByName()

13 years agoImplement QGstElement::releaseRequestPad()
George Kiagiadakis [Sun, 19 Jul 2009 12:50:13 +0000 (15:50 +0300)]
Implement QGstElement::releaseRequestPad()

13 years agoImplement QGstPad::direction()
George Kiagiadakis [Sun, 19 Jul 2009 12:21:48 +0000 (15:21 +0300)]
Implement QGstPad::direction()

13 years agoQualify signal arguments with the full namespace to make it possible to connect properly.
George Kiagiadakis [Sun, 19 Jul 2009 11:13:57 +0000 (14:13 +0300)]
Qualify signal arguments with the full namespace to make it possible to connect properly.

13 years agoDisconnect GObject signals properly to avoid crashes in case the underlying GObject...
George Kiagiadakis [Sun, 19 Jul 2009 11:05:58 +0000 (14:05 +0300)]
Disconnect GObject signals properly to avoid crashes in case the underlying GObject is deleted after the the QObject wrapper.

13 years agoAdd signals to QGstElement.
George Kiagiadakis [Sun, 19 Jul 2009 10:30:26 +0000 (13:30 +0300)]
Add signals to QGstElement.

13 years agoAdd basic support for getting bus messages.
George Kiagiadakis [Fri, 17 Jul 2009 18:25:23 +0000 (21:25 +0300)]
Add basic support for getting bus messages.

13 years agoMove to shared pointer architecture.
George Kiagiadakis [Mon, 13 Jul 2009 18:58:08 +0000 (21:58 +0300)]
Move to shared pointer architecture.

All classes now have protected contructors and static functions that act
as constructors returning a QSharedPointer holding the class instance.
All QObject parents where dropped as they don't make sense with this

13 years agoAdd basic support for ghost pads.
George Kiagiadakis [Mon, 13 Jul 2009 17:27:57 +0000 (20:27 +0300)]
Add basic support for ghost pads.

13 years agoAdd simple constructor for QGstBin.
George Kiagiadakis [Mon, 13 Jul 2009 16:50:34 +0000 (19:50 +0300)]
Add simple constructor for QGstBin.

13 years agoQGstElementFactory: add methods find() and exists() and constructor/destructor.
George Kiagiadakis [Mon, 13 Jul 2009 13:12:50 +0000 (16:12 +0300)]
QGstElementFactory: add methods find() and exists() and constructor/destructor.

Note: The method exists() does not exist in the gstreamer bindings but it is
useful to have. It is a small wrapper around find() to automatically delete
the created QGstElementFactory if it was created successfully.

13 years agoInstall files.
George Kiagiadakis [Sun, 12 Jul 2009 21:48:54 +0000 (00:48 +0300)]
Install files.

13 years agoFix a bit the element state functions.
George Kiagiadakis [Sun, 12 Jul 2009 21:36:51 +0000 (00:36 +0300)]
Fix a bit the element state functions.

13 years agoAdd basic support for pads.
George Kiagiadakis [Sun, 12 Jul 2009 21:19:35 +0000 (00:19 +0300)]
Add basic support for pads.

13 years agoAdd a simple echo example, which forwards audio from the mic to the speakers.
George Kiagiadakis [Sun, 12 Jul 2009 16:35:10 +0000 (19:35 +0300)]
Add a simple echo example, which forwards audio from the mic to the speakers.

13 years agoAdd wrappers for gst_init().
George Kiagiadakis [Sun, 12 Jul 2009 16:34:37 +0000 (19:34 +0300)]
Add wrappers for gst_init().

13 years agoCleanup resources in the unit test.
George Kiagiadakis [Sun, 12 Jul 2009 16:32:37 +0000 (19:32 +0300)]
Cleanup resources in the unit test.
(doesn't seem to make much difference though...)

13 years agoFix legal stuff.
George Kiagiadakis [Sun, 12 Jul 2009 15:15:55 +0000 (18:15 +0300)]
Fix legal stuff.

13 years agoInitial commit.
George Kiagiadakis [Sun, 12 Jul 2009 15:08:43 +0000 (18:08 +0300)]
Initial commit.