<?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-8516651997079965154</id><updated>2011-08-30T09:52:07.147-07:00</updated><category term='gsoc work gstreamer asf'/><category term='gsoc'/><category term='opencv'/><category term='embedded gstreamer gsoc work qtmux'/><category term='gstreamer opencv'/><category term='asf'/><category term='gstreamer gsoc asfmux'/><category term='gstreamer work'/><category term='gsoc gstreamer work ufcg'/><category term='gsoc gstreamer work'/><category term='embedded gstreamer gsoc work'/><category term='gstreamer camerabin2 camerabin'/><category term='work'/><category term='gstreamer windows'/><category term='gsoc gstreamer work asf'/><category term='gstreamer'/><title type='text'>Got a Big Plan</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8516651997079965154.post-7947455408689535393</id><published>2011-01-18T11:00:00.000-08:00</published><updated>2011-01-18T11:56:56.504-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><title type='text'>A renegotiate event for GStreamer</title><content type='html'>Currently we have a problem at GStreamer that we can only make an element renegotiate using pad buffer allocs. Check the &lt;a href="http://www.gstreamer.net/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstPadBufferAllocFunction"&gt;function&lt;/a&gt; documentation for understanding how it works.&lt;br /&gt;&lt;br /&gt;By using pad buffer allocs, one element can ask downstream if it wants a new caps, but it can't tell upstream to pick a new caps. This would help in dynamic pipelines and applications that do element hot-swapping, which might happen on camerabin(2).&lt;br /&gt;&lt;br /&gt;So I started a first attempt at creating a new upstream event to make the pipeline (or a part of it) do a new caps negotiation, trying to pick optimal caps.&lt;br /&gt;&lt;br /&gt;I had 2 basic use cases in mind:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;videotestsrc ! capsfilter name=cf ! fakesink&lt;/li&gt;&lt;li&gt;videotestsrc ! capsfilter caps="&lt;some&gt;" ! ffmpegcolorspace ! videoscale ! capsfilter name=cf ! fakesink&lt;/li&gt;&lt;/ul&gt;In both cases, the capsfilter named 'cf' would change its caps property periodically, making the pipeline renegotiate to pick a new compatible and optimal caps.&lt;br /&gt;&lt;br /&gt;The resulting patches were really simple and I only modified basetransform and basesrc (other than adding the new event to core). Keep in mind that I'm still experimenting and we should search for regressions that this might cause. Next I'd like to go for a scenario with elements with multiple src/sink pads (demuxer/tee/selector).&lt;br /&gt;&lt;br /&gt;The patches are on a gstreamer branch &lt;a href="http://git.collabora.co.uk/?p=user/thiagoss/gstreamer.git;a=summary"&gt;here&lt;/a&gt; and the test cases were added on a branch on my -base &lt;a href="http://git.collabora.co.uk/?p=user/thiagoss/gst-plugins-base.git;a=summary"&gt;clone&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-7947455408689535393?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/7947455408689535393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=7947455408689535393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7947455408689535393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7947455408689535393'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2011/01/renegotiate-event-for-gstreamer.html' title='A renegotiate event for GStreamer'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-6281086620520127324</id><published>2010-12-02T05:23:00.000-08:00</published><updated>2010-12-02T07:08:53.774-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer camerabin2 camerabin'/><title type='text'>Camerabin2</title><content type='html'>As some of you might know, there has been some plans for a new camerabin design on the &lt;a href="http://www.gstreamer.net/wiki/CameraBin"&gt;wiki&lt;/a&gt; for some time.&lt;br /&gt;&lt;br /&gt;Current camerabin uses a single pad to output data for the viewfinder, video recording and image capture. Two problems on this:&lt;br /&gt;&lt;br /&gt;* Requires a mix of input/output-selectors and tricky switch handling code to keep buffers on their correct paths.&lt;br /&gt;* Managing different caps on each output type (images/videos/viewfinder) isn't simple.&lt;br /&gt;&lt;br /&gt;Those were the main reasons motivating us to rewrite this in a simpler way. So our adventure with camerabin2 begun. Long story short, we already have a prototype on &lt;a href="http://gitorious.org/gstreamer-camerabin2/gst-plugins-bad"&gt;gitorious&lt;/a&gt; and it has the minimum basic features: image capture, video recording and a viewfinder.&lt;br /&gt;&lt;br /&gt;Here's a summary on the important changing parts, for more details refer to the &lt;a href="http://www.gstreamer.net/wiki/CameraBin"&gt;wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The key change&lt;br /&gt;&lt;/span&gt;The big change is to have a source element (from now on called camera source) that has 3 source pads, one for each task: viewfinder, image capture, video recording.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why doing camerabin2 and not refactoring camerabin?&lt;/span&gt;&lt;br /&gt;The short answer is that it's a major design change we're taking here, writing from the ground up is probably safer and faster and won't bother people using current camerabin. Also, as it requires a new source element, we would cause major incompatibility with current sources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Modules&lt;br /&gt;&lt;/span&gt;We are aiming at a more modularized approach this time, so we have a viewfinderbin, a videorecordingbin and imagecapturebin, those are public elements that can be used outside of camerabin2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The new 3 pad source&lt;/span&gt;&lt;br /&gt;Thanks to Rob Clark's &lt;a href="http://gitorious.org/robclark-gstreamer/gst-plugins-bad"&gt;work&lt;/a&gt; from some time ago (he refactored camerabin into the new design as a proof of concept), we already got a working 3 pad source for testing our prototype. Truth be told, I haven't got really deep into the source internals working, but our goal is to provide a basecamerasrc which will make it easy (or at least, easier) to develop source elements with 3 pads.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Those are the main things I'd like to post here. I'm trying to schedule a meeting with developers interested on using camerabin2 (or that use camerabin) to discuss features, problems, requests and any camerabin2 related topic. Somewhere in the next days would be great. Nokia, Empathy and Cheese developers already showed interest on this. If you do, too, ping me on IRC (thiagoss at #gstreamer at freenode)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[Edited]&lt;/span&gt; Forgot to mention that the camerabin2 branch on gitorious already contains an example application under tests/examples/camerabin2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-6281086620520127324?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/6281086620520127324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=6281086620520127324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6281086620520127324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6281086620520127324'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2010/12/camerabin2.html' title='Camerabin2'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-1204763731294047673</id><published>2010-05-11T20:23:00.000-07:00</published><updated>2010-05-13T14:45:41.048-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='opencv'/><title type='text'>gst-opencv design choices</title><content type='html'>While continuing wrapping new OpenCV functions into GstElements yesterday, I faced an interesting design choice on the mappings of OpenCV functions' parameters to GstElement's properties.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Take a look at cvSmooth &lt;a href="http://opencv.willowgarage.com/documentation/image_filtering.html#cvSmooth"&gt;docs&lt;/a&gt;. You can see that it has a &lt;i&gt;type&lt;/i&gt; parameter, followed by &lt;i&gt;param1&lt;/i&gt;, &lt;i&gt;param2&lt;/i&gt;, &lt;i&gt;param3&lt;/i&gt; and &lt;i&gt;param4&lt;/i&gt; that have different semantics if different &lt;i&gt;type&lt;/i&gt; is used. The question is how to expose those in the 'cvsmooth' GstElement?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I could think of 3 different choices here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) Go straightforward and use the same API as OpenCV&lt;/b&gt;&lt;/div&gt;&lt;div&gt;As a result, we should have an element with the properties named after the OpenCV parameters:&lt;/div&gt;&lt;div&gt;"cvsmooth type=blur param1=5 param2=3  param3=0.0 param4=0.0"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This results in a very not intuitive API, but we keep it aligned with OpenCV's, making it easy to people that already know one API to use the other one. The element docs would mostly point to OpenCV's docs. Resulting code is simple and easy to maintain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2) Have multiple elements: cvsmoothblur, cvsmoothgaussian, cvsmooth...&lt;/b&gt;&lt;/div&gt;&lt;div&gt;We could have each smooth algorithm (&lt;i&gt;type&lt;/i&gt;) into a separate element and have its properties reflect the semantics of this type. For example, we would have cvsmoothblur, cvsmoothmedian and one for each type. The properties of each one would named accordingly to its semantics, instead of some &lt;i&gt;paramX&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This provides a nice API but might increase the number of elements for every function that has this &lt;i&gt;type&lt;/i&gt; or a similar parameter. I don't know how common this is. This might be a good solution if there are a few of those. A downside is that switching the &lt;i&gt;type&lt;/i&gt; has to use hot-swapping but I don't think this is a common use case.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3) Expose properties for each semantics and use them only if their &lt;/b&gt;&lt;i&gt;&lt;b&gt;type&lt;/b&gt;&lt;/i&gt;&lt;b&gt; is selected.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;We still keep it to one element, but we add one property for each semantic a parameter can assume. Those would only be used it we have its corresponding &lt;i&gt;type&lt;/i&gt; is selected.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example: &lt;i&gt;param3&lt;/i&gt; might be the "gaussian standard deviation" or the "color sigma" if &lt;i&gt;type&lt;/i&gt; is gaussian or bilateral respectively. We add those 2 properties (standard-deviation and color-sigma) that are only going to be used if their &lt;i&gt;types&lt;/i&gt; are selected.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This makes those lines possible:&lt;/div&gt;&lt;div&gt;"cvsmooth type=gaussian standard-deviation=5.0" or&lt;/div&gt;&lt;div&gt;"cvsmooth type=bilateral color-sigma=1.0"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Code is a little messier than options above.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Given those options, I really don't like option 3. I'm considering 1 or 2. From a quick look at some pages of OpenCV's transformations API I could see that this is not very common, and when it happens, only one parameter has a 'variable semantic', looks like I picked the trickiest one as my example.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, which option would you chose?&lt;/div&gt;&lt;div&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/8516651997079965154-1204763731294047673?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/1204763731294047673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=1204763731294047673' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1204763731294047673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1204763731294047673'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2010/05/gst-opencv-design-choices.html' title='gst-opencv design choices'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8516651997079965154.post-4494072685632369970</id><published>2010-05-06T14:29:00.000-07:00</published><updated>2010-05-08T19:00:30.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer opencv'/><title type='text'>Hacking in gst-opencv</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;It has been years since I last used &lt;/span&gt;&lt;a href="http://opencv.willowgarage.com/wiki/"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;OpenCV&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. We (me and friends working on a lab at the university) used it to process images on batches or to process frames live from a webcam. Things could have been much easier if I knew &lt;/span&gt;&lt;a href="http://gstreamer.freedesktop.org/"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;GStreamer&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; back then. Said so, I decided to take a look at &lt;/span&gt;&lt;a href="http://github.com/Elleo/gst-opencv"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;gst-opencv&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; to see what we already can do with it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;There are a few features wrapped as elements at this moment and they work quite well, but it could have a much larger feature set and it seems no one has been recently working on this. Given those and having a little spare time these days, I decided to start hacking on gst-opencv and trying to put it together with the other modules. I'd prefer to have a gst-opencv module, but adding it as a new plugin into gst-plugins-bad is also an option. What do you think?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Current features&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;[Edited: &lt;/b&gt;It seems the videos can only be seen directly on the post at blogspot&lt;b&gt;]&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Some nice stuff can already be done with the current elements. Let me show some.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I recorded this video outside some minutes ago:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-5115a796860316f1" 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://v23.nonxt5.googlevideo.com/videoplayback?id%3D5115a796860316f1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D75AC234CB11376BD2D7FE141DD186CD1022FA11B.51DFD523AC3B05054844E300C5FA8B407407B18F%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D5115a796860316f1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DBZRzzKICKhCrjML8QqQAI3qB_9w&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://v23.nonxt5.googlevideo.com/videoplayback?id%3D5115a796860316f1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D75AC234CB11376BD2D7FE141DD186CD1022FA11B.51DFD523AC3B05054844E300C5FA8B407407B18F%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D5115a796860316f1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DBZRzzKICKhCrjML8QqQAI3qB_9w&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;We can use edgedetect on it and see its edges:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Command: g&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;st-launch uridecodebin uri=youruri ! queue ! ffmpegcolorspace ! edgedetect ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=result.ogg&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-b902e8eb0882fbd3" 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://v11.nonxt6.googlevideo.com/videoplayback?id%3Db902e8eb0882fbd3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D15B97C33261CFC8A6A0AC584995B785B36CED597.37F00F00C7170D9E54C1C926F86E51A948987EA1%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db902e8eb0882fbd3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DSd6Tr2GNfFJdkY0mvIlwJ710BeU&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://v11.nonxt6.googlevideo.com/videoplayback?id%3Db902e8eb0882fbd3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D15B97C33261CFC8A6A0AC584995B785B36CED597.37F00F00C7170D9E54C1C926F86E51A948987EA1%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db902e8eb0882fbd3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DSd6Tr2GNfFJdkY0mvIlwJ710BeU&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Or we can segment it with pyramidsegment and have a nice effect (some people would enjoy this in PiTiVi?) or use it in machine vision stuff?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Command: g&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;st-launch uridecodebin uri=youruri ! queue ! ffmpegcolorspace ! pyramidsegment ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=result.ogg&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-841a8bf7e6db914b" 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://v4.nonxt3.googlevideo.com/videoplayback?id%3D841a8bf7e6db914b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D494D50AA0B788F97B5A2577FE77692C8EF229DFF.50AEB2A715704489F013093F15902BACF1B2DAA2%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D841a8bf7e6db914b%26offsetms%3D5000%26itag%3Dw160%26sigh%3De_pKI-Ux6hdUXSAxCxm0CqO_4ZM&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://v4.nonxt3.googlevideo.com/videoplayback?id%3D841a8bf7e6db914b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330308957%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D494D50AA0B788F97B5A2577FE77692C8EF229DFF.50AEB2A715704489F013093F15902BACF1B2DAA2%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D841a8bf7e6db914b%26offsetms%3D5000%26itag%3Dw160%26sigh%3De_pKI-Ux6hdUXSAxCxm0CqO_4ZM&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;OpenCV already ships some face detection profiles for you (at Ubuntu, it goes into /usr/share/opencv/haarcascades/), so you can use them with facedetect element, or train your own classifiers to use with it. I stood with the default and tried on some pictures, here are 2 of them:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_RgcwZKak6mU/S-V5V7ZA1jI/AAAAAAAAAQo/BEuDHItxy4k/s1600/faces5.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_RgcwZKak6mU/S-V5V7ZA1jI/AAAAAAAAAQo/BEuDHItxy4k/s320/faces5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5468910740138153522" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 168px; " /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RgcwZKak6mU/S-V5Vevk3rI/AAAAAAAAAQg/iXB_iAQyD7A/s1600/faces6.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_RgcwZKak6mU/S-V5Vevk3rI/AAAAAAAAAQg/iXB_iAQyD7A/s320/faces6.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5468910732448161458" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I think it works pretty well :)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;You can disable the circles and just get messages with the faces' positions and do whatever you want with them.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Other than those, there's also 'textwrite', 'templatematch' and 'faceblur' elements.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Current work&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I've been working on a simple base class that will make it easier to map simple 1 to 1 OpenCV functions into elements and providing some common properties (like ROI and COI) and GstBuffer-IplImage conversion. This will help covering more functions and should be enough to get me acquainted again to the API, after it I can go for the fancier stuff.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;For example, take &lt;/span&gt;&lt;i&gt;&lt;a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html#cvSmooth"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;cvSmooth&lt;/span&gt;&lt;/a&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; function, we should only have to write code to map its parameters into properties and a simplified chain function that already works on IplImages instead of GstBuffers.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Repositories&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;gst-opencv's main repository is at &lt;/span&gt;&lt;a href="http://github.com/Elleo/gst-opencv"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;github&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, I have my personal branches &lt;/span&gt;&lt;a href="http://git.collabora.co.uk/?p=user/thiagoss/gst-opencv.git;a=summary"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. From time to time I ping Elleo to upgrade at github, but I hope we can get this upstream in the next weeks.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-4494072685632369970?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/4494072685632369970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=4494072685632369970' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4494072685632369970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4494072685632369970'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2010/05/hacking-in-gst-opencv.html' title='Hacking in gst-opencv'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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/_RgcwZKak6mU/S-V5V7ZA1jI/AAAAAAAAAQo/BEuDHItxy4k/s72-c/faces5.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8516651997079965154.post-8703440821830383956</id><published>2009-11-09T13:13:00.000-08:00</published><updated>2009-11-09T13:26:09.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer windows'/><title type='text'>Trying GStreamer at Windows</title><content type='html'>Since I've started working with GStreamer I had never tried it out on Windows and tonight I decided to try it out. Edward pointed me to the &lt;a href="http://www.gstreamer-winbuild.ylatuya.es/"&gt;winbuilds&lt;/a&gt; and it took no more than pressing 'next' 4 or 5 times to have default applications (gst-launch, gst-inspect...) and lots of plugins. Easy enough.&lt;br /&gt;&lt;br /&gt;That must be the reason it has been some time since I've heard complaints about installing/using GStreamer on Windows. I wonder if there are any other builds out there like these?&lt;br /&gt;&lt;br /&gt;Thanks ylatuya!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-8703440821830383956?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/8703440821830383956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=8703440821830383956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8703440821830383956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8703440821830383956'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/11/trying-gstreamer-at-windows.html' title='Trying GStreamer at Windows'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-9040897934791113863</id><published>2009-08-12T21:31:00.000-07:00</published><updated>2009-08-12T22:05:11.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><title type='text'>GstCollectPads2 branch</title><content type='html'>This week I decided to grab the GstCollectPads2 patch (from bug &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=415754"&gt;#415754&lt;/a&gt;) and start a branch in my &lt;a href="http://cgit.freedesktop.org/~thiagoss"&gt;freedesktop repository&lt;/a&gt; for porting muxers to it. So far we've got:&lt;div&gt;&lt;ul&gt;&lt;li&gt;oggmux&lt;/li&gt;&lt;li&gt;avimux&lt;/li&gt;&lt;li&gt;matroskamux (patch by Mark)&lt;/li&gt;&lt;li&gt;asfmux&lt;/li&gt;&lt;li&gt;qtmux&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If you always wanted GStreamer to be able to mux subtitles into your movies, now is the time to provide specs/samples/patches for it.  And installing from this branch (I try to keep them up-to-date with current git master) and test it a lot in you favorite applications would help to find regressions from the porting process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Suggestions to improve GstCollectPads2 or other use cases are also welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-9040897934791113863?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/9040897934791113863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=9040897934791113863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/9040897934791113863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/9040897934791113863'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/08/gstcollectpads2-branch.html' title='GstCollectPads2 branch'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-919421124091477721</id><published>2009-07-24T11:05:00.000-07:00</published><updated>2009-07-24T11:13:34.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='asf'/><title type='text'>asfmux is now at gstreamer-plugins-bad</title><content type='html'>I just pushed asfmux plugin into gstreamer-plugins-bad. So, forget the old repository, the recent code will now be at -bad.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it now has mp3, wmv3 and wma3 support!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-919421124091477721?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/919421124091477721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=919421124091477721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/919421124091477721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/919421124091477721'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/07/asfmux-is-now-at-gstreamer-plugins-bad.html' title='asfmux is now at gstreamer-plugins-bad'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-2032167059531545952</id><published>2009-07-16T18:36:00.000-07:00</published><updated>2009-07-16T18:52:13.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='asf'/><title type='text'>Live streaming of ASF content</title><content type='html'>Just pushed a couple of changes to ASF muxer plugin that enable streaming live content of ASF media. Basically it contains some fixes to timestamping and a new boolean property to asfmux called "is-live". When enabled, asfmux won't attempt to push indexes at the end of the file (as this has no sense in live streams) and also won't try to seek back to the headers to rewrite some values that it couldn't predict when started the file.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the simplest example of its use in gst-launch commands:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The sender:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;gst-launch-0.10 -ve videotestsrc ! ffenc_wmv2 ! asfmux name=m is-live=true ! rtpasfpay ! udpsink  host=127.0.0.1 port=3333 audiotestsrc ! ffenc_wmav2 ! m.&lt;/li&gt;&lt;li&gt;gst-launch-0.10 udpsrc port=3333 ! "&lt;i&gt;put the caps here&lt;/i&gt;" ! rtpasfdepay ! decodebin2 name=d ! queue ! ffmpegcolorspace ! autovideosink d. ! queue ! audioconvert ! autoaudiosink&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Remember to replace the caps after udpsrc with the caps of the srcpad of the rtpasfpay element in the first pipeline. If you have any problems using it, please report!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The asf plugin can be found &lt;a href="http://cgit.freedesktop.org/~thiagoss/asfmux/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-2032167059531545952?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/2032167059531545952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=2032167059531545952' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2032167059531545952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2032167059531545952'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/07/live-streaming-of-asf-content.html' title='Live streaming of ASF content'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-4536242868890137479</id><published>2009-06-23T13:24:00.000-07:00</published><updated>2009-06-23T14:20:54.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='asf'/><title type='text'>ASF: we need a parser</title><content type='html'>While developing rtpasfpay I found out that I can't just do (in gst-launch syntax):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;somesrc ! asfmux ! rtpasfpay ! udpsink&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;because the ASF headers need to be updated after the stream ends and those values are needed by rtpasfpay. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Additionally, I can't get an ASF from a file and feed it to rtpasfpay because the buffers would be unaligned with the ASF objects and packets, requiring rtpasfpay to parse the data before doing anything related to RTP. I'd say we need a parser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The idea is to do all the parsing at the parser (obvious) and only some checks of conformance at the rtp payloader. As I had already started developing the payloader, I took it as farther as I could (without using a parser) and its current state is now at the &lt;a href="http://cgit.freedesktop.org/~thiagoss/asfmux/"&gt;repository&lt;/a&gt;. It is still unfinished (read: doesn't work).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The parser&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now I'm starting to develop the asfparse element. ASF files have 3 main parts: first there are headers, then the data (where the packets are) and lastly a series of indexes objects. The parser would, sequentially:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Group all the headers into a single buffer and push it&lt;/li&gt;&lt;li&gt;Push the "Data object" header (everything but the packets)&lt;/li&gt;&lt;li&gt;Put each packet into a separate buffer and push them&lt;/li&gt;&lt;li&gt;Put each of the indexes object into a separate buffer and push them&lt;/li&gt;&lt;li&gt;EOS&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The parser should work both in pull or push mode, I'll start with push mode.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-4536242868890137479?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/4536242868890137479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=4536242868890137479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4536242868890137479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4536242868890137479'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/06/asf-we-need-parser.html' title='ASF: we need a parser'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-6907088088318700917</id><published>2009-06-15T06:35:00.000-07:00</published><updated>2009-06-15T06:49:22.615-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work asf'/><title type='text'>asfmux: index fixed, new formats</title><content type='html'>Latest asfmux changes:&lt;div&gt;&lt;ul&gt;&lt;li&gt;fixed simple index (seeking works)&lt;/li&gt;&lt;li&gt;Support for wma version 1&lt;/li&gt;&lt;li&gt;Support for wmv version 1&lt;/li&gt;&lt;li&gt;Preroll time property&lt;/li&gt;&lt;li&gt;Packet size property&lt;/li&gt;&lt;li&gt;file id generation (instead of a previous hardcoded all zeroes)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I'd consider it ready to be called a basic asf muxer.&lt;/div&gt;&lt;div&gt;Feature suggestions are welcome.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-6907088088318700917?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/6907088088318700917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=6907088088318700917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6907088088318700917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6907088088318700917'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/06/asfmux-index-fixed-new-formats.html' title='asfmux: index fixed, new formats'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-2339080015258975401</id><published>2009-06-09T13:26:00.000-07:00</published><updated>2009-06-09T13:37:32.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work'/><title type='text'>ASFMux progress report</title><content type='html'>I ran some tests with asfmux yesterday and it is now capable of muxing wma2 and wmv2 nicely. Played the resulting files at totem, mplayer and media player.&lt;br /&gt;&lt;br /&gt;The file indexes are still badly broken, so trying to seek might result in unexpected behaviours or crashing. I'm trying to fix that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-2339080015258975401?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/2339080015258975401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=2339080015258975401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2339080015258975401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2339080015258975401'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/06/asfmux-progress-report.html' title='ASFMux progress report'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-321692894688567945</id><published>2009-05-25T20:13:00.000-07:00</published><updated>2009-05-25T20:22:00.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work'/><title type='text'>GSoC Status</title><content type='html'>GSoC's coding period started saturday and, as I've been coding a little since the accepted students announcements, I've got some results.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With a lot of help from Mike, that is also working with ASF, asfmux currently is capable of muxing WMAv2 and WMVv2, which means that most of the base code of the muxer is ready. It still lacks the indexes, but that's what I'm working on these days.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, I still won't be working full speed at GSoC 'till the end of next week, when I'll be on university vacation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you'd like to take a look at the code, my repository is &lt;a href="http://cgit.freedesktop.org/~thiagoss/"&gt;here&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/8516651997079965154-321692894688567945?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/321692894688567945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=321692894688567945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/321692894688567945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/321692894688567945'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/05/gsoc-status.html' title='GSoC Status'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-1977513646898778283</id><published>2009-05-06T18:33:00.000-07:00</published><updated>2009-05-06T18:41:01.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc work gstreamer asf'/><title type='text'>ASF Inspect Tool</title><content type='html'>So, if you are learning/working on ASF media, Microsoft has this tool[1] for Windows (it's free) that might help you, I just found it and haven't really tested it, just explored some files and it is much better than opening them in ghex.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://www.microsoft.com/windows/windowsmedia/forpros/format/asfviewer.aspx"&gt;http://www.microsoft.com/windows/windowsmedia/forpros/format/asfviewer.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-1977513646898778283?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/1977513646898778283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=1977513646898778283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1977513646898778283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1977513646898778283'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/05/asf-inspect-tool.html' title='ASF Inspect Tool'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5623146415718649385</id><published>2009-04-29T20:15:00.000-07:00</published><updated>2009-04-29T21:13:29.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer gsoc asfmux'/><title type='text'>GSoC '09 Start up</title><content type='html'>Finally got some time to post here about me getting accepted into &lt;a href="http://code.google.com/soc/"&gt;GSoC&lt;/a&gt; this year! Yay!!!&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The project&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Basically, develop ASFMux and RTPASFPay (or something more readable than this). ASFMux will be featureful, supporting stream prioritization, stream mutual exclusion and timed scritpting. David Schleef will be my mentor this year.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The GIT Repository (&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a href="http://cgit.freedesktop.org/~thiagoss/"&gt;http://cgit.freedesktop.org/~thiagoss/&lt;/a&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I'll be hosting my code in my personal freedesktop git repositories. Initially I thought on using a branch out of -plugins-bad, but then I thought that it would be better to have a single plugin tree, because people can build and install without destroying their -plugins-bad install.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Current stage&lt;/span&gt;&lt;/div&gt;&lt;div&gt;So far I got a basic muxer stub and started working on sending the header bytes. The code at git has a trunk base folder, but that's because I started working with svn and them migrated to git, I'll remove that in my next push.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just wanted to make the project start public. I'll be updating the status of it here regularly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I need to get some sleep, it's getting late here. Good night!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5623146415718649385?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5623146415718649385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5623146415718649385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5623146415718649385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5623146415718649385'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/04/gsoc-09-start-up.html' title='GSoC &apos;09 Start up'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5348259931508342250</id><published>2009-04-22T07:01:00.000-07:00</published><updated>2009-04-22T07:21:31.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work ufcg'/><title type='text'>GSoC '09 UFCG Status</title><content type='html'>UFCG (Universidade Federal de Campina Grande) is the university I study at, and last year it seems that I was the only one that applied to &lt;a href="http://code.google.com/soc/"&gt;GSoC&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This year, I decided to spread the word about it and motivate people to participate. When the program was announced I kept sending information and tips on the students mailing lists and giving short presentations about the program. Happily, we got 5 students accepted this year! Much better than only 1 last year. They are (name - project - course):&lt;div&gt;&lt;ul&gt;&lt;li&gt;André Dieb Martins - Enlightenment - Electrical Engineering&lt;/li&gt;&lt;li&gt;Danilo Araújo de Freitas - Python - Computer Science&lt;/li&gt;&lt;li&gt;Felipe Ribeiro Nogueira Barbosa - PHP - Computer Science&lt;/li&gt;&lt;li&gt;Thiago de Freitas Oliveira Araújo - NuiGroup - Electrical Engineering&lt;/li&gt;&lt;li&gt;Thiago Sousa Santos (me) - GStreamer - Computer Science&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Congrats you all and to all other accepted students. Time to work hard and complete your projects!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5348259931508342250?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5348259931508342250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5348259931508342250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5348259931508342250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5348259931508342250'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/04/gsoc-09-ufcg-status.html' title='GSoC &apos;09 UFCG Status'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5466231228684766724</id><published>2009-04-09T07:40:00.001-07:00</published><updated>2009-04-09T07:49:55.809-07:00</updated><title type='text'>Telepathy tutorial</title><content type='html'>That was the search I tried at google while I started to study &lt;a href="http://telepathy.freedesktop.org"&gt;telepathy&lt;/a&gt;, but it was amazing and funny the amount of tutorials I found on telepathy (the psychic stuff). I didn't try them, if someone feels up to it, please tell me how did it go :-P&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After reading telepathy wiki, I went to #telepathy and davyd pointed me to the &lt;a href="http://people.collabora.co.uk/~davyd/telepathy-book/"&gt;book&lt;/a&gt; they're writing, and so far it was the better source of information about it. If you are willing to learn about telepathy, try it out and give them feedback.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5466231228684766724?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5466231228684766724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5466231228684766724' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5466231228684766724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5466231228684766724'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/04/telepathy-tutorial.html' title='Telepathy tutorial'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5829215234926645940</id><published>2009-03-27T05:30:00.000-07:00</published><updated>2009-03-27T05:41:42.469-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer work'/><title type='text'>New feature on gst-launch</title><content type='html'>Now you can add the flag --eos-on-shutdown (or simply -e), meaning that you want it to send EOS to the pipeline even when you stop it by sending a sigint (ctrl + c). This way, the EOS will travel through the elements, and they can finish properly their work. This is important for muxers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When -e is enabled, if you press ctrl+c and it hangs while waiting for the EOS, just press again and the default behaviour will be executed (shut down the pipeline immediately and quit).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A example use case for the feature: to receive and mux live streams using gst-launch.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the devels: &lt;a href="http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=5fa36d9f3d8d2fddc5171de927f0640f5ef056b4"&gt;the commit&lt;/a&gt; - &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=575814"&gt;the bug&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5829215234926645940?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5829215234926645940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5829215234926645940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5829215234926645940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5829215234926645940'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/03/new-feature-on-gst-launch.html' title='New feature on gst-launch'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-3723771726387806832</id><published>2009-03-12T16:49:00.000-07:00</published><updated>2009-03-12T17:36:56.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Happy new year!</title><content type='html'>This year had a slow start, but it seems that things are heating up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) I decided to be back on bikes (after 5 years), going twice a week for about 30km, starting at 5 AM. Surprisingly, I'm riding with the same group I used to and they remember me (I was 15 by that time!). Note: I need a new bike.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Google's Summer of Code is starting again this year and I'll try to participate again for GStreamer. From the tasklist, ASF muxing support and mpeg2ts interested me the most. But I'm open to suggestions.&lt;/div&gt;&lt;div&gt;Also, I've been asked to do a small presentation at the university to the Computer Science department (students and teachers) next wednesday. And I've already started reading ASF spec.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) University classes are back (1 year to finish it!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) As my undergraduation is almost over, the amount of requests for small parallel projects has increased, which is good, most of them are simple web-based CRUD applications. They take little time and are a good source of money for a student.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally it is starting! Happy new year, everyone!&lt;/div&gt;&lt;div&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/8516651997079965154-3723771726387806832?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/3723771726387806832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=3723771726387806832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/3723771726387806832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/3723771726387806832'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2009/03/happy-new-year.html' title='Happy new year!'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-9115184068845003435</id><published>2008-09-18T04:12:00.000-07:00</published><updated>2008-09-18T04:34:56.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work qtmux'/><title type='text'>mpeg4 trouble</title><content type='html'>Expanding qtmux to support mpeg4 was going all well, everything was almost ready! Then the ES Descriptor appeared. For .mov files it was only used for AAC description atoms. For mpeg4 it has to be used for every format, and:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;This ES Descriptor has a DecoderConfigDescriptor that has 'objecttype' and 'streamtype' integer fields that would identify the stream format and I can find no info on how to map the formats to those values (other than AAC).&lt;/li&gt;&lt;li&gt;The DecoderConfigDescriptor has some 'bitrate' and 'decoding buffer size' fields which aren't usually provided by GStreamer, so I'm just filling that up with zeros.&lt;/li&gt;&lt;/ol&gt;If there is someone out there that knows how to map formats to those fields or any idea on how GStreamer could provide bitrate (perhaps tag events?) I'd really appreciate some help. I've been stuck for almost a week.&lt;br /&gt;&lt;br /&gt;Also I've started to test the mpeg4 files in a PS3, too bad it doesn't give meaningful error messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-9115184068845003435?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/9115184068845003435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=9115184068845003435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/9115184068845003435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/9115184068845003435'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/09/mpeg4-trouble.html' title='mpeg4 trouble'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-4990205045496640980</id><published>2008-09-09T13:26:00.000-07:00</published><updated>2008-09-09T13:39:37.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work qtmux'/><title type='text'>AAC and MP3 at qtmux</title><content type='html'>I know I just posted, but I'd like to make a separate post for this.&lt;br /&gt;&lt;br /&gt;Jan Schmidt(thaytan) sent me a patch that got AAC and MP3 to work! Thanks!&lt;br /&gt;&lt;br /&gt;And he also sent me an optimization patch!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-4990205045496640980?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/4990205045496640980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=4990205045496640980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4990205045496640980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/4990205045496640980'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/09/aac-and-mp3-at-qtmux.html' title='AAC and MP3 at qtmux'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-932082353924450816</id><published>2008-09-05T06:39:00.000-07:00</published><updated>2008-09-09T13:24:58.783-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work qtmux'/><title type='text'>GSoC summary and thanks</title><content type='html'>&lt;div&gt;Now that Summer of Code ended, I'd like to summarize what has been done around qtmux and some random thoughts around it.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Firstly, I'd like to thank the guys from GStreamer for letting me participate with them, specially to Win (my mentor) and Christian(AFAIK, the org leader for GSoC). Also to those that answered my daily questions at IRC (mainly Mike, David and Tim). This was a great experience, learned lots of stuff about muxing, GStreamer and quicktime/mp4 file formats. Thanks also to the guys from pitivi for reporting problems and their effort for already adding qtmux to it.&lt;br /&gt;&lt;br /&gt;It feels great to see the community actively using, testing, reporting bugs and requesting features at this early stage of qtmux, this is really motivating! Also, it will be moving soon to GStreamer repos. That means more developers working on it, consequently better quality code and more supported formats.&lt;br /&gt;&lt;br /&gt;Looking at the application proposal, most of the formats promised are already working, but qtmux still lacks the flavor selection. That's why the next step is adding isomedia ('isom') output format, some work is already commited, but it is still at an early experimental state.&lt;br /&gt;&lt;br /&gt;Lastly, another thanks to you all (GStreamer and Google), I really enjoyed participating and I hope that qtmux is already usable and meeting the expectations.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-932082353924450816?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/932082353924450816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=932082353924450816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/932082353924450816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/932082353924450816'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/09/gsoc-summary-and-thanks.html' title='GSoC summary and thanks'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-6932218755462018750</id><published>2008-08-30T08:27:00.000-07:00</published><updated>2008-09-01T06:54:13.039-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work qtmux'/><title type='text'>A lot of help</title><content type='html'>The last week has been unusually productive due to 3 people helping me with qtmux (well, everyday I get help from people at #gstreamer, but those 3 were directly helping).&lt;br /&gt;&lt;br /&gt;In a non chronological order:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edward Hervey (bilboed at IRC) did some changes to faac plugin and now we can have qtmux muxing mov files that contain AAC which play at totem (gstreamer) and mplayer. (Quicktime Player still can't play those).&lt;/li&gt;&lt;li&gt;Chris Cooksey is a possible future user of qtmux (one that really understands from the mov container) and while testing qtmux spotted 7 or 8 problems in the resulting files and reported me, so we fixed them (most related to timescale, dates and durations in the file).&lt;/li&gt;&lt;li&gt;David Schleef (ds at IRC) sent me a patch for adding Dirac support into qtmux (it works!).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Thanks to you 3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-6932218755462018750?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/6932218755462018750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=6932218755462018750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6932218755462018750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/6932218755462018750'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/08/lot-of-help.html' title='A lot of help'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-3950087915089272814</id><published>2008-08-26T15:29:00.000-07:00</published><updated>2008-08-26T15:37:56.365-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>finally h264!</title><content type='html'>Just for letting you know: qtmux now supports h264  (and also a-law and mu-law)&lt;br /&gt;&lt;br /&gt;Yay! \o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-3950087915089272814?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/3950087915089272814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=3950087915089272814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/3950087915089272814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/3950087915089272814'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/08/finally-h264.html' title='finally h264!'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-2743811548993800190</id><published>2008-08-22T05:57:00.000-07:00</published><updated>2008-08-22T07:32:05.085-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>Update on qtmux</title><content type='html'>I've been through the semester final exams the last weeks (my university timeline is all messed up) and time was short, so I couldn't update here with news on qtmux, but the semester in now finally over, so here are the new features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;raw formats (both audio and video) and mp3 are working correctly in all players I tested (totem, vlc, mplayer and quicktime)&lt;/li&gt;&lt;li&gt;support for h263 has been added and also works on the players above&lt;/li&gt;&lt;li&gt;support for aac and amr has been added and it still doesn't work at quicktime, but works in totem and mplayer (vlc went nuts on my machine, and I still haven't got it to work again)&lt;/li&gt;&lt;li&gt;ilst atom metadata support (used by itunes and qtdemux) has been added&lt;/li&gt;&lt;/ul&gt;I couldn't get aac and amr working, after some days searching for specs and testing applications that could generate qt files with amr or aac with no success, I noticed too much time was being lost and started working on other features.&lt;br /&gt;None of the applications I tested could generate a qt file (with amr or aac) that quicktime would actually play, and I couldn't find any useful spec. I also tried inspecting bytes in some files that played successfully, but just looking at them wasn't enough, the different bytes are easy to find, but not easy to understand.&lt;br /&gt;&lt;br /&gt;I said that I would add flavor selection in the previous post, but I was advised to work on some widely used formats first, so I did it.&lt;br /&gt;&lt;br /&gt;GSoC is comming to an end in the next days, but work won't, qtmux has still a lot to be worked on and I'll keep it up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-2743811548993800190?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/2743811548993800190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=2743811548993800190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2743811548993800190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/2743811548993800190'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/08/update-on-qtmux.html' title='Update on qtmux'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-8383231193707122138</id><published>2008-07-22T10:44:00.000-07:00</published><updated>2008-07-22T10:56:39.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>Good news!</title><content type='html'>Qtmux has just generated the first mov files that have audio and video that plays synchronously. MPlayer and GStreamer were able to successfully play it, VLC couldn't (not sure why, yet). Still have to test it in another players. But this is a huge step.&lt;br /&gt;&lt;br /&gt;Now, I'll probably be working on adding flavour selection (qt, mp4 or 3gpp) using a property in the element (maybe using caps?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-8383231193707122138?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/8383231193707122138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=8383231193707122138' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8383231193707122138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8383231193707122138'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/07/good-news.html' title='Good news!'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-1453817194625270297</id><published>2008-07-21T11:32:00.000-07:00</published><updated>2008-07-21T11:41:07.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>Raw video into qtmux</title><content type='html'>Raw video formats were added to qtmux: 'rgb' and 'yuv' (only one 'yuv' format, but easily extensible to others). The current state is that it is possible to package video 'xor' audio into a mov file, and they are played fine.&lt;br /&gt;&lt;br /&gt;What's keeping me busy now is to add support for synchronized audio and video. Some work has already been done, but it is still not as expected. I've re-read the spec trying to identify what info am I missing, still no clue, but I'll keep looking :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-1453817194625270297?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/1453817194625270297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=1453817194625270297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1453817194625270297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/1453817194625270297'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/07/raw-video-into-qtmux.html' title='Raw video into qtmux'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5572173517774412116</id><published>2008-07-10T12:29:00.001-07:00</published><updated>2008-07-10T12:37:47.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>New audio formats for qtmux</title><content type='html'>Support for 8-bit and 16-bit pcm audio have just been added to qtmux.&lt;br /&gt;&lt;br /&gt;I'm stepping now into video data. As it requires less knowledge about profiles and codecs, I'll start with raw rgb video. And then try to insert one format for compressed data (h263 or h264).&lt;br /&gt;&lt;br /&gt;Inserting 8bit and 16bit pcm audio made me found a possible bug in qtdemux, already reported in bugzilla: #542410&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5572173517774412116?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5572173517774412116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5572173517774412116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5572173517774412116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5572173517774412116'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/07/new-audio-formats-for-qtmux.html' title='New audio formats for qtmux'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-8144140396411215318</id><published>2008-07-08T03:44:00.000-07:00</published><updated>2008-07-08T03:55:09.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>The first one</title><content type='html'>I should announce that the first mp4 file has been created using qtmux (at least, the first one capable of playing nicely). It is still only able of handling mp3 audio. But that means that the underlying mp4 library reached some stable level and now the work focus should be into the qtmux element itself.&lt;br /&gt;&lt;br /&gt;Next steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add another audio format support (probably raw audio)&lt;/li&gt;&lt;li&gt;Add video support (h263? Suggestions?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add multiplexing support (finally!)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I thought I was going to reach this goal before, but my graduation required some extra hours in the last weeks and mp4 atoms' fields given me some headache on understanding its semantics, mainly in how to define what media type (and parameters) for a track. 'qtdemux' has been a great help, it outputs some really helpful debug messages. Thanks for the guys who developed it! Great job!&lt;br /&gt;&lt;br /&gt;Code is here: &lt;a href="http://gforge.embedded.ufcg.edu.br/scm/?group_id=122"&gt;http://gforge.embedded.ufcg.edu.br/scm/?group_id=122&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-8144140396411215318?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/8144140396411215318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=8144140396411215318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8144140396411215318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/8144140396411215318'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/07/first-one.html' title='The first one'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-7383645586967340429</id><published>2008-06-19T17:10:00.000-07:00</published><updated>2008-06-20T08:01:52.795-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded gstreamer gsoc work'/><title type='text'>Refactoring</title><content type='html'>I should have posted this before, but the code for GSoC is already hosted online at &lt;a href="http://gforge.embedded.ufcg.edu.br/scm/?group_id=122"&gt;http://gforge.embedded.ufcg.edu.br/scm/?group_id=122&lt;/a&gt; (there's info about checkout there, and also you can browse the code online)&lt;br /&gt;&lt;br /&gt;After writing a lot of repetitive code for atoms serialization I decided to stop and rethink it. So, creating a function for serializing each type of property an atom can have made the code much shorter and better to read. This refactoring proved even more useful, when I found out that mp4 files had to be big endian, I did the changes to support it in no time, as I only had one spot to change.&lt;br /&gt;&lt;br /&gt;Other than that, I've been using qtdump for validating my generated files, but sometimes it only reports "unsupported file type", and I need more than that. So, I'm also adding more verbosity to qtdump (and also qtinfo). I'm trying to make it able to tell &lt;span style="font-style: italic;"&gt;why&lt;/span&gt; it is not a valid mp4 file.&lt;br /&gt;&lt;br /&gt;As always, comments and critics on my code are very welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-7383645586967340429?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/7383645586967340429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=7383645586967340429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7383645586967340429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7383645586967340429'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/06/refactoring.html' title='Refactoring'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-5450680000784209370</id><published>2008-05-13T06:11:00.000-07:00</published><updated>2008-05-13T06:58:51.082-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work'/><title type='text'>GSoC First Lines of Code</title><content type='html'>Since last week, I started coding the first lines of the qtmux (yes, that will be the name of the new plugin/element).&lt;br /&gt;The muxer is still at an early 'draft state', but what concerns me more at this point is creating the MPEG4 Atoms hierarchy to be used by the muxer. This hierarchy will last during the whole project and it could cause some headaches later.&lt;br /&gt;&lt;br /&gt;I thought of two main options:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a gobject class hierarchy: it is better organized and we could have some common interfaces, but it would be probably too much of a overhead&lt;/li&gt;&lt;li&gt;Create a 'struct hierarchy': composing structs is pretty easy and straightforward to do. Having common structs at the top place might also provide some common methods, but probably difficult to maintain&lt;/li&gt;&lt;/ul&gt;Structs seems better to me at this point, I'm for the KISS (Keep It Simple, Stupid) principle. And I also don't expect to be changing those atoms often (after my code gets stable, at least). But, of course, I'm accepting comments and sugestions and critics.&lt;br /&gt;&lt;br /&gt;Other than that, I'll be starting a repository to put the code in the following days, so that interested people might take a look at it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-5450680000784209370?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/5450680000784209370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=5450680000784209370' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5450680000784209370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/5450680000784209370'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/05/gsoc-first-lines-of-code.html' title='GSoC First Lines of Code'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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-8516651997079965154.post-7938806420603456899</id><published>2008-04-24T04:58:00.000-07:00</published><updated>2008-04-24T05:13:58.862-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc gstreamer work'/><title type='text'>Let the games begin</title><content type='html'>GSoC has just started this year (I've been accepted :D) and I'll use this space to provide information about my ongoing work. My project  is to create and develop the quicktimemp4mux plugin for GStreamer.&lt;br /&gt;&lt;br /&gt;For the past weeks, I've been studying specs and code on mpeg4. Right now, I'm starting to think on how to validate the resulting files my plugin will be able to generate. Some options that have already been suggested to me:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use qtdump to inspect the files&lt;br /&gt;&lt;/li&gt;&lt;li&gt;use a GStreamer pipeline to play the files&lt;/li&gt;&lt;/ul&gt;Other than that, I'm also wondering what could be my first goal at the plugin implementation, and I think that being able to create a mpeg4 file that contains only one audio track (possibly mp3) would be a nice start.&lt;br /&gt;&lt;br /&gt;That's it, I hope that GSoC will be fun and, mostly, that I manage to finish a good quality plugin so that everybody gets happy :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8516651997079965154-7938806420603456899?l=thiagossantos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thiagossantos.blogspot.com/feeds/7938806420603456899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8516651997079965154&amp;postID=7938806420603456899' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7938806420603456899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8516651997079965154/posts/default/7938806420603456899'/><link rel='alternate' type='text/html' href='http://thiagossantos.blogspot.com/2008/04/let-games-begin.html' title='Let the games begin'/><author><name>thiagoss</name><uri>http://www.blogger.com/profile/03801317428445462029</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></feed>
