Re: Completed what I can in gstreamermm



Murray Cumming wrote:
On Wed, 2008-05-07 at 14:09 -0400, José Alburquerque wrote:
I wanted to let everyone know so that others are aware that there is still more to be done and the project can continue. I don't think I'll be needed because all wrapping should be really clear, but if there should be any questions please don't hesitate to e-mail me. Thank you all for the opportunity to exercise my programming muscles. Take care.
While preparing the NEWS file for gstreamermm-0.9.6, I was amazed at how
much work you've done, some of it really difficult stuff.

The media_player_gtkmm example shows how much you have achieved.
Actually playing music and video is the main point of gstreamer.
I didn't mention: I plan to use some of the media_player_gtkmm code in a project I'm developing. Now that I was able to tackle some challenges, it will come in handy when I work on the other project. :-)

I done some cleaning up of the API. It's mostly just small changes which
won't require much changes in your application code. For instance, it's
now ElementFactory::create_element() instead of
ElementFactory::create().


An obviously useful logical change. :-) Changes like these will not affect my application development because I understand that gstreamermm is still in early development so I'm happy to adjust my project development accordingly while gstreamermm stabilizes.

However, I am attaching the patch for a change I made to Structure, to
remove the awkward taking-ownership stuff. This is theoretically now
doing more copying than really necessary (it's a pity that it's not
reference-counted), but it makes the API much nicer. I wonder if this
causes problems for you.


To be honest, I haven't begun to use gstreamermm enough yet in my project for this change to affect me yet, but looking at it more closely, there was an error in my logic. I was trying to ensure that if someone tried to modify a Gst::Structure of a Gst::Caps obtained with Gst::Caps::get_structure() the change would be reflected in the actual Gst::Structure of the Gst::Caps as in the following:

...
Gst::Structure structure = caps->get_structure(0);

if (structure)
{
 Glib::Value<int> width;
 width.init(Glib::Value<int>::value_type());
 width.set(300);

 structure.set_field("width", width);
}
...

I had unfortunately overlooked that the GstCaps docs say that GstStructures of GstCaps should not be modified if obtained with gst_caps_get_structure(const GstCaps*, guint index) <http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#gst-caps-get-structure>. What you're doing is best and if I had been more careful reading the docs, I would not have made these changes to Gst::Structure.

I might need to do something similar for TagList.

As you say, TagList should undergo the same changes.

BTW, I had taken a look at your commits of last week and noticed some TODO's that I might have quickly been able to do (time notwithstanding) but I could not because I was affected by the svn+ssh bug. I'm still a bit pressed for time, but if I find time here and there, would it be alright if I commit some light stuff also?

--
José Alburquerque
jaalburquerque cox net

The path to real wisdom begins with a deep loving respect for the ever living God (Prov. 1:7)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]