<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2750852840563144504</id><updated>2012-02-16T15:28:59.907-08:00</updated><title type='text'>Mathieu Duponchelle</title><subtitle type='html'>Gstreamer-editing-services, Pitivi and other hacks.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-256491536986765357</id><published>2011-10-28T14:50:00.000-07:00</published><updated>2011-10-28T14:55:20.814-07:00</updated><title type='text'>Homework :)</title><content type='html'>I had plenty of other things to do today, so I iterated from that code :&lt;br /&gt;http://encrypt3d.wordpress.com/2007/06/19/level-order-traversal/ , which I found pretty elegant.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Function of the code: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Breadth first tree traversal, display the level and show if the node is the first one of its level (starting from the left).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Missing:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As it was homework, I had to give the is_first property. What would be better would be to display the order of the node in the level.&lt;br /&gt;Also, wondering about the best way to display a tree.&lt;br /&gt;May'be starting by the bottom ?&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;typedef struct s_infos&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int is_first;&lt;br /&gt;&amp;nbsp; int level;&lt;br /&gt;&amp;nbsp; t_btree *node;&lt;br /&gt;} t_infos;&lt;br /&gt;&lt;br /&gt;t_infos&amp;nbsp;&amp;nbsp; &amp;nbsp;*create_new(t_infos *par, t_btree *n, int first)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; t_infos&amp;nbsp;&amp;nbsp; &amp;nbsp;*q;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; q = malloc(sizeof(t_infos));&lt;br /&gt;&amp;nbsp; q-&amp;gt;node = n;&lt;br /&gt;&amp;nbsp; q-&amp;gt;is_first = first ? 0 : 1;&lt;br /&gt;&amp;nbsp; if (par)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q-&amp;gt;level = par-&amp;gt;level + 1;&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q-&amp;gt;level = 0;&lt;br /&gt;&amp;nbsp; return(q);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;&amp;nbsp; &amp;nbsp;levelorder(t_btree *p,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;void (*applyf)(void *item,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int current_level,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int is_first_elem),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int *size,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int *qptr)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; t_infos&amp;nbsp;&amp;nbsp; &amp;nbsp;**queue;&lt;br /&gt;&amp;nbsp; int&amp;nbsp;&amp;nbsp; &amp;nbsp;*tab;&lt;br /&gt;&amp;nbsp; t_infos&amp;nbsp;&amp;nbsp; &amp;nbsp;*q;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; q = create_new(0, p, 0);&lt;br /&gt;&amp;nbsp; tab = malloc(sizeof(int) * 100);&lt;br /&gt;&amp;nbsp; queue = malloc(sizeof(t_infos *) * 100);&lt;br /&gt;&amp;nbsp; while(q)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; applyf(q-&amp;gt;node-&amp;gt;item, q-&amp;gt;level, q-&amp;gt;is_first);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(q-&amp;gt;node-&amp;gt;left)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; queue[*size] = create_new(q, q-&amp;gt;node-&amp;gt;left, tab[q-&amp;gt;level + 1]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; *size += 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; tab[q-&amp;gt;level + 1] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(q-&amp;gt;node-&amp;gt;right)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; queue[*size] = create_new(q, q-&amp;gt;node-&amp;gt;right, tab[q-&amp;gt;level + 1]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; *size += 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; tab[q-&amp;gt;level + 1] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = queue[*qptr];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *qptr += 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;&amp;nbsp;&amp;nbsp; *btree_apply_by_level(t_btree *root,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (*applyf)(void *item,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int current_level,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int is_first_elem))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int&amp;nbsp;&amp;nbsp; &amp;nbsp;size;&lt;br /&gt;&amp;nbsp; int&amp;nbsp;&amp;nbsp; &amp;nbsp;qptr;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; size = 0;&lt;br /&gt;&amp;nbsp; qptr = 0;&lt;br /&gt;&amp;nbsp; levelorder(root, applyf, &amp;amp;size, &amp;amp;qptr);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Usage:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let root be the root of the tree, and applyf the adress of a function returning void and using as arguments the data of each processed node, its level and its is_first property (Crap how useless is that ..) Also, t_btree is a classical node structure containing the left child, the right child and the data.&lt;br /&gt;&lt;br /&gt;Also, today I coded a function that allows you to insert a data in a red black tree.&lt;br /&gt;I'll try to post that&amp;nbsp; when I have time, it's a little longer but I think it's worth it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-256491536986765357?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/256491536986765357/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/10/homework.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/256491536986765357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/256491536986765357'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/10/homework.html' title='Homework :)'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-8781808133715355653</id><published>2011-07-08T19:49:00.001-07:00</published><updated>2011-07-08T19:49:56.213-07:00</updated><title type='text'>Weekly report number 6 and 7 for my GSoC</title><content type='html'>Hi everyone !&lt;br /&gt;&lt;br /&gt;These last two weeks were pretty busy for me.&lt;br /&gt;First off, last week I reached my mid-term evaluation goal, which was to  load a GESTimeline with xptv projects thanks to my GESPitiviFormatter,  then load a GESTimelinePipeline with the timeline, then connect it to  the viewer in Pitivi, all of this using my python bindings for GES. This  was a long sentence but quite a short job, and this was still pretty  hacky.&lt;br /&gt;Afterwards, I played around a little with projects, only to realize that  I had a nasty bug with the interaction of effects and transitions,  which obviously came from my formatter. This was in the middle of last  week.&lt;br /&gt;&lt;br /&gt;After this discovery, I moved in to another flat, and the end of the week was not really filled with working.&lt;br /&gt;&lt;br /&gt;I started to tackle this bug by the beginning of this week, and I must  admit it took me a long time to figure out where it came from (the  respective priorities of transitions and effects, which determine which  object is "above" and which is "under" had to be set in the appropriate  way), and still longer to fix it : once I made out how everything had to  fit together, I also realized that the calculating of the needs in  terms of transitions had to be refactored, I needed to compare the  sorted track objects one after another, and not the track objects  belonging to the sorted timeline objects one after another. I hope I'm  clear enough, anyway I had to add a function to the GESTrack API to  achieve this, which makes me think I'll also have to update the bindings  aha.&lt;br /&gt;&lt;br /&gt;Also, during this week I broke my scooter, and that didn't help me in  concentrating on my problems. It now lies in pieces in my yard waiting  for me to fix it or for someone to steal it xD.&lt;br /&gt;&lt;br /&gt;Anyway.&lt;br /&gt;&lt;br /&gt;These bugs are now fixed, and I can now attack the rest of the integration with a free mind.&lt;br /&gt;&lt;br /&gt;I will now explain you how to checkout my work and give it a try, if you find bugs don't hesitate to contact me.&lt;br /&gt;&lt;br /&gt;This is if you don't use jhbuild :&lt;br /&gt;&lt;br /&gt;First, you'll need pitivi. After that, you'll need the latest  gst-python, then you'll have to get to my GES repository, which is at  https://github.com/Mathieu69 as usual. You'll want to checkout the  "integration" branch, autogen it *without* prefix (this is due to the  CONFIGURED_PYTHON_PATH in pitivi, will fix that when I'll have time),  make and make install.&lt;br /&gt;&lt;br /&gt;To test the bindings : ipython, from gst import ges. If it imports, fine  ! You're nearly done. Otherwise, mail me with the traceback.&lt;br /&gt;&lt;br /&gt;Afterwards, all you'll have to do is go to my pitivi repo, and checkout  the "intcheck" branch. Just switch to it, launch pitivi, and load a  project *using the start up wizard*. You'll then be able to press play  and profit :D You can also pause, undock the viewer, and that's pretty  much all xD.&lt;br /&gt;&lt;br /&gt;Anyway, what's interesting is to compare the playback between master and  my branch, you'll be able to see the difference in smoothness ;) GES  makes playback nearly smooth, it only lags a little when transitions  start or if you think that a clip is way cooler with agingtv, chromium,  color lookup table filter, vertigo TV, and whatever effect *at the same  time*, where in pitivi and with my computer you can only see one picture  every 2/3 seconds, with no transitions. When transitions or effects  kick in, you just want to switch to pause and go ahead by hand, it's  nearly smoother ;)&lt;br /&gt;&lt;br /&gt;If you have issues at any point of the testing, mail me or directly come to pitivi's IRC channel, my nick is Mathieu_Du.&lt;br /&gt;&lt;br /&gt;Voila !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-8781808133715355653?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/8781808133715355653/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/07/weekly-report-number-6-and-7-for-my.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8781808133715355653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8781808133715355653'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/07/weekly-report-number-6-and-7-for-my.html' title='Weekly report number 6 and 7 for my GSoC'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-8562432879202445164</id><published>2011-06-03T11:18:00.001-07:00</published><updated>2011-06-03T11:18:48.834-07:00</updated><title type='text'>Second weekly report for GSoC</title><content type='html'>Here is my weekly report for the second week of GSoC :&lt;br /&gt;&lt;br /&gt;Hi ! &lt;br /&gt;&lt;br /&gt;I've spent my week refactoring my formatter, and after successfully  integrating the effects handling, I've banged my head against the track  objects wall. &lt;br /&gt;&lt;br /&gt;My first version worked fine, but I had worked around the following  problem in a way that was not the ideal one : &lt;br /&gt;&lt;br /&gt;When you create a timeline object, the track objects are not immediately  created, and when timeline objects are ungrouped in Pitivi, you want to  access the track objects of the timeline file sources to move them  accordingly. I worked that around by creating two file sources when  needed, and setting one mute and the other blind. &lt;br /&gt;&lt;br /&gt;My new version added a "track-object-added" signal to GESTimelineObject,  which I caught to move the track objects accordingly. This worked fine,  but there is now another trouble : transitions added after track objects  were created are not taken into account, even if GST_DEBUG tells me they  were really added. I have a good test case that shows that, and I pushed  that yesterday for bilboed and thiblahute to have a look. &lt;br /&gt;&lt;br /&gt;I just started to have a look at the unhandled argtypes in the bindings,  and I will work this week-end to get back in my schedule. &lt;br /&gt;&lt;br /&gt;I'll be able to use the old version of the formatter to start  integrating it anyway, for the API will not change when the refactoring  is done. &lt;br /&gt;&lt;br /&gt;By the next report, I plan to have finished the bindings, to have them  merged soon, cause other GSoCers will need them. I will then start the  integration, to reach the goal of my mid-term evaluation : having pitivi  load projects, and see them in the viewer. &lt;br /&gt;&lt;br /&gt;Have a good week-end &lt;span class="moz-smiley-s1" title=":)"&gt;&lt;span&gt;:)&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-8562432879202445164?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/8562432879202445164/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/06/second-weekly-report-for-gsoc.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8562432879202445164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8562432879202445164'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/06/second-weekly-report-for-gsoc.html' title='Second weekly report for GSoC'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-1208609617334228117</id><published>2011-05-27T14:43:00.000-07:00</published><updated>2011-05-27T14:44:53.594-07:00</updated><title type='text'></title><content type='html'>I have been lurking and hacking Pitivi's source code for quite a while now, and I think it is now time for me to sum up my opinions about it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first time I launched it, I had just installed Ubuntu and the version I had was 0.13.4, without the effects and anything. I was new to coding, so the only thing I could judge about it was the user interface and how everything fitted together. And I must admit that I thought : "Wow ! This is not what I would use if I wanted to make a short movie or anything .."&lt;br /&gt;&lt;br /&gt;Anyway, I started messing up with the code, making my way through the architecture with wild prints and crazy changes, and I quicly reckoned that Pitivi was only the visible part of a greater framework, namely GStreamer, and that this framework really &lt;b&gt;rocked&lt;/b&gt;, and gave Pitivi an unprecedented advantage on what existed before : A solid community, with hundreds of active members, all of them dedicated on taming the wild beast which is media handling, writing a great number of plugins ranging from codec handling to effect creation or object transformation !&lt;br /&gt;&lt;br /&gt;Pitivi was nothing but the editing emerged part of the iceberg, and a part which was still to grow to its real size. After all, the version naming is not random, the 0.13.x name means that it really is not mature yet, and misses a bunch of basic features essential to video editing, listing them would be too fastidious.&lt;br /&gt;&lt;br /&gt;But the whole point of my argumentation is that I think Pitivi has bet on the good horse, cause now that I begin to know a little more about GStreamer's internals, I realize the power that lies in its architecture : Flexibility and Modularity, through the use of combinable elements to form new elements, which in turn can be combined to finally make complex pipelines, ready to be played or rendered at will.&lt;br /&gt;&lt;br /&gt;I don't know well the other available frameworks, for example MLT, but what I know is that I love GStreamer, and a lot of other people look like they love it as well, shaping up the biggest media framework community by far.&lt;br /&gt;&lt;br /&gt;That's why I stuck up to pitivi until now, eventually applying for a Summer of Code to be able to give it still more of my time, and I can say now I'm happy of my choice. Indeed, a long-awaited release has just arrived, shipping a whole lot of goodies, first of them being the effects handling, and I can see some lines moving. Pitivi's IRC channel has never been so active, and new enthusiastic developers wannabe's pop up every day. On top of that, Gstreamer and Gnome have allocated no less than &lt;b&gt;4&lt;/b&gt; Summer of codes to us (against only one last year) which means we're gonna be able to take this software to a new level :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;One GSoCer is going to implement complex object recognition algorithms (robust estimation of Optical flow), which will make pitivi conscious of the different layers (background, foreground) and moving objects in a video.&lt;/li&gt;&lt;li&gt;Another will use Gstreamer filters to provide object's transformation options to the user, and also give titling support to Pitivi, another essential feature that it was lacking until now.&lt;/li&gt;&lt;li&gt;The third one will allow users to upload videos to streaming websites such as youtube or dailymotion, and also provide them with rendering presets (IPod, YouTube, Android Phone etc..).&lt;/li&gt;&lt;li&gt; I will integrate a new C library in pitivi, which will replace a lot of its backend with C optimized functions, making it more performant in the process, and allowing new features&lt;br /&gt;&amp;nbsp;integration (for example new kinds of transitions, the default one for now being the classical overused crossfade).&lt;/li&gt;&lt;/ol&gt;This is exciting isn't it ? I can't wait to see the next release, which will hopefully come way faster than the previous one. Kudos to thiblahute for bringing it to us !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-1208609617334228117?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/1208609617334228117/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/05/i-have-been-lurking-and-hacking-pitivis.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/1208609617334228117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/1208609617334228117'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/05/i-have-been-lurking-and-hacking-pitivis.html' title=''/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-6307125514968322542</id><published>2011-05-27T14:01:00.000-07:00</published><updated>2011-05-27T14:01:04.931-07:00</updated><title type='text'>My Google summer of code weekly report number 1.</title><content type='html'>Hi everyone !&lt;br /&gt;&lt;br /&gt;I started working on my project before the actual Summer of Code began, and I already successfully compiled the static bindings with a code coverage of about 90 %, wrote the beginning of a test suite for them and a basic example script.&lt;br /&gt;&lt;br /&gt;Since then, effects have been merged in GES master, so the .xptv file formatter I had written has got outdated, and since it's a critical component of my project, I decided to update it before going on with the bindings, in the hope of getting a near 100% code coverage.&lt;br /&gt;&lt;br /&gt;This has involved some massive refactoring, since I had not clearly envisioned the way the formatter would work with the effects (shame on me ;), and I'm not done yet : effects are integrated, but I still have to re-integrate the transitions properly).&lt;br /&gt;&lt;br /&gt;However, work is going well, and I'm not blocked anymore on my way to integrating GES in pitivi, given one of the members of the IRC channel gave me a hand on solving the problem of GST argtypes that were not properly handled by the code generator I use to create the bindings.&lt;br /&gt;&lt;br /&gt;By the end of next week, I will surely have finished my work on the formatter (code cleanup, fixing of the tests), and I hope to have solved the GST argtypes problem completely as well (This could be the matter of 2 or 3 hours of coding if everything goes as intended). With some luck, I'll be able to write overrides for the last 10 or 12 functions as well, which will leave me free to attack the real meat of my project, i.e. integration in pitivi proper.&lt;br /&gt;&lt;br /&gt;Most of my problems this week were very specific to my project, and I don't think they'd be very useful to anyone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-6307125514968322542?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/6307125514968322542/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/05/my-google-summer-of-code-weekly-report.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/6307125514968322542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/6307125514968322542'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2011/05/my-google-summer-of-code-weekly-report.html' title='My Google summer of code weekly report number 1.'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-6751731717742235887</id><published>2010-12-09T20:38:00.000-08:00</published><updated>2010-12-09T21:25:46.375-08:00</updated><title type='text'>Change in the plans !</title><content type='html'>YouTube law-kicked us so I had to find more suitable streamers.&lt;br /&gt;&lt;br /&gt;I just implemented archive.org and blip.tv and it rocks.&lt;br /&gt;Archive has a very serious, research-oriented(but not only) database, with private collections and plenty of available formats for most videos.&lt;br /&gt;The only problem I see with it is the 'picture coming soon' on 3/4 of the thumbs..&lt;br /&gt;I hope it's true :)&lt;br /&gt;That is not a problem with blip.tv, which is more youtube-like. You only get .flv on the other hand.&lt;br /&gt;Anyway, I'm now lurking for another friendly streaming site. Any suggestions accepted :)&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-36c0e935116af7a9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt4.googlevideo.com/videoplayback?id%3D36c0e935116af7a9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332614870%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7CD2368FFAE7ADBF9137AB1C4A2F28A54D2EA00A.2EB9B5E64E0AB571778CA46EA16879884DC99063%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D36c0e935116af7a9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8oF8WAYl-GZXH9wT0jR-WoJxW8s&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt4.googlevideo.com/videoplayback?id%3D36c0e935116af7a9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332614870%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7CD2368FFAE7ADBF9137AB1C4A2F28A54D2EA00A.2EB9B5E64E0AB571778CA46EA16879884DC99063%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D36c0e935116af7a9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8oF8WAYl-GZXH9wT0jR-WoJxW8s&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-6751731717742235887?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/6751731717742235887/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/12/change-in-plans.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/6751731717742235887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/6751731717742235887'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/12/change-in-plans.html' title='Change in the plans !'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-8377637008407171893</id><published>2010-11-26T21:35:00.000-08:00</published><updated>2010-11-26T21:35:04.983-08:00</updated><title type='text'>Drag and drop would be difficult though :)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_C_dktztkpEs/TPCYPm8DUtI/AAAAAAAAAAM/cAkj8Y7rT3s/s1600/youtubeimporterscreeny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_C_dktztkpEs/TPCYPm8DUtI/AAAAAAAAAAM/cAkj8Y7rT3s/s320/youtubeimporterscreeny.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-8377637008407171893?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/8377637008407171893/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/11/drag-and-drop-would-be-difficult-though.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8377637008407171893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/8377637008407171893'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/11/drag-and-drop-would-be-difficult-though.html' title='Drag and drop would be difficult though :)'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_C_dktztkpEs/TPCYPm8DUtI/AAAAAAAAAAM/cAkj8Y7rT3s/s72-c/youtubeimporterscreeny.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2750852840563144504.post-1448202979047261506</id><published>2010-11-26T21:24:00.000-08:00</published><updated>2010-11-26T21:24:30.389-08:00</updated><title type='text'>First blog : Introduction.</title><content type='html'>Hi ! I'm making this blog to present the results of my work on Pitivi, the open source video editor that is shipped with ubuntu 10.04. My git branches (not always up to date :) are available here :&lt;br /&gt;https://github.com/Mathieu69.&lt;br /&gt;As I currently am unemployed, I have found quite a lot of time to mess with pitivi's source code, and produced some enhancement features that were suggested in the Pitivi_love wiki.&lt;br /&gt;At the moment, I work on a feature that no doubt people will like. It's the ability to browse youtube's videos within pitivi (see screenshot), directly stream them ( a bit like totem's plugin that actually does not work for me :) and download them. They are then added to the sourcelist, where you can edit them as usual clips ( to make a cool video playlist with fancy transitions for example ?).&lt;br /&gt;The retrieval of the video can also be done directly with its url, and I just implemented the processing of dailymotion's urls as well. Direct streaming is not available for the moment with this method, but it can be implemented quite easily. One could also add a lot of ways to retrieve contents online with this method. The search is permitted by google gdata API, but a download address can however be figured out from google video and other kinds of online streamers. GData also provides an API to search Picasa, I dont know to what extent it would be useful in a video editor. Any feedback appreciated, have a nice day :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2750852840563144504-1448202979047261506?l=mathieuduponchelle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mathieuduponchelle.blogspot.com/feeds/1448202979047261506/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/11/first-blog-introduction.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/1448202979047261506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2750852840563144504/posts/default/1448202979047261506'/><link rel='alternate' type='text/html' href='http://mathieuduponchelle.blogspot.com/2010/11/first-blog-introduction.html' title='First blog : Introduction.'/><author><name>Mathieu Duponchelle</name><uri>http://www.blogger.com/profile/06500866716456569717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
