<?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-6344514708575417646</id><updated>2011-09-27T20:16:49.219-07:00</updated><title type='text'>Saya Video Editor official Blog</title><subtitle type='html'>Update: This project was dead, but it's back! Unfortunately my daytime job keeps me somewhat busy, so don't expect the project to emerge in a couple of years.

Saya is a programming project aimed to create a cross-platform, versatile, extensible Nonlinear video editor with features available in commercial editors like Adobe Premiere, Sony Vegas or Edius Pro. The project was started in June, 2008, died in 2009 and was revived in October 2010.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6594917039182247851</id><published>2011-04-30T15:36:00.000-07:00</published><updated>2011-04-30T15:46:05.437-07:00</updated><title type='text'>Codec Plugins, and image reading!</title><content type='html'>So I've managed to finish writing the core of the codec plugins. As a result, I've been able to code an image-reading plugin using Qt's built-in image library. There are still some stability issues (i.e. crashing), but now files can be opened with the appropriate codec thanks to codec plugin auto-detection.&lt;br /&gt;&lt;br /&gt;Here's a snapshot of a double-click on an imported resource, in this case, a .jpeg file (A nice Ultraman painting by &lt;a href="http://brucewhite.deviantart.com/gallery/"&gt;Bruce White&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-N2UeiMSx-kU/TbyOlfUOjvI/AAAAAAAAAIA/3gjVWDt1-3c/s1600/reading_images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/-N2UeiMSx-kU/TbyOlfUOjvI/AAAAAAAAAIA/3gjVWDt1-3c/s400/reading_images.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6594917039182247851?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6594917039182247851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6594917039182247851' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6594917039182247851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6594917039182247851'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2011/04/codec-plugins-and-image-reading.html' title='Codec Plugins, and image reading!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-N2UeiMSx-kU/TbyOlfUOjvI/AAAAAAAAAIA/3gjVWDt1-3c/s72-c/reading_images.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7423907805673859596</id><published>2010-12-10T22:15:00.000-08:00</published><updated>2010-12-10T22:15:24.909-08:00</updated><title type='text'>New playback controls (v2)</title><content type='html'>Slowly working on the look and feel of our playback controls.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_iBNw06Dsj6g/TQMW8GGwUXI/AAAAAAAAAH0/e2yeLxRPX7o/s1600/playback_controls2.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_iBNw06Dsj6g/TQMW8GGwUXI/AAAAAAAAAH0/e2yeLxRPX7o/s320/playback_controls2.jpg" tooltip="beefree-tip" width="303" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7423907805673859596?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7423907805673859596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7423907805673859596' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7423907805673859596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7423907805673859596'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2010/12/new-playback-controls-v2.html' title='New playback controls (v2)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iBNw06Dsj6g/TQMW8GGwUXI/AAAAAAAAAH0/e2yeLxRPX7o/s72-c/playback_controls2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-888094409202388587</id><published>2010-11-15T22:17:00.000-08:00</published><updated>2010-11-15T22:21:57.468-08:00</updated><title type='text'>New Playback controls</title><content type='html'>Hello everyone!&lt;br /&gt;&lt;br /&gt;Just wanted to show off the new playback controls. They're integrated into one independent Qt Widget. They're 90% functional (still need to write a few routines, and some testing still needs to be done) and user friendly:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clicking on an area of the seek slider does not jump to undefined locations anymore, but to the exact position you want. This was possible thanks to the slick event filtering code in Qt.&lt;/li&gt;&lt;li&gt;The shuttle slider now shows a tooltip telling you the current playback speed.&lt;/li&gt;&lt;li&gt;The seek slider shows the exact time corresponding to the mouse cursor position (a-la Youtube(TM) seeking)&lt;/li&gt;&lt;li&gt;The Play/Stop button has been magnified for easy mouse access.&lt;/li&gt;&lt;li&gt;The Mouse wheel has been disabled on the seek slider and the shuttle, but enabled in the volume and the jog.&lt;/li&gt;&lt;/ul&gt;Behold, ladies and gentlemen, our future playback controls!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_iBNw06Dsj6g/TOIhmrpfQgI/AAAAAAAAAHw/uzat47s5m2s/s1600/new_playback_controls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://4.bp.blogspot.com/_iBNw06Dsj6g/TOIhmrpfQgI/AAAAAAAAAHw/uzat47s5m2s/s320/new_playback_controls.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-888094409202388587?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/888094409202388587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=888094409202388587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/888094409202388587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/888094409202388587'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2010/11/new-playback-controls.html' title='New Playback controls'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iBNw06Dsj6g/TOIhmrpfQgI/AAAAAAAAAHw/uzat47s5m2s/s72-c/new_playback_controls.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-529858683746010690</id><published>2010-11-13T18:33:00.000-08:00</published><updated>2010-11-13T18:33:22.632-08:00</updated><title type='text'>I'm back!!! (kinda)</title><content type='html'>Dear everyone: After having to bear what seemed to be the worst year of my entire life, suffering the flu, unemployment, a huge debt and personal relationships problem, I have a couple of good news for ya.&lt;br /&gt;&lt;br /&gt;1) I have a stable job!! And a very good one, to be honest. It doesn't give me too much free time, but it has helped me to develop my programming skills. My latest toy was a JSON to HTML template engine (this project was actually what led me to the next news).&lt;br /&gt;&lt;br /&gt;2) Development on Saya has been restarted!... kinda. Don't get your hopes up, Saya is from now on considered &lt;b&gt;a long-term garage project&lt;/b&gt;, with very little chances of succeeding. But I'm committed to at least deliver a usable GUI for a video editor. Instead of focusing on the multithread processing and video handling, I'll start over with the GUI now. Later, if the GUI seems good, and the widgets work, I'll work on tying Saya to an existing video editing framework.&lt;br /&gt;&lt;br /&gt;3) The latest development on the UI is the playback control, now with a jog dial for easy frame skipping:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_iBNw06Dsj6g/TN9JqRpgdgI/AAAAAAAAAHs/987yuT8qGC8/s1600/playbackcontrol.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="90" src="http://1.bp.blogspot.com/_iBNw06Dsj6g/TN9JqRpgdgI/AAAAAAAAAHs/987yuT8qGC8/s320/playbackcontrol.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;(Yes, the buttons are ugly, but later we can work on that). Next: Making the&amp;nbsp; shuttle control (to the&amp;nbsp; left of the "Display" text) pretty, and functional.&lt;br /&gt;&lt;br /&gt;4) If you would like to join the project and help me perform code  archaeology on the project (and find out what the hell I was doing on  some files), you're welcome to join.&lt;br /&gt;&lt;br /&gt;See ya!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-529858683746010690?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/529858683746010690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=529858683746010690' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/529858683746010690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/529858683746010690'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2010/11/im-back-kinda.html' title='I&apos;m back!!! (kinda)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iBNw06Dsj6g/TN9JqRpgdgI/AAAAAAAAAHs/987yuT8qGC8/s72-c/playbackcontrol.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-8046947245623193838</id><published>2010-01-10T05:41:00.000-08:00</published><updated>2010-01-10T05:58:50.089-08:00</updated><title type='text'>I'm sorry to inform you that the project is officially dead.</title><content type='html'>Dear fans and enthusiasts:&lt;br /&gt;&lt;br /&gt;As much as I dislike doing this, it's time to accept reality and face the fact that I don't have any time left to work on the project.&lt;br /&gt;&lt;br /&gt;Saya has been really a great project for me, and it filled me with hope and fun. It was a great garage project, but it lacks something critical for an open source project: Leadership. &lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;Let me tell you the story of why the project "failed". Actually, it's not the project that failed, but me. It's not about Saya but about me, and I hope that my failure will enlighten other Open Source developers out there, so that they can avoid making the same mistakes that I made.&lt;br /&gt;&lt;br /&gt;No, the project didn't fail. It's not the project's fault. It was my fault and mine only. I want to be clear on this: I still believe that the specs are good, and that the project is viable and could become successful if I had free time to dedicate myself to it (if I received, say, a million dollars, after 6 months I would be able to finish my daytime job and dedicate myself completely to the project). I say this because I want to defend the idea behind the project (using C++ and cross-platform libraries instead of a development language like Python with an unstable spec and/or linux-only libs) and emphasize that the reason why the project "failed" (again, in quotation marks) is not because it was a bad idea, but because I lacked what it took to make it grow and mature. It was a project with a great potential, and I failed to take good care of it.&lt;br /&gt;&lt;br /&gt;If someone wants to take my place and rewrite the main part of the project from scratch, by all means, please contact me. It will take a lot of time to understand the project, maybe even a full year, but once you do, I'm sure you'll be able to do a better job than I did.&lt;br /&gt;&lt;br /&gt;So, here's the story: &lt;br /&gt;&lt;br /&gt;The project was technically unstable when a personal crisis arrived (I got sick with AH1N1, all in the middle of the economic crisis of 2008/09, WHILE I was unemployed - go figure). You could say that the project got infected with the swine flu and died. Worst of all, we were in the middle of a heavy refactoring (switching from wxWidgets to Qt) and I was fixing various bugs in the still-under-development audio/video library.&amp;nbsp; How could I compare the circumstances? Imagine you're performing a heart transplant on a very weak patient, and then an earthquake arrives and the hospital is in a blackout. You're the only doctor around and then you get hit by a lamp that just fell from the ceiling. You survive, but the patient dies. This is what happened to Saya.&lt;br /&gt;&lt;br /&gt;As an apathetic open source programmer who had no interest in the economic world, Wall Street and all that, and not living outside the US, I had severely underestimated the consequences of the economic crisis. I thought that with my technical skills, I would be able to easily get another job. Welcome to the real world. This, and due to family situations, I wasn't able to remember that the project even existed. It disappeared completely from my depressed mind. See, I lived with my parents, and I discovered we had a huge credit card debt (not my fault). Being unemployed, all this gave me a nervous breakdown around July/Aug. 2009, which only made it worse. So the project was completely out of the radar for me. All I could think about was to survive, get a job, get it fast, work overtime to pay some debts (which we still have), and now save enough money to get my own house and find a girlfriend (did I mention I got hit by the mid-30's crisis, when I hadn't even considered getting a girlfriend?).&lt;br /&gt;&lt;br /&gt;In other words, the worst of Murphy's Law applied to me. What would&amp;nbsp; go wrong, did go wrong, and it went wrong when it was the worst moment to go wrong, around the worst circumstances, and when going wrong would have the worst consequences.&lt;br /&gt;&lt;br /&gt;It would have been different without the AH1N1 outbreak, without the 2009 economic crisis, without the family credit card problem and without my depression. Perhaps the project would have reached 1.0 by now, like the Openshot Video Editor project did.&lt;br /&gt;&lt;br /&gt;So, after clarifying the personal circumstances around the project, I'd like to go to the technical part and my mistakes when starting the project.&lt;br /&gt;&lt;br /&gt;Around a year and a half ago, I started the project from scratch because I needed a working cross-platform video editor. After starting it, I realized that to start an open source project required much more than technical skills. It required human skills, i.e. leadership.&lt;br /&gt;&lt;br /&gt;It took me a lot of effort to design the website, the project infrastructure, i.e. class diagrams, sell the idea to other programmers in forums, and gather a team.&lt;br /&gt;&lt;br /&gt;For the first few months I welcomed enthusiasts, some of whom, unfortunately, lacked the technical skills and/or the perseverance that an Open Source programmer requires. Some of them just wanted a fun project to participate in; others weren't committed and never attended the monthly meetings. Others just wanted a nice stamp on their resumes. So it took me several months to gather a working team.&lt;br /&gt;&lt;br /&gt;Then came the decision to choose a toolkit.&amp;nbsp; Originally, I had chosen wxWidgets because of it being cross-platform. But it seems that this toolkit isn't quite welcome in the Linux world. It's the "ugly duckling" of GUI toolkits. People just don't take it seriously, and its community is somewhat isolated. So I realized the need to switch to Qt (which by now is stable, LGPL and with tons of features). It was needed, otherwise we would end with a crippled UI - something you don't want to deal with in a Video Editor.&lt;br /&gt;&lt;br /&gt;Another decision I made was to choose the Audio/Video toolkit. Around the time, I was forced to choose between GStreamer+GNonlin and MLT. Having glanced at&amp;nbsp; them, I found that the codec parts of the toolkits were tightly coupled to the editing parts. It was all or nothing, and which toolkit I chose would dictate the architecture for many of the classes.&lt;br /&gt;&lt;br /&gt;So I decided to make a wrapper and stay only with the codec parts. The wrapper was going fine, and I was technically proficient to make a good wrapper and at the same time develop a low-level audio / video library that handled the streaming. I said proficient, because I was in the middle of doing all this when the crisis arrived. I could never finish the core library for the project.&lt;br /&gt;&lt;br /&gt;So, what was my contribution to the project's failure? After studying several leadership and economic books (kudos to Robert Kiyosaki for his Rich Dad Poor Dad series of books, they made me understand many things we all need to know), I realized that starting an Open Source Project is 99% similar to starting your own company. If you want it to be successful, that is.&lt;br /&gt;&lt;br /&gt;Before I start with this comparison, allow me to mention the &lt;a href="http://en.wikipedia.org/wiki/Bus_factor"&gt;"bus factor"&lt;/a&gt;. A project's Bus Factor is an irreverent measurement of concentration of information in a single person, or very few people. The bus factor is the total number of key developers who would need to be incapacitated, as by getting hit by a bus, to send the project into such disarray that it would not be able to proceed. Getting hit by a bus could take many different forms. This could be a person taking a new job, having a baby, changing their lifestyle or life status: the impact would have the same effect. In my case, it was the flu, the crisis, and our personal economic problems.&lt;br /&gt;&lt;br /&gt;So yes, at the time, Saya had a Bus Factor of 1. I was aware of this. I needed to finish the audio/video framework and finish the Qt conversion as soon as I could. Otherwise, the project might not make it. And it didn't.&lt;br /&gt;&lt;br /&gt;Having said this, please let me continue with the similarities between an Open Source project and a Startup.&lt;br /&gt;&lt;br /&gt;According to Robert Kiyosaki, for a company to be succesful you need the following areas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Product&lt;/li&gt;&lt;li&gt;Legal&lt;/li&gt;&lt;li&gt;Systems&lt;/li&gt;&lt;li&gt;Communications&lt;/li&gt;&lt;li&gt;Cash flow&lt;/li&gt;&lt;/ul&gt;Product: The product is the project, as a software. It was in the process of being developed.&lt;br /&gt;&lt;br /&gt;Legal: In this, the Open Source / Free Software community has a great advantage. It has the General Public License, and the aid of the Free Software Foundation to deal with companies stealing our code for their profit.&lt;br /&gt;&lt;br /&gt;Systems: This is a fundamental part of an open source project. In a company, the system is the office and the technical parts of the product / service. For open source projects, you need to develop good specs and documentation so that everyone can understand the project in case you're unavailable. You also need to have a website, a forum, a good issue tracker like Sourceforge or Berlios, and possibly a wiki.&lt;br /&gt;&lt;br /&gt;Communications: Another important part. It covers part of what I mentioned under "systems", but also needs you to be a good salesman and sell the idea to others.&lt;br /&gt;&lt;br /&gt;Cash flow: Without a good cash flow arriving to all the team members (which, in case of a company, it comes from the sales), the project is doomed to fail. No cash flow, no time to develop. If there's no time to develop, then all the other parts of the project start to crumble: People stop going to meetings, they don't read their emails, important issues stop being addressed, they just don't have time to fix bugs (patches welcome), and it's only matter of time until the project dies.&lt;br /&gt;&lt;br /&gt;As you can see, in Saya, everything was working so far. The design and implementation was going well (product), we were using the GPLv3 (legal), we had a nice website and bug tracking system (systems), we had an IRC channel and held monthly meetings, and the blog has been receiving contributions and support from all around the world (communications).&lt;br /&gt;&lt;br /&gt;And then we come to cash flow. I won't need to repeat myself, but you can understand why everything went down.&lt;br /&gt;&lt;br /&gt;If you start an Open Source project, please take consider these hints:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Make sure you got a stable income. This is especially important if you're the project leader.&lt;/li&gt;&lt;li&gt;Make sure that the people you gather at the beginning are committed to the project. Even if you start with only one good contributor, having that one is better than having 5 or 6 people that you delegate tasks to, and then don't show up. Otherwise you'll lose several months reteaching what you had to teach the people who left the project.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do NOT try to do it all by yourself. It's much better if you have a partner who can understand your technical view of the project, and can assist you with the modules you write. Make sure the project has a bus factor of 2, at least.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do spend some effort on getting donations. Don't wait for the project to succeed to then ask for donations. First comes the cash flow, then everything else. Tell the donors beforehand that it's not probable the project will survive, so it's a risk their money will go to the garbage. But still, if you believe the project merits having a good donation income, train yourself in sales and practice. Find people who want to contribute. Go search for philantropists who can give the project a constant cash source. At least for you, if you feel you're going to have economic troubles.&lt;/li&gt;&lt;li&gt;Make sure your life is stable at the moment (no emotional problems, no economic problems, no pending baby to arrive), at least until the project reaches critical mass.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;A closing note:&lt;br /&gt;&lt;br /&gt;It is very, very sad for me to cancel this project, but I can't lie to myself anymore. I don't have the time to work on the project, and to be honest, I somewhat lost interest. Right now I have to focus on paying those debts and get a house for me and my future wife and children, and ... of course, on getting a wife in the first place. I'm too old right now, around 35, and time is running out for me.&lt;br /&gt;&lt;br /&gt;I really can't express my grief in taking this decision. The project had so much potential, it was like my own child. The worst part is knowing that after given so much hope and ideas, I saw the project turn to dust in my own hands. It's very painful. I want to say "no, I won't give up, the project needs me, I still can do it", but that would be fooling myself and giving false hope to others.&lt;br /&gt;&lt;br /&gt;To the person who donated $20 to my Paypal account, I'm very sorry. I thank you for your donation... if only I had 1000 more people who donated when I needed that money, the project could have made it. But now I'm not able to continue on the project, even if I received that million dollars. I signed a contract and I need at least 6 months to be free to work on the project again... *if* I get a good donation to be able to work full time on the project for at least two years.&lt;br /&gt;&lt;br /&gt;At least I'm happy that the &lt;a href="http://www.openshotvideo.com/"&gt;Openshot Video Editor&lt;/a&gt;, has matured enough and reached version 1.0. Congratulations to you.&lt;br /&gt;&lt;br /&gt;Having said this, I thank everyone who contributed to the project. Thank you, and farewell.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Rick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-8046947245623193838?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/8046947245623193838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=8046947245623193838' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8046947245623193838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8046947245623193838'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2010/01/im-sorry-to-inform-you-that-project-is.html' title='I&apos;m sorry to inform you that the project is officially dead.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1759909706952336544</id><published>2009-07-10T17:24:00.001-07:00</published><updated>2009-07-10T17:27:19.669-07:00</updated><title type='text'>Is it dead yet? No. There is hope.</title><content type='html'>Hi everyone. Just wanted to remind you that I'm still willing to work on Saya. I've been through a terrible chain of depression and bad luck, but I've finally overcome it. I got a new job opportunity, and this one really looks promising.&lt;br /&gt;&lt;br /&gt;I hope that soon my schedule will stabilize so I'll be able to work on Saya after nearly 4 months of inactivity.&lt;br /&gt;&lt;br /&gt;If you want to read more about what has happened, please read the &lt;a href="http://saya-dev.blogspot.com/2009/07/personal-situations-update-july-10-2009.html"&gt;related entry &lt;/a&gt;on the unofficial blog.&lt;br /&gt;&lt;br /&gt;Thanks for staying in touch.&lt;br /&gt;- Rick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1759909706952336544?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1759909706952336544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1759909706952336544' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1759909706952336544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1759909706952336544'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/07/is-it-dead-yet-no-there-is-hope.html' title='Is it dead yet? No. There is hope.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6802292343153505624</id><published>2009-04-30T10:15:00.000-07:00</published><updated>2009-04-30T10:19:27.670-07:00</updated><title type='text'>Project stalled for reasons beyond our control</title><content type='html'>Bad news. With my bad luck in finding a job, the current flu epidemic and having to deal with an unexpected depression (mostly based on my economic situation), I can't keep working on Saya until I get my life back.&lt;br /&gt;&lt;br /&gt;So the project is stalled and the meetings are suspended until further notice (which I hope will be in a couple of months in the best case).&lt;br /&gt;&lt;br /&gt;I hope to come back soon with good news.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Rick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6802292343153505624?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6802292343153505624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6802292343153505624' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6802292343153505624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6802292343153505624'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/04/project-stalled-for-reasons-beyond-our.html' title='Project stalled for reasons beyond our control'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4315472489307090847</id><published>2009-04-06T15:19:00.001-07:00</published><updated>2009-04-06T15:32:47.492-07:00</updated><title type='text'>Saya Developers' meeting #6 (28/03/2009) Summary of Activities</title><content type='html'>This is a brief summary about what has been discussed in the fifth Saya-VE developers meeting.&lt;br /&gt;&lt;br /&gt;About the team:&lt;br /&gt;&lt;br /&gt;* Agustin has not been seen since the last meeting. We're assumming that he just left the team.&lt;br /&gt;&lt;br /&gt;* This happened after the meeting. I got an email from another volunteer wanting to join. I let him experiment with the latest snapshot of our current code in the meantime.&lt;br /&gt;&lt;br /&gt;* Due to his good work so far, Alex was given write access to the SVN repository.&lt;br /&gt;&lt;br /&gt;About the tasks:&lt;br /&gt;&lt;br /&gt;* The Qt conversion is around 60% done. The welcome dialog is completed, the new project dialog layout is done (C++ implementation pending). The playback controls still need to be adapted into the video player.&lt;br /&gt;&lt;br /&gt;* Tasks for Rick (me): Since I couldn't advance at all this month (workload / health reasons) I still have to convert the main window and the video playback controls.&lt;br /&gt;&lt;br /&gt;* Tasks for Lubomir: Write the developers' guide for Windows (it needs to be changed as now we use Qt, not wxWidgets). He had some technical problems writing them, but he's working on it.&lt;br /&gt;&lt;br /&gt;* Tasks for Brad: Get to compile Saya on Windows with Qt, and help Lubomir in doing so.&lt;br /&gt;&lt;br /&gt;* Tasks for Alex: Study more Qt, play around with the code.&lt;br /&gt;&lt;br /&gt;* Tasks for Rigo: Implement in C++ the new project dialog that he had designed; write a market-oriented "mission statement" document.&lt;br /&gt;&lt;br /&gt;Other Issues worth discussing:&lt;br /&gt;&lt;br /&gt;* Jeff found a &lt;a href="http://eugenia.gnomefiles.org/2008/01/20/video-editor-mockup/"&gt;blog entry about Video Editing&lt;/a&gt;. Basically we agreed with the blog entry in that there are currently not working user-friendly video editors.&lt;br /&gt;&lt;br /&gt;About the next meeting:&lt;br /&gt;&lt;br /&gt;* The next meeting will take place on Saturday, May 2, 2009, 11AM CDT (-0600).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4315472489307090847?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4315472489307090847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4315472489307090847' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4315472489307090847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4315472489307090847'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/04/saya-developers-meeting-6-28032009.html' title='Saya Developers&apos; meeting #6 (28/03/2009) Summary of Activities'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6891331622924518614</id><published>2009-04-06T12:20:00.001-07:00</published><updated>2009-04-06T12:28:09.153-07:00</updated><title type='text'>Saya Developer's meeting #6 (28/03/2009) chat log</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;* Now talking on #saya-dev&lt;br /&gt;&amp;lt;rick_777&amp;gt; This meeting is officially open.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; * BANG *&lt;br /&gt;&amp;lt;rick_777&amp;gt; heh&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; first task assigment status?&lt;br /&gt;&amp;lt;rick_777&amp;gt; First of all, i'd like to apologize for my lack of work. This month I couldn't do anything. zip. nada. zero.&lt;br /&gt;&amp;lt;rick_777&amp;gt; (I got too much work, then i got sick, then i went on vacations)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; you had the conversion to QT assigment&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well I guess that's still pending from my part, but I'll resume work this week :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo, what task was assigned to you?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; new project dialog&lt;br /&gt;&amp;lt;rick_777&amp;gt; status?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; status: done&lt;br /&gt;&amp;lt;rick_777&amp;gt; Cool!&lt;br /&gt;&amp;lt;rick_777&amp;gt; Have you uploaded to SVN yet?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; yup&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok... who's next?&lt;br /&gt;&amp;lt;mau5&amp;gt; i'm done with the gmerlin document&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alright! Please send it to the mailing list.&lt;br /&gt;&amp;lt;mau5&amp;gt; and that demo application; mixing bewteen qt and gmerlin&lt;br /&gt;&amp;lt;rick_777&amp;gt; hmmm about the application, just mail us the source code (zipped)&lt;br /&gt;&amp;lt;mau5&amp;gt; yes, it needs a review&lt;br /&gt;&amp;lt;rick_777&amp;gt; oh wait, you're using gmerlin...&lt;br /&gt;&amp;lt;rick_777&amp;gt; well send your code anyway.&lt;br /&gt;&amp;lt;mau5&amp;gt; i send it few weeks ago&lt;br /&gt;&amp;lt;rick_777&amp;gt; Good :)&lt;br /&gt;&amp;lt;mau5&amp;gt; it's uploaded on the saya gmail group&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; SeekerAll.tar.gz  ?&lt;br /&gt;&amp;lt;mau5&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok... (man, I feel disoriented after not doing anything for a while)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; don't worry&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; you'll be back in business&lt;br /&gt;&amp;lt;mau5&amp;gt; i will upload the document now&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Ok let's move on to the next team member&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Me: I'm still not done with the developers guide: I still could not compile Saya, so I could'n write a normal guide. I had a lot of mess with it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, I'll help you with it then&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Thank you&lt;br /&gt;&amp;lt;rick_777&amp;gt; I'm afraid that we're stuck in a bottleneck and that bottleneck is finishing the Qt conversion.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; sort of&lt;br /&gt;&amp;lt;brad_gar&amp;gt; I almost have saya compiled on windows, I think I have the wrong version of Qt as I'm getting a moc error or something to that effect&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; but We're also making enablement progress&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess that what we can do now is finish the conversion (and the dev. guide) and when we're finished, we'll mail you the new tasks, if any.&lt;br /&gt;&amp;lt;brad_gar&amp;gt; just downloaded the latest from the sdk, not the 4.4.3 version&lt;br /&gt;&amp;lt;mau5&amp;gt; @brad: try qt 4.4.3&lt;br /&gt;&amp;lt;rick_777&amp;gt; Yes, it seems there are no problems with qt 4.5.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Brad: feel free to join Lubomir and Rich if you need to&lt;br /&gt;&amp;lt;brad_gar&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; I spoke with brad and his only problem so far is downloading and installing gettext and the libintl library on windows.&lt;br /&gt;&amp;lt;brad_gar&amp;gt; got that working!&lt;br /&gt;&amp;lt;rick_777&amp;gt; oh?&lt;br /&gt;&amp;lt;rick_777&amp;gt; So you managed to compile Saya, or stumbled on another problem?&lt;br /&gt;&amp;lt;brad_gar&amp;gt; yup&lt;br /&gt;&amp;lt;rick_777&amp;gt; yup compile, or yup stumbled?&lt;br /&gt;&amp;lt;brad_gar&amp;gt; now its telling me that the Qt moc is too different, so I think downloading the 4.4.3 version should fix that&lt;br /&gt;&amp;lt;rick_777&amp;gt; hmmm&lt;br /&gt;&amp;lt;rick_777&amp;gt; i guess you should install 4.4.3&lt;br /&gt;&amp;lt;brad_gar&amp;gt; just ran out of time yesterday&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.5 is out, but it didn't go mainstream yet.&lt;br /&gt;&amp;lt;rick_777&amp;gt; we'll need some time before it's present in all repos.&lt;br /&gt;&amp;lt;rick_777&amp;gt; linux distro repositories, i mean.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; so for now we'll stick to 4.4.3&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well, I guess that's all we can do for now&lt;br /&gt;&amp;lt;rick_777&amp;gt; (bummer)&lt;br /&gt;&amp;lt;rick_777&amp;gt; now&lt;br /&gt;&amp;lt;rick_777&amp;gt; I recall there were some issues worth discussing, right rigo?&lt;br /&gt;&amp;lt;rick_777&amp;gt; something about a blog&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; can you repeat your task assigment approach for these month Rich please?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; our task assignment:&lt;br /&gt;&amp;lt;nekohayo&amp;gt; goddamnit, I was at the restaurant O_o is the meeting over?&lt;br /&gt;&amp;lt;LubomirD&amp;gt; you cando this with the moc problem :) instead: #elif Q_MOC_OUTPUT_REVISION != 59 you have to put #elif Q_MOC_OUTPUT_REVISION != 61&lt;br /&gt;&amp;lt;rick_777&amp;gt; brad: please help lubomir compile on windows. I feel there's some potential synergy in you two&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: Not yet :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; what's up Jeff&lt;br /&gt;&amp;lt;brad_gar&amp;gt; will do!&lt;br /&gt;&amp;lt;rick_777&amp;gt; lubomir: Go on with finishing the developer's guide.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; hey there folks :)&lt;br /&gt;&amp;lt;LubomirD&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; hi Jeff&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alex: I hate to say this, but i think that we're stuck and you have no pending jobs for now... you can still try to analyse the source :)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; hey there rick_777, RigoCalleja, and all others, sorry for being late&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; not to worry&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess it's the same for Rigo&lt;br /&gt;&amp;lt;mau5&amp;gt; no problem&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; But hey, better have extra devs than having extra job and no devs :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; can you give us feedback on the status of the conversion please?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, the status of the conversion is... the same that it was last month with the exception of the New Project dialog.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; elaborate?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok...&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; just as a reminder&lt;br /&gt;&amp;lt;rick_777&amp;gt; let's see...&lt;br /&gt;&amp;lt;rick_777&amp;gt; the debuglog is finished and operational.&lt;br /&gt;&amp;lt;rick_777&amp;gt; the resources/effects panel is in progress, but the window / splitter is working, and it can be docked.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; anything else?&lt;br /&gt;&amp;lt;rick_777&amp;gt; the enabling / disabling of menu items is nearly finished ( the labels menu is unfinished)&lt;br /&gt;&amp;lt;rick_777&amp;gt; The Saving and Loading of window layout is finished and operational.&lt;br /&gt;&amp;lt;rick_777&amp;gt; the video playback controls are working (the UI part) but we still need to incorporate the video output.&lt;br /&gt;&amp;lt;rick_777&amp;gt; the timeline is at 0%, just as it was before the conversion :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; OK if I can help you with some of that please let me know&lt;br /&gt;&amp;lt;rick_777&amp;gt; the new project dialog...&lt;br /&gt;&amp;lt;nekohayo&amp;gt; this is all in svn 272 I guess&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; is it Rich?&lt;br /&gt;&amp;lt;rick_777&amp;gt; i gues, let me see if i can update my SVN copy.&lt;br /&gt;&amp;lt;rick_777&amp;gt; kdesvn&lt;br /&gt;&amp;lt;rick_777&amp;gt; oops wrong window&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Ok Jeff you turn, what did you this month?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; uh, I flamed?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; we worked on a proposal for a vision document&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; based on the basic unified process template&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; and information from the mission document&lt;br /&gt;&amp;lt;nekohayo&amp;gt; well, basically, Rigo worked on it&lt;br /&gt;&amp;lt;rick_777&amp;gt; (Also, the new project dialog seems to be finished at designing, but it's not incorporated yet)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Before we go on to that document...&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; are you taking it or passing that task to me?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo, mind giving me a hand with the new project dialog? I'd like you to incorporate it into the source code (i.e. compile the UI file into a c++ file, modify the events so that a new project can be created using the UI)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; RigoCalleja: you mean the .doc you sent me?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok, so what's about this doc&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; yes that one Jeff&lt;br /&gt;&amp;lt;rick_777&amp;gt; please update us&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rigo started writing a more marketing-oriented mission statement&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Jeff and I went through the mission document&lt;br /&gt;&amp;lt;rick_777&amp;gt; cool&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; exactly&lt;br /&gt;&amp;lt;rick_777&amp;gt; but why .doc? why not opendocument?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; instead of a technical rebuttal of other approaches&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: I would have asked the same question :)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; but I guess it was not on purpose&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; so we have only started working on it&lt;br /&gt;* brad_gar has quit (Read error: 104 (Connection reset by peer))&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; when we have something we'll share for comments&lt;br /&gt;&amp;lt;nekohayo&amp;gt; RigoCalleja: I'm looking at the document right now&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok. So, Rigo and Jeff, you keep working on that document. By the way...&lt;br /&gt;&amp;lt;nekohayo&amp;gt; my take is that 1) you had all the essentials of it filled in nicely already 2) the feature list == the roadmap, no need to do it&lt;br /&gt;&amp;lt;rick_777&amp;gt; you might find Google Docs interesting. You can work on the same document at the same time.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; so I thought it seemed ready&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; good idea Rich&lt;br /&gt;&amp;lt;nekohayo&amp;gt; yeah, I used google docs a lot. but then, as I said, I believe that document to be pretty much ready anyway&lt;br /&gt;&amp;lt;rick_777&amp;gt; So I guess Rigo has a double task this month: Working on the New Project dialog...&lt;br /&gt;&amp;lt;rick_777&amp;gt; and finishing that document.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; In adition&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Jeff shared a link to a blog&lt;br /&gt;* brad_gar has joined #saya-dev&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; to a person that's is knowedgable about video editors&lt;br /&gt;&amp;lt;brad_gar&amp;gt; back&lt;br /&gt;&amp;lt;nekohayo&amp;gt; eugenia?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; she basically reaches the same conclusion as Rich&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; exactly&lt;br /&gt;&amp;lt;rick_777&amp;gt; welcome back brad&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; that current GNU/Linux editors are hard to use&lt;br /&gt;&amp;lt;nekohayo&amp;gt; not so sure that she reaches the same conclusions as rick.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; lack features&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo passed me the link... let me see if i have it around.... nope, lost it.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; oh, on that point yeah&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Jeff do you mind sharing to the list?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I guess you meant http://eugenia.gnomefiles.org/2008/01/20/video-editor-mockup/&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, that one&lt;br /&gt;&amp;lt;nekohayo&amp;gt; eugenia is one of the founders of osnews.com and a Vegas user like me&lt;br /&gt;&amp;lt;nekohayo&amp;gt; the mockup that she shows in that blog post is STRONGLY influenced by vegas&lt;br /&gt;&amp;lt;rick_777&amp;gt; hmmm that means that if we get saya to work fine, and make it rock solid as she wants,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we could get a boost on publicity ;-)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; you'll have to beat pitivi and kdenlive to that game :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; for kdenlive i have no worries. It's not rock solid :P&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Jeff and I identified those projects as important contenders&lt;br /&gt;&amp;lt;nekohayo&amp;gt; sure, but neither is saya-trunk ;)&lt;br /&gt;&amp;lt;rick_777&amp;gt; What "worries" me is pitivi, with all the extra help they're really adding a lot of features&lt;br /&gt;&amp;lt;rick_777&amp;gt; but competition is good :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, I've  been surfing around blogs, and the Openshot video editor (the other guy who started a project around the same time as me),&lt;br /&gt;&amp;lt;rick_777&amp;gt; switched from GStreamer/GNonlin to MLT (same as kdenlive)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; well, that one didn't sound quite serious, but I haven't checked its progress lately&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess the design choice to make Saya framework-independent was a good one.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Now we can be sure that gnonlin isn't reliable as a video editing framework.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; gnonlin?&lt;br /&gt;&amp;lt;rick_777&amp;gt; A gstreamer add-on for video editing&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; thnkx&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; ok are there adittional comments?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, I guess that is all for now... any comments?&lt;br /&gt;&amp;lt;rick_777&amp;gt; heh, you beat me&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: and how can you be sure it isn't reliable?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Jeff: From the OpenShot author's comments about it&lt;br /&gt;&amp;lt;nekohayo&amp;gt; in my case, it is more reliable than kdenlive ;) and I throw lots of bug reports/weird test cases at the devs&lt;br /&gt;&amp;lt;rick_777&amp;gt; let me link you to it.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; sure&lt;br /&gt;&amp;lt;rick_777&amp;gt; http://www.openshotvideo.com/2009/03/mlt-vs-gnonlin-lets-get-it-on.html&lt;br /&gt;&amp;lt;nekohayo&amp;gt; pitivi is currently the only video editor in the world (except imovie) that can handle my camcorder's files&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess that blog post is becoming a flamebait, which is good for analysing pros/cons from a 3rd person point of view.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; interesting&lt;br /&gt;&amp;lt;nekohayo&amp;gt; the first comment is from the developer of pitivi and gnonlin&lt;br /&gt;* nekohayo reads the blog post&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; why don't you share your comments on the blog post to the list Jeff?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; *if* I have something relevant to say&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok...&lt;br /&gt;&amp;lt;rick_777&amp;gt; i guess there are no more comments for now&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; one more&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; team&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; guy from india?&lt;br /&gt;&amp;lt;rick_777&amp;gt; it seems his willpower is not enough to come to the meetings :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; and Agustin from Spain?&lt;br /&gt;&amp;lt;rick_777&amp;gt; same about him... haven't heard of him in the month.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; no more comments here&lt;br /&gt;&amp;lt;rick_777&amp;gt; but right now we're back to the 5 devs + 1 beta tester, and that's not bad&lt;br /&gt;&amp;lt;rick_777&amp;gt; I think our team is complete for now.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; wait a sec&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; ah, it's 23 PM in india. Thought it was later than that&lt;br /&gt;&amp;lt;nekohayo&amp;gt; anyway&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; reading through the blog post, to begin with, mp3 support works... if you uninstall the fluendo mp3 codec package in ubuntu (stupid thing. I bugged the pitivi devs about that, but for "political" reasons, they can't blacklist it). Second, diva never switched from gstreamer+gnonlin to mlt&lt;br /&gt;&amp;lt;nekohayo&amp;gt; diva just *died* when the dev underwent burnout&lt;br /&gt;&amp;lt;nekohayo&amp;gt; the rest is answered by bilboed&lt;br /&gt;&amp;lt;rick_777&amp;gt; I see.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; one thing&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh man, we have so much ahead of us. We still haven't got to the point of really editing videos...&lt;br /&gt;&amp;lt;rick_777&amp;gt; but a long journey always starts with one step!&lt;br /&gt;&amp;lt;nekohayo&amp;gt; ... ;)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok. Any more comments, anyone?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; one more&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Alex access to the repo&lt;br /&gt;&amp;lt;rick_777&amp;gt; mind rephrasing that please?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; we were probably going to give him access this time&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh&lt;br /&gt;&amp;lt;rick_777&amp;gt; Right.&lt;br /&gt;&amp;lt;rick_777&amp;gt; let me scroll back.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: and what about this decentralized version control system migration ?&lt;br /&gt;&amp;lt;mau5&amp;gt; do you mean git?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Jeff: Still pending, sorry.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; bazaar is on my mind&lt;br /&gt;* nekohayo hates git for various reasons :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, from Jeff's comments, bazaar is much more friendly than git&lt;br /&gt;&amp;lt;nekohayo&amp;gt; this whole "commit access" thing sounds crazy when you are blocking other devs "because I'm still converting everything to QT myself"&lt;br /&gt;&amp;lt;rick_777&amp;gt; wait, that wasn't the reason for blocking access...&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I thought it was part of the reason&lt;br /&gt;&amp;lt;nekohayo&amp;gt; the other being the "prove your worth before getting access"&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes. And for that I'll give Alex write access.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;nekohayo&amp;gt; in a DVCS, natural selection occurs. code happens. and when it's good, it is merged&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well, I still don't think it's the right moment to change the version control system.&lt;br /&gt;&amp;lt;rick_777&amp;gt; sorry.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; your call&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; I'll add a research task tough&lt;br /&gt;&amp;lt;mau5&amp;gt; http://excess.org/article/2008/07/ogre-git-tutorial/&lt;br /&gt;&amp;lt;mau5&amp;gt; good git overview..&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; great thanks Alex&lt;br /&gt;&amp;lt;mau5&amp;gt; i just heard about bazar, but dont know anything&lt;br /&gt;* nekohayo has a huge .txt file of notes about the hoops he has to go through to switch branches/update a branch in git :)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; holy crap&lt;br /&gt;&amp;lt;nekohayo&amp;gt; that "git: the basics" slideshow&lt;br /&gt;&amp;lt;nekohayo&amp;gt; 277 slides!&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alex, what was your berlios username?&lt;br /&gt;&amp;lt;mau5&amp;gt; alext&lt;br /&gt;&amp;lt;nekohayo&amp;gt; (for contrast: the "bazaar for SVN users" http://bazaar-vcs.org/BzrForSVNUsers )&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rich: assign a research bazaar task to Alex?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; at least if you need help getting started with bazaar, I can give a hint or two, I've been using it extensively for a year&lt;br /&gt;&amp;lt;nekohayo&amp;gt; (I was using svn before that, and cvs before that)&lt;br /&gt;&amp;lt;mau5&amp;gt; ok, thanks&lt;br /&gt;&amp;lt;rick_777&amp;gt; well, the bazaar research is optional. If you want to do it, Alex, go ahead.&lt;br /&gt;&amp;lt;mau5&amp;gt; anyway, i put your link in my bookmarks&lt;br /&gt;&amp;lt;rick_777&amp;gt; BTW, i just finished changing your permissions to read/write.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; In a couple of days you'll be able to write to the repository.&lt;br /&gt;&amp;lt;mau5&amp;gt; thank you&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess this is all for now.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Any last thoughts?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; are you going to stay to help Lubomir Rich?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Yes, after we close the meeting.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; This session is now closed.&lt;br /&gt;&amp;lt;rick_777&amp;gt; *bang* :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; thank you everyone for attending&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; see you later&lt;br /&gt;&amp;lt;brad_gar&amp;gt; I'm going to stick around also&lt;br /&gt;&amp;lt;LubomirD&amp;gt; see you all&lt;br /&gt;&amp;lt;mau5&amp;gt; have a nice remaining weekend :)&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6891331622924518614?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6891331622924518614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6891331622924518614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6891331622924518614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6891331622924518614'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/04/saya-developers-meeting-6-28032009-chat.html' title='Saya Developer&apos;s meeting #6 (28/03/2009) chat log'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4883397835259826233</id><published>2009-03-04T11:31:00.000-08:00</published><updated>2009-03-04T11:33:06.937-08:00</updated><title type='text'>Saya-VE developers' meeting #5 chat log</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;&amp;lt;rick_777&amp;gt; This meeting is officially open.&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Ok!&lt;br /&gt;&amp;lt;rick_777&amp;gt; First of all, I'd like to congratulate those who joined.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Our new recruits are Brad Garrick (who is having connection problems but was about to join)&lt;br /&gt;&amp;lt;mau5&amp;gt; thanks, glad to join you, for me it;s my first time&lt;br /&gt;&amp;lt;LubomirD&amp;gt; thank you&lt;br /&gt;&amp;lt;rick_777&amp;gt; , Lubomir Dobrovodsky and Alexandru Tirvea&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: I guess it's Tirdea&lt;br /&gt;&amp;lt;rick_777&amp;gt; I'd also like to congratulate Alexandru (can we call you Alex?) for his dedication and enthusiasm, and for helping me fix a bug&lt;br /&gt;&amp;lt;mau5&amp;gt; yes , Tirdea is correct :-)&lt;br /&gt;&amp;lt;rick_777&amp;gt; oops&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tirdea&lt;br /&gt;&amp;lt;rick_777&amp;gt; my mistake&lt;br /&gt;&amp;lt;rick_777&amp;gt; Now, let's get to business&lt;br /&gt;&amp;lt;rick_777&amp;gt; As you can see, we're in the middle (or three quarters, actually) of our conversion from wxWidgets to Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; so development per-se is stalled until we finish the conversion&lt;br /&gt;&amp;lt;LubomirD&amp;gt; ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; this is the reason why there hasn't been a lot of development activity. Don't worry, things will pace up with time.&lt;br /&gt;&amp;lt;rick_777&amp;gt; So, I'd like to ask who has been having troubles installing and compiling Saya&lt;br /&gt;&amp;lt;LubomirD&amp;gt; I am trying to compile it on Windows XP and it is still not possible for me.&lt;br /&gt;&amp;lt;mau5&amp;gt; i posted in a thread a small how-to about compilling Saya on a windows 2000&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir: Have you been updating the source code on a daily basis?&lt;br /&gt;&amp;lt;rick_777&amp;gt; from the SVN repository&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok. I think Alex managed to compile Saya on WinXP, right?&lt;br /&gt;&amp;lt;mau5&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; Please share, what did you have to do?&lt;br /&gt;&amp;lt;mau5&amp;gt; first you have to install gettext&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: Alex compiled it on Win 2k If I remember correctly&lt;br /&gt;&amp;lt;rick_777&amp;gt; 2k is nearly the same as xp&lt;br /&gt;&amp;lt;rick_777&amp;gt; there's not that much of a difference&lt;br /&gt;&amp;lt;mau5&amp;gt; yes, i compilled on win2k but i think there are no significant differences between various wins&lt;br /&gt;&amp;lt;mau5&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; so what steps did you have to do? Set up environment variables? Change code?&lt;br /&gt;&amp;lt;rick_777&amp;gt; project settings?&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Ok, I wil try to follow correctly the instructions of Alex, maybe I just misesd something&lt;br /&gt;&amp;lt;rick_777&amp;gt; etc&lt;br /&gt;&amp;lt;mau5&amp;gt; but as a small hint, take care to install gettext directly in the mingw directory&lt;br /&gt;&amp;lt;rick_777&amp;gt; Speaking of compiling...&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Aha, ok, I will have to check this&lt;br /&gt;&amp;lt;rick_777&amp;gt; I think you're the best person to do this task Lubomir&lt;br /&gt;&amp;lt;rick_777&amp;gt; remember the Developers' guide that I wrote?&lt;br /&gt;&amp;lt;LubomirD&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; That one's designed for wxWidgets.&lt;br /&gt;&amp;lt;rick_777&amp;gt; What do you think about rewriting it for Qt4 ?&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Thats a good task to do&lt;br /&gt;&amp;lt;rick_777&amp;gt; you'll write the windows version, of course&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: Btw the project's website still references wxwidgets&lt;br /&gt;&amp;lt;rick_777&amp;gt; this way I can use the extra resources (you) while Alex, Rigo and I concentrate on getting the conversion finished&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Of course, I will do it&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect&lt;br /&gt;&amp;lt;rick_777&amp;gt; I will e-mail you the .odt&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Great&lt;br /&gt;&amp;lt;rick_777&amp;gt; (You'll need to install OpenOffice.org )&lt;br /&gt;&amp;lt;LubomirD&amp;gt; No problem, I have it&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Lubomir: or sun's odt plugin&lt;br /&gt;&amp;lt;rick_777&amp;gt; great! :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; lubomir: did I assign you a task in berlios?&lt;br /&gt;&amp;lt;LubomirD&amp;gt; I'm using  OOo 3 :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect! * * * * *&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Rigo: I think no... I think I forgot to send you my profile - it is ld_orifiel&lt;br /&gt;&amp;lt;rick_777&amp;gt; Now, about the tasks to be done&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Lubomir: Thanks I'll add you to the project&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo will start giving out tasks to people on developer.berlios.de&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Rigo: thank you&lt;br /&gt;&amp;lt;rick_777&amp;gt; The official dev site is http://developer.berlios.de/projects/saya/&lt;br /&gt;&amp;lt;rick_777&amp;gt; just in case you missed it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; no, wait&lt;br /&gt;&amp;lt;rick_777&amp;gt; https://developer.berlios.de/projects/saya/&lt;br /&gt;&amp;lt;rick_777&amp;gt; there. The https is *very* important.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Before we go on with the tasks, I'd like to give you a glimpse of how Saya code works.&lt;br /&gt;&amp;lt;rick_777&amp;gt; on the SVN code, there are various directories:&lt;br /&gt;&amp;lt;rick_777&amp;gt; saya/&lt;br /&gt;&amp;lt;rick_777&amp;gt; saya/core/&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/ui&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/moc&lt;br /&gt;&amp;lt;rick_777&amp;gt; plugins/&lt;br /&gt;&amp;lt;rick_777&amp;gt; resources/&lt;br /&gt;&amp;lt;rick_777&amp;gt; saya/ contains the library for editing the in-memory objects (clips, effects, etc)&lt;br /&gt;&amp;lt;rick_777&amp;gt; saya/core contains the core routines: Multi threading, I/O, file access, etc.&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/ contains the code for the GUI.&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/ui contains the .ui.h files that are generated with Qt4-designer&lt;br /&gt;&amp;lt;rick_777&amp;gt; (accessible in the menu Form -&amp;gt; View Code... then copied and pasted)&lt;br /&gt;&amp;lt;rick_777&amp;gt; ui/moc contains the .moc.h files generated with the moc-qt4 commandline utility&lt;br /&gt;&amp;lt;rick_777&amp;gt; these are the ones handling the events&lt;br /&gt;&amp;lt;rick_777&amp;gt; The reason for generating the .ui and .moc files separately is so that we won't need the qt tools (only the libraries)  to compile the source code.&lt;br /&gt;&amp;lt;rick_777&amp;gt; this is a bit annoying but it's worth it, as it makes the code compatible with all makefile generators.&lt;br /&gt;&amp;lt;rick_777&amp;gt; the resources/ directory contains the qt resources (also generated beforehand) in .rcc format&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir, you may need to write about that in the Dev's guide, too&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Rick: I understand&lt;br /&gt;&amp;lt;rick_777&amp;gt; resources/ also contains the .qcc files (these are the ones that get compiled into .rcc) and the images (usually .png or .jpg)&lt;br /&gt;&amp;lt;rick_777&amp;gt; That's about the code paths&lt;br /&gt;&amp;lt;rick_777&amp;gt; About the code structure:&lt;br /&gt;&amp;lt;rick_777&amp;gt; what we call the "Core" is a set of classes and functions needed for low-level stuff. As I said, it's in the saya/core/ directory.&lt;br /&gt;&amp;lt;rick_777&amp;gt; On top of the Core is the saya library (which isn't compiled as a library yet) for handling the objects.&lt;br /&gt;&amp;lt;rick_777&amp;gt; The saya library contains some important classes:&lt;br /&gt;&amp;lt;rick_777&amp;gt; VidProject (will have a project's info),&lt;br /&gt;&amp;lt;rick_777&amp;gt; ProjectManager (which opens and saves projects)&lt;br /&gt;&amp;lt;rick_777&amp;gt; PresetManager (takes care of presets)&lt;br /&gt;&amp;lt;rick_777&amp;gt; and PlaybackManager. This is the most recent one, and will take care of video/audio playback objects&lt;br /&gt;&amp;lt;rick_777&amp;gt; basically, we have a 3-tiered system:&lt;br /&gt;&amp;lt;rick_777&amp;gt; CORE / Objects / UI&lt;br /&gt;&amp;lt;rick_777&amp;gt; this is to keep the code portable.&lt;br /&gt;&amp;lt;rick_777&amp;gt; I've also added into the core specialized functions for saya-specific event handling&lt;br /&gt;&amp;lt;rick_777&amp;gt; (which don't depend on Qt or wxwidgets event model)&lt;br /&gt;&amp;lt;rick_777&amp;gt; string handling&lt;br /&gt;&amp;lt;rick_777&amp;gt; etc.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Right now, what we're doing is converting the wxWidgets code in the ui/ directory to use the Qt functions.&lt;br /&gt;&amp;lt;rick_777&amp;gt; What took me the most effort was adapting the event handling stuff, wxWidgets and Qt have completely different event models. But you won't have to worry about it, it's finished.&lt;br /&gt;&amp;lt;rick_777&amp;gt; As soon as we finish the conversion, we have some pending tasks:&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Finishing the playback engine so that it reproduces a hardcoded animation into the screen&lt;br /&gt;&amp;lt;rick_777&amp;gt; * And using 3rd party codec libraries to read .avi files, etc.&lt;br /&gt;&amp;lt;rick_777&amp;gt; But right now, we need only to worry about the UI&lt;br /&gt;&amp;lt;rick_777&amp;gt; This will be a very important step, because we'll get back to the UI later: We'll need to drag and drop clips on the timeline and do all kinds of fun stuff with them.&lt;br /&gt;&amp;lt;rick_777&amp;gt; So we need to eat and breathe Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; Any questions so far?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; "eat &amp; breath" lol&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: No questions here&lt;br /&gt;&amp;lt;LubomirD&amp;gt; No questions right now&lt;br /&gt;&amp;lt;mau5&amp;gt; it's ok for me&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect.&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess this is all for now. Let's summarize.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tasks for Lubomir: Get to compile Saya on Windows with Qt, and rewrite the developers' guide for Windows.&lt;br /&gt;&amp;lt;LubomirD&amp;gt; got it&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tasks for Rigo: Convert the New Project dialog to Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tasks for me: Convert the rest of the main window to Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tasks for Brad: Get to compile Saya on Windows with Qt, and start learning Qt and do some practice projects separately.&lt;br /&gt;&amp;lt;rick_777&amp;gt; brb&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: Alex is missing&lt;br /&gt;&amp;lt;mau5&amp;gt; i'm here&lt;br /&gt;&amp;lt;mau5&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh&lt;br /&gt;&amp;lt;mau5&amp;gt; waiting for my tasks&lt;br /&gt;&amp;lt;rick_777&amp;gt; also, everyone please download the Qt Assistant&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Alex: task assigment I mean&lt;br /&gt;&amp;lt;rick_777&amp;gt; so you can have an offline-help.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alex: I'm still wondering what tasks I can give to you...&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: remember you assigned the gmerlin task to Alex&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ah yes. I guess you'll have to stick to research.&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick:it's on BerliOS&lt;br /&gt;&amp;lt;mau5&amp;gt; yes&lt;br /&gt;&amp;lt;mau5&amp;gt; last week i just played with qt/gmerlin&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect!&lt;br /&gt;&amp;lt;mau5&amp;gt; trying to seek a avi and rendering the frame in a QPixmap&lt;br /&gt;&amp;lt;mau5&amp;gt; it's almost done...&lt;br /&gt;&amp;lt;rick_777&amp;gt; Okay then :)&lt;br /&gt;&amp;lt;mau5&amp;gt; the frame meaning a .bmp in the first stage&lt;br /&gt;&amp;lt;rick_777&amp;gt; keep up the good work. When you finish I'll see if i can give you another task.&lt;br /&gt;&amp;lt;mau5&amp;gt; :P&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, help Brad and Lubomir with any Saya compilation doubts they have&lt;br /&gt;&amp;lt;mau5&amp;gt; sure&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess that closes the tasks section.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Any other questions / comments?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; what about agustin and the guy from India?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Agustin had told me in a chat 2 weeks ago that he didn't have much time to connect on Saturdays&lt;br /&gt;&amp;lt;rick_777&amp;gt; And there was a guy from India who wanted to join the project&lt;br /&gt;&amp;lt;rick_777&amp;gt; I told him to join the chat&lt;br /&gt;&amp;lt;rick_777&amp;gt; And obviously, he's not in here :)&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; Generally I'm wary of new recruits&lt;br /&gt;&amp;lt;rick_777&amp;gt; especially if they don't show up to the meetings&lt;br /&gt;&amp;lt;rick_777&amp;gt; by the way, Alex. Depending on your performance this month,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we'll give you write access to the repository.&lt;br /&gt;&amp;lt;rick_777&amp;gt; :)&lt;br /&gt;&amp;lt;mau5&amp;gt; ok, i'll do my best&lt;br /&gt;&amp;lt;rick_777&amp;gt; Any other questions?&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Rick: no questions here&lt;br /&gt;&amp;lt;LubomirD&amp;gt; no...&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect.&lt;br /&gt;&amp;lt;rick_777&amp;gt; This meeting is now closed.&lt;br /&gt;&amp;lt;rick_777&amp;gt; *bang* :)&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Thank you all for this meeting and have a nice weekend!&lt;br /&gt;&amp;lt;mau5&amp;gt; have a nice weekend you too&lt;br /&gt;&amp;lt;rick_777&amp;gt; you too&lt;br /&gt;&amp;lt;RigoCalleja&amp;gt; Same to everyone&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4883397835259826233?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4883397835259826233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4883397835259826233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4883397835259826233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4883397835259826233'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/03/saya-ve-developers-meeting-5-chat-log.html' title='Saya-VE developers&apos; meeting #5 chat log'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3288356276626974686</id><published>2009-03-04T11:12:00.000-08:00</published><updated>2009-03-04T11:25:25.273-08:00</updated><title type='text'>Saya developers meeting #5 (2009-02-28): Summary of Activities</title><content type='html'>This is a brief summary about what has been discussed in the fifth Saya-VE developers meeting.&lt;br /&gt;&lt;br /&gt;About the team:&lt;br /&gt;&lt;br /&gt;* Four new developers joined:&lt;br /&gt;- Alexandru Tirdea from Romania. Alexandru has been very active since the day he joined, and has already helped me to tackle a few bugs. It's most probable that the next month he'll be given write access to the repository.&lt;br /&gt;&lt;br /&gt;- Lubomir Dobrovodsky, from Slovakia&lt;br /&gt;- Agustin Rubio from Spain (who couldn't attend the meeting)&lt;br /&gt;- Brad Garrick from the U.S. Brad couldn't connect to the meeting on IRC but was online at the time.&lt;br /&gt;&lt;br /&gt;* Rigo has been promoted to project administrator. His management skills are impressive, and he keeps the team in a fast pace.&lt;br /&gt;&lt;br /&gt;About the tasks:&lt;br /&gt;&lt;br /&gt;* To help the newcomers get to know Saya a bit better, I gave an explanation about how Saya's code is written and organized.&lt;br /&gt;&lt;br /&gt;* The Qt conversion is around 50% done. The welcome dialog is completed, the playback controls were done by Rigo and I'll adapt them to remake the video player.&lt;br /&gt;&lt;br /&gt;* Tasks for me: I will be working on converting the main window and the video playback controls. If I finish soon, I'll go on fixing the video playback framework.&lt;br /&gt;&lt;br /&gt;* Tasks for Rigo: Convert the New Project dialog to Qt&lt;br /&gt;&lt;br /&gt;* Tasks for Brad: Get to compile Saya on Windows with Qt, and start learning Qt and do some practice projects separately.&lt;br /&gt;&lt;br /&gt;* Tasks for Lubomir: Write the developers' guide for Windows (it needs to be changed as now we use Qt, not wxWidgets)&lt;br /&gt;&lt;br /&gt;* Tasks for Alex: Finish the research and report on gmerlin and codec libraries.&lt;br /&gt;&lt;br /&gt;* Tasks for Agustin: Learn Qt, I guess (we ran out of tasks :P )&lt;br /&gt;&lt;br /&gt;About the next meeting:&lt;br /&gt;&lt;br /&gt;* The next meeting will take place on Saturday, 28 March 2009, 11AM CDT (-0600).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3288356276626974686?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3288356276626974686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3288356276626974686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3288356276626974686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3288356276626974686'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/03/saya-developers-meeting-5-2009-02-28.html' title='Saya developers meeting #5 (2009-02-28): Summary of Activities'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3392296034658039040</id><published>2009-02-22T08:44:00.000-08:00</published><updated>2009-02-22T08:49:59.095-08:00</updated><title type='text'>Screenshots from the Qt conversion</title><content type='html'>Hello everyone! I'm glad to inform you that the Qt conversion has achieved its "critical mass", and we're starting to see the first fruits.&lt;br /&gt;&lt;br /&gt;Ladies and gentlemen... Allow me to introduce you to... Saya in Qt!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iBNw06Dsj6g/SaGBk4DAIdI/AAAAAAAAAEc/_oiS4h2NRFk/s1600-h/welcome_dialog_qt.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 194px; height: 200px;" src="http://3.bp.blogspot.com/_iBNw06Dsj6g/SaGBk4DAIdI/AAAAAAAAAEc/_oiS4h2NRFk/s200/welcome_dialog_qt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5305664306539405778" /&gt;&lt;/a&gt;&lt;br /&gt;Welcome dialog&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iBNw06Dsj6g/SaGBkzuFH4I/AAAAAAAAAEk/GYLTmg4FiFs/s1600-h/file_open_dialog.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 142px;" src="http://4.bp.blogspot.com/_iBNw06Dsj6g/SaGBkzuFH4I/AAAAAAAAAEk/GYLTmg4FiFs/s200/file_open_dialog.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5305664305377910658" /&gt;&lt;/a&gt;&lt;br /&gt;File open dialog&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iBNw06Dsj6g/SaGBlDbm8OI/AAAAAAAAAEs/8iNxfT4AdJs/s1600-h/main_window_qt1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 172px;" src="http://2.bp.blogspot.com/_iBNw06Dsj6g/SaGBlDbm8OI/AAAAAAAAAEs/8iNxfT4AdJs/s200/main_window_qt1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5305664309595402466" /&gt;&lt;/a&gt;&lt;br /&gt;Main Window with (partially) the main menu&lt;br /&gt;&lt;br /&gt;Of course, there's still work to be done like enabling/disabling the menus, updating the recent projects menu, and of course, the playback window. But at least we're progressing! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3392296034658039040?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3392296034658039040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3392296034658039040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3392296034658039040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3392296034658039040'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/02/screenshots-from-qt-conversion.html' title='Screenshots from the Qt conversion'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iBNw06Dsj6g/SaGBk4DAIdI/AAAAAAAAAEc/_oiS4h2NRFk/s72-c/welcome_dialog_qt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7425462589581263041</id><published>2009-02-08T17:15:00.000-08:00</published><updated>2009-02-08T17:23:18.342-08:00</updated><title type='text'>Four new developers joined!</title><content type='html'>Great news everyone! Since last December, the number of volunteers who applied for membership is four.&lt;br /&gt;&lt;br /&gt;The new recruits are:&lt;br /&gt;&lt;br /&gt;Lubomir Dobrovodsky, from Slovakia&lt;br /&gt;Alexandru Tirdea, from Romania, I think.&lt;br /&gt;Agustin Rubio from Spain&lt;br /&gt;Brad Garrick from the U.S.&lt;br /&gt;&lt;br /&gt;Welcome to the team, guys! Note: You're currently under probation until you earn your worth as a developer. Then you shall be given write-access to the repository. Until then, changes will be submitted as patches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7425462589581263041?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7425462589581263041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7425462589581263041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7425462589581263041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7425462589581263041'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/02/four-new-developers-joined.html' title='Four new developers joined!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6259174047262743825</id><published>2009-01-31T10:29:00.000-08:00</published><updated>2009-01-31T10:44:59.305-08:00</updated><title type='text'>Saya developers meeting #4 (2009-01-30): Summary of Activities</title><content type='html'>This is a brief summary about what has been discussed in the fourth Saya-VE developers meeting.&lt;br /&gt;&lt;br /&gt;About the team:&lt;br /&gt;* Javier Galicia and AbsoluteDestiny were kicked out due to inactivity (and not answering e-mails).&lt;br /&gt;* We have two new volunteers: Alexandru Tirdea, who unfortunately couldn't go to the meeting - but has been working on Video display on Linux, and Lubomir Dobrovodsky, a longtime Java programmer who's been incursioning in C++.&lt;br /&gt;&lt;br /&gt;About the tasks:&lt;br /&gt;&lt;br /&gt;* The most important task so far is the Qt conversion. Without finishing it, we can't go on. On the bright side, the main menu items are already present in the main Qt window (altho they're all enabled by default and the checkbox items behavior hasn't been programmed yet). As I haven't finished determining what changes need to be done to the code, other areas of development are stalled (I really need to hurry up with this).&lt;br /&gt;* Work on the playback framework has been stalled (see above).&lt;br /&gt;* Lubomir is going to train his C++ and Qt skills so that when I need him to add features and &lt;br /&gt;* Rigo is going to research about the new video editor from Apple (iMovie, I think) and is going to send me some links to post on the "research" section of the website (which needs to be polished, of course).&lt;br /&gt;* Jeff has suggested using the bazaar distributed version control system to speed up development. We discussed about it a bit, but unfortunately I have very little free time right now. But I'm considering adopting it.&lt;br /&gt;&lt;br /&gt;About the next meeting:&lt;br /&gt;&lt;br /&gt;Due to people from Eastern Europe joining, we've changed the meetings to the Saturday following the last Friday of the month (which most of the time will be the last Saturday of the Month), at 11AM CDT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6259174047262743825?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6259174047262743825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6259174047262743825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6259174047262743825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6259174047262743825'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/01/saya-developers-meeting-4-2009-01-30_31.html' title='Saya developers meeting #4 (2009-01-30): Summary of Activities'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1779407825961164315</id><published>2009-01-31T10:22:00.000-08:00</published><updated>2009-01-31T10:28:49.781-08:00</updated><title type='text'>Saya developer's meeting #4 (2009-01-30) chat log</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;* rick_777 has changed the topic to: meeting tonight at 8PM&lt;br /&gt;* nekohayo has joined #saya-dev&lt;br /&gt;* rick_777 gives channel operator status to nekohayo&lt;br /&gt;&amp;lt;rick_777&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; oops wrong window&lt;br /&gt;* Rigoberto__ has joined #saya-dev&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; good evening&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; sorry I'm late&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; brb&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Hi Jeff&lt;br /&gt;&amp;lt;nekohayo&amp;gt; hello there&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; what's up?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, let's officially open the meeting&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; all agree?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; q: did you receive communication from the two new devs?&lt;br /&gt;&amp;lt;rick_777&amp;gt; today, nope. But they said they would attend&lt;br /&gt;&amp;lt;rick_777&amp;gt; maybe (again) there was some timezone problem :P&lt;br /&gt;&amp;lt;rick_777&amp;gt; OK, so if there are no objections, the meeting is officially open.&lt;br /&gt;&amp;lt;rick_777&amp;gt; *bang*&lt;br /&gt;&amp;lt;rick_777&amp;gt; Now, it's been 2 months since the last meeting and a lot of things have happened&lt;br /&gt;&amp;lt;rick_777&amp;gt; let me check the blog so I don't forget any.&lt;br /&gt;&amp;lt;rick_777&amp;gt; There have been a lot of changes in the core&lt;br /&gt;&amp;lt;rick_777&amp;gt; we have a new string class,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we have plans to migrate to CMake... (once I get Qt working)&lt;br /&gt;&amp;lt;rick_777&amp;gt; the playback framework is almost working...&lt;br /&gt;&amp;lt;rick_777&amp;gt; more core advances...&lt;br /&gt;&amp;lt;rick_777&amp;gt; http://saya-dev.blogspot.com/2008_12_01_archive.html&lt;br /&gt;* LubomirD has joined #saya-dev&lt;br /&gt;&amp;lt;rick_777&amp;gt; WELCOME!&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Hello to all am I late?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Howdy&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, but the other developer was late too :P&lt;br /&gt;&amp;lt;rick_777&amp;gt; so we started 10 mins ago&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alright, before we start talking about you, let me give again a summary of events that happened during December and January&lt;br /&gt;&amp;lt;rick_777&amp;gt; http://saya-dev.blogspot.com/2008_12_01_archive.html&lt;br /&gt;&amp;lt;rick_777&amp;gt; * New lightweight string class&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Migration to CMake proposed (still pending)&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Playback framework nearly finished - but stalled for the Qt conversion&lt;br /&gt;&amp;lt;LubomirD&amp;gt; Ok great&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Qt conversion about halfway done :)&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; halfway?&lt;br /&gt;&amp;lt;rick_777&amp;gt; it's a rough approximation&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; you did come up with an estimate!&lt;br /&gt;&amp;lt;rick_777&amp;gt; +/- 50% :P&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; actually it might be around 30 or 40&lt;br /&gt;&amp;lt;rick_777&amp;gt; but that's better than nothing :)&lt;br /&gt;&amp;lt;LubomirD&amp;gt; yes of course :)&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I believe percentages doesn't work for software&lt;br /&gt;&amp;lt;rick_777&amp;gt; i believe that, too, but the public needs an estimated figure ;-)&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; but this is dev meeting ;p&lt;br /&gt;&amp;lt;rick_777&amp;gt; at least the welcome dialog and the main menu have been converted&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; what's left?&lt;br /&gt;&amp;lt;rick_777&amp;gt; everything else&lt;br /&gt;&amp;lt;rick_777&amp;gt; re-do the playback controls&lt;br /&gt;&amp;lt;rick_777&amp;gt; implement the menu events&lt;br /&gt;&amp;lt;rick_777&amp;gt; implement the menu items disabling on-request&lt;br /&gt;&amp;lt;rick_777&amp;gt; and everything else that I hadn't done yet while in wx&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; *AHEM* going back to the events&lt;br /&gt;&amp;lt;rick_777&amp;gt; two people offered to join, &lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir,&lt;br /&gt;&amp;lt;rick_777&amp;gt; and ...&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; (papers noise)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alexandru Tirdea, who I assume couldn't attend the meeting&lt;br /&gt;* LubomirD_ has joined #saya-dev&lt;br /&gt;&amp;lt;rick_777&amp;gt; whoa&lt;br /&gt;&amp;lt;rick_777&amp;gt; what happened&lt;br /&gt;* rick_777 has kicked LubomirD from #saya-dev (rick_777)&lt;br /&gt;&amp;lt;rick_777&amp;gt; hello?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Did you get disconnected?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; yes i am here&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; No&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I dont know wha thappened&lt;br /&gt;&amp;lt;rick_777&amp;gt; Just be careful&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; you don't want to get cloned and banned by the irc server on accident&lt;br /&gt;&amp;lt;rick_777&amp;gt; try to keep only one window open&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, since it's already 9PM, the time for the people who were about to be kicked has expired.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Say goodbye to Javier Galicia and AbsoluteDestiny&lt;br /&gt;&amp;lt;rick_777&amp;gt; total contributions to the project: Zero&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; so we start&lt;br /&gt;&amp;lt;rick_777&amp;gt; Out with the old, in with the new.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir, what time is it there?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; 4.00 AM&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Slovakia?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; wow&lt;br /&gt;&amp;lt;rick_777&amp;gt; you really put a lot of effort in there. That shows commitment&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; we should definitely reschedule the meetings for morning america afernoon europe&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Thats the reason I am late... I am sorry I was sleeping too much&lt;br /&gt;&amp;lt;rick_777&amp;gt; maybe we'll move the next meetings to 9PM, is that ok?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; what about 10AM on saturday?&lt;br /&gt;&amp;lt;rick_777&amp;gt; that'll give you an additional hour to sleep&lt;br /&gt;&amp;lt;rick_777&amp;gt; 10AM?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; 10AM Central&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; GMT -6&lt;br /&gt;&amp;lt;rick_777&amp;gt; How about 11?&lt;br /&gt;&amp;lt;rick_777&amp;gt; at 10 I'm usually eating breakfast :P&lt;br /&gt;&amp;lt;LubomirD_&amp;gt;  And to me it will be?&lt;br /&gt;&amp;lt;rick_777&amp;gt; 6PM&lt;br /&gt;&amp;lt;rick_777&amp;gt; you're 7 hours ahead of us&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; GMT + 1&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Aha, It would be ok&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; is that ok with you Jeff?&lt;br /&gt;&amp;gt;nekohayo&amp;lt; CTCP PING&lt;br /&gt;* Ping reply from nekohayo: ? second(s)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok while Jeff responds, tell us more about yourself, Lubomir&lt;br /&gt;&amp;lt;nekohayo&amp;gt; you need to mention my nickname, otherwise xchat doesn't notify me of messages&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok&lt;br /&gt;* nekohayo reads&lt;br /&gt;&amp;lt;rick_777&amp;gt; so, are you Ok with 11AM saturdays?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; what timezone?&lt;br /&gt;&amp;lt;rick_777&amp;gt; yours&lt;br /&gt;&amp;lt;rick_777&amp;gt; no wait&lt;br /&gt;&amp;lt;rick_777&amp;gt; mine&lt;br /&gt;&amp;lt;rick_777&amp;gt; 11AM CDT&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; correct&lt;br /&gt;&amp;lt;nekohayo&amp;gt; yeah, no prob I guess, I get up at 6-7&lt;br /&gt;&amp;lt;rick_777&amp;gt; perfect.&lt;br /&gt;&amp;lt;rick_777&amp;gt; New meetings will take place 11AM on the saturdays after the last friday of the month&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Great&lt;br /&gt;&amp;lt;rick_777&amp;gt; (yes that sounds complicated but please bear with me)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I'd rely on you to update the google calendar for that :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; ow, my weakness&lt;br /&gt;&amp;lt;nekohayo&amp;gt; so that it shows up on my calendar ;)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok. I'll try&lt;br /&gt;&amp;lt;rick_777&amp;gt; remind me to update the calendar if I forget&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; or an email to the list?&lt;br /&gt;&amp;lt;rick_777&amp;gt; ^^;&lt;br /&gt;&amp;lt;rick_777&amp;gt; yeah that works, too :)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir, are you on the list already?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; you do know that you can set recurring events, right?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes I am&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I am on the list&lt;br /&gt;&amp;lt;rick_777&amp;gt; I deleted Javier Galicia now that I was there&lt;br /&gt;&amp;lt;rick_777&amp;gt; hey, Alexander also joined the list&lt;br /&gt;&amp;lt;rick_777&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; maybe next meeting we'll see him&lt;br /&gt;&amp;lt;rick_777&amp;gt; So, Lubomir&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; why don't you set up the recurring event for the meetings now?&lt;br /&gt;&amp;lt;rick_777&amp;gt; eh?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I'm looking at the calendar now&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh&lt;br /&gt;&amp;lt;rick_777&amp;gt; I'll set up one&lt;br /&gt;&amp;lt;rick_777&amp;gt; thanks for the info&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; So I am 25 years old&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I am a professional Java programmer at Accenture&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, tell us more about yourself&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I've been working there for 2,5 years right nnow&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I used to work for Andersen Consulting (Accenture's former name)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes? That was pretty long time ago, not?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Yeah! 1998-1999&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; ... and I have also some little experience with C++&lt;br /&gt;&amp;lt;rick_777&amp;gt; great, tell us more about it&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I am programming some little home projects to learn more about C++&lt;br /&gt;&amp;lt;rick_777&amp;gt; cool&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; and I made a little game for school project&lt;br /&gt;&amp;lt;rick_777&amp;gt; Okay. Now, let's do this. Try to make some GUI projects using Qt.&lt;br /&gt;&amp;lt;rick_777&amp;gt; and Code::Blocks IDE.&lt;br /&gt;&amp;lt;rick_777&amp;gt; most of the work we'll do at Saya (after dealing with the codec / encoding stuff) will be the UI&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Ok, I am learning Qt from the book about Qt 4 so I have no problem with it&lt;br /&gt;&amp;lt;rick_777&amp;gt; so we need people to work on the timeline, buttons, controls, and all that&lt;br /&gt;&amp;lt;rick_777&amp;gt; great! :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well, for now that's all you need to do because I still haven't finished the Qt conversion&lt;br /&gt;&amp;lt;rick_777&amp;gt; and until I get things clear, I'm afraid I can't give directions for now&lt;br /&gt;&amp;lt;rick_777&amp;gt; if we were in the military, the order would be "regroup!"&lt;br /&gt;&amp;lt;rick_777&amp;gt; :)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; :)&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; lol&lt;br /&gt;&amp;lt;rick_777&amp;gt; Hopefully I can have the conversion finished by the next meeting.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Do you have some ideas about how it should look?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Have you seen the screenshots on the website?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Nearly Identical, but with Qt :)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Ok, I will start with it&lt;br /&gt;&amp;lt;rick_777&amp;gt; eh?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: another advantage of using a decentralized VCS&lt;br /&gt;&amp;lt;nekohayo&amp;gt; is that you could do all your QT switch stuff in a special branch, while others work in parallel on the core or whatever&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir: I just hope you didn't misinterpret me. I meant: Work on personal "hello world" projects for now&lt;br /&gt;&amp;lt;rick_777&amp;gt; until I get the main project fully working on Qt. Then you'll join and fix bugs / add features&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; And do you want the GUI to be made in Qt designer or handcoded?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Jeff's raised and interesting point&lt;br /&gt;&amp;lt;rick_777&amp;gt; You can try both... I'm designing the main window using the Qt designer.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Ok, thanks&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, so I guess the Qt conversion topic gets settled for now.&lt;br /&gt;&amp;lt;rick_777&amp;gt; As Lubomir's joining.&lt;br /&gt;&amp;lt;rick_777&amp;gt; You're now officially a member of the team. Welcome! :D&lt;br /&gt;&amp;lt;rick_777&amp;gt; Now, onto Jeff's suggestion.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Thank You!&lt;br /&gt;&amp;lt;rick_777&amp;gt; Using a decentralized version control system.&lt;br /&gt;&amp;lt;rick_777&amp;gt; I like the idea, but I don't want to try out too much new stuff at the same time.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Lubomir: Don't forget to send Rick you profile&lt;br /&gt;&amp;lt;rick_777&amp;gt; I'm having a hard enough time with Qt already&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; ok I will&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Lubomir: is Lubomir your name or nick?&lt;br /&gt;&amp;lt;rick_777&amp;gt; After the conversion's finished, we can discuss the usage of a DVCS.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; name&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; e-mail me your profile so I can add you to the webpage&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, I'll need you&lt;br /&gt;&amp;lt;rick_777&amp;gt; to get a sourceforge account&lt;br /&gt;&amp;lt;rick_777&amp;gt; and a berlios account&lt;br /&gt;&amp;lt;rick_777&amp;gt; the sourceforge account is for public relations&lt;br /&gt;&amp;lt;rick_777&amp;gt; the berlios will be for submitting patches and commits, etc.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Ok, I understand, I will handle it&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Rick: but I guess Jeff's point has to do progress management&lt;br /&gt;&amp;lt;rick_777&amp;gt; Let's see... what's next?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh yeah. Lubomir, were you the one I asked about the project's mascot?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes I already asked my friends, I am waiting for their reply&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: so you're saying we should wait for a long work in progress to be finished before actually using a tool that allows you to manage just that?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; (see the irony?)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; They are good experienced manga drawers&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: Yes, I can see the irony... &lt;br /&gt;&amp;lt;rick_777&amp;gt; I'll try to be fast...&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, tell you what. I'll begin studying DVCS tools, but I don't promise anything quick.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, the job's been keeping me offline and tired&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I've done branches in clearcase and tfs&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; no subversion tough&lt;br /&gt;&amp;lt;rick_777&amp;gt; hmmmmmmmm&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I understand that, I have also much work&lt;br /&gt;&amp;lt;nekohayo&amp;gt; subversion is madness for branches and such, it is not a decentralized VCS&lt;br /&gt;&amp;lt;nekohayo&amp;gt; it's in a completely different league&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok.&lt;br /&gt;&amp;lt;rick_777&amp;gt; So, in summary:&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Lubomir will work on learning Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; * I'll work on finish adapting the code to Qt&lt;br /&gt;&amp;lt;rick_777&amp;gt; AND learn a DVCS.&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Rigo will help me with the video playback controls (this time in Qt)&lt;br /&gt;&amp;lt;rick_777&amp;gt; while Jeff.... keeps giving suggestions and feedback ^^;&lt;br /&gt;&amp;lt;rick_777&amp;gt; which is no small feat, of course.&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess that concludes our meeting. Anything else?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; one comment&lt;br /&gt;&amp;lt;rick_777&amp;gt; Please share.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; or suggestion&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Mac release a new version of their video editor&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; released&lt;br /&gt;&amp;lt;rick_777&amp;gt; Oh&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; since UI is top priority for Saya&lt;br /&gt;&amp;lt;nekohayo&amp;gt; imovie?&lt;br /&gt;&amp;lt;rick_777&amp;gt; we should copy it&lt;br /&gt;&amp;lt;rick_777&amp;gt; right?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I saw some pictures of it. It looks very user friendly&lt;br /&gt;&amp;lt;rick_777&amp;gt; excellent!&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, Rigo, this is your new task: Collect ALL the information you can get on iMovie&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I don't remember the name&lt;br /&gt;&amp;lt;rick_777&amp;gt; or whatever it's called&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; k&lt;br /&gt;&amp;lt;rick_777&amp;gt; video links, screenshots, tutorials, papers, etc.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; and we'll post it on the "research" section.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; Anything else, guys?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; did you decide what to do with the first donation?&lt;br /&gt;&amp;lt;rick_777&amp;gt; oh - no, I haven't decided yet.&lt;br /&gt;&amp;lt;rick_777&amp;gt; I guess it's still there, sitting as a "symbolic" donation&lt;br /&gt;&amp;lt;rick_777&amp;gt; :P&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; :)&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; so what about Alexandru?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Do you suggest me to donate it to the FSF?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Alexandru hasn't answered yet. But I have the feeling we'll hear about him... soon.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; since we need developers so badly&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, we do&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I suggest we use it to hire a few programmer hours&lt;br /&gt;&amp;lt;rick_777&amp;gt; i doubt $10 dollars will be of any use&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; so what do you know about the donator?&lt;br /&gt;&amp;lt;rick_777&amp;gt; he makes Anime Music Videos. Made one for AMV Hell 3 (or 4) i think.&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; Interesting&lt;br /&gt;&amp;lt;rick_777&amp;gt; Yeah. Anything else?&lt;br /&gt;&amp;lt;rick_777&amp;gt; questions, doubts, suggestions&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; one comment...&lt;br /&gt;&amp;lt;nekohayo&amp;gt; hiring programmers with that donation: *facepalm.jpg*&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; did you see the Qt developer?&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; I've heard in India a programmer makes 1000 bugs a year&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; through some classes specs at elance&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; just tought could work&lt;br /&gt;&amp;lt;nekohayo&amp;gt; you'd have more luck buying a python book for working on pitivi or a cup of coffee to work on kdenlive, if you depend on that&lt;br /&gt;&amp;lt;rick_777&amp;gt; Lubomir: Which Qt developer?&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Sorry -Qt Creator - you can code in it and it has integrated Qt designer&lt;br /&gt;&amp;lt;rick_777&amp;gt; Hmmmmm&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; It is in beta relase, but it will befinished and open source soon&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well, I don't want to rely on a specific software&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, I'm not very fond of Qt's approach (preprocessing files before compiling them).&lt;br /&gt;&amp;lt;rick_777&amp;gt; I like to have 100% C/C++ so I can modify it.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; I understand&lt;br /&gt;&amp;lt;rick_777&amp;gt; but use what makes you feel most comfortable (note: You'll end up having to use CodeBlocks, since it's our official tool)&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Yes, I am programming most time in Code Blocks :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; but well, that's what programming is: Learning :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok. I guess that's the last question for today.&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; yes :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; And guess what, it's an hour since the meeting was started.&lt;br /&gt;&amp;lt;rick_777&amp;gt; So this meeting is officially closed.&lt;br /&gt;&amp;lt;rick_777&amp;gt; *bang*&lt;br /&gt;&amp;lt;LubomirD_&amp;gt; Good bye!&lt;br /&gt;&amp;lt;Rigoberto__&amp;gt; bye bye&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1779407825961164315?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1779407825961164315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1779407825961164315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1779407825961164315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1779407825961164315'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/01/saya-developers-meeting-4-2009-01-30.html' title='Saya developer&apos;s meeting #4 (2009-01-30) chat log'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3526413262245483678</id><published>2009-01-08T19:02:00.000-08:00</published><updated>2009-01-08T21:20:41.556-08:00</updated><title type='text'>We need a mascot!</title><content type='html'>While I'm busy creating Saya's new skin, I think it's time to create a mascot. &lt;br /&gt;&lt;br /&gt;Unfortunately, I'm a terrible drawer. So I invite anyone with sufficient drawing skills and a good Otaku background to help us.&lt;br /&gt;&lt;br /&gt;As a benevolent dictator (grin), I will define what mascot we'll have.&lt;br /&gt;&lt;br /&gt;First of all, it needs to be a girl.&lt;br /&gt;Second, it needs to be an anime girl (since Saya is a japanese name).&lt;br /&gt;Third - she needs to be chibi - we'll follow &lt;a target="_blank" href="http://www.ne.jp/asahi/mighty/knight/"&gt;Pixia&lt;/a&gt;'s example.&lt;br /&gt;&lt;br /&gt;Here are some of the features I'd like the mascot to have:&lt;br /&gt;&lt;br /&gt;Name: The mascot's will be "Saya" (the mascot would be the software, following the tradition of the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/OS-tan"&gt;OS-Tan&lt;/a&gt;s ;-)&lt;br /&gt;&lt;br /&gt;Hair: She needs to have short hair - not too short, or we could be plagiarizing an existing &lt;a href="http://en.wikipedia.org/wiki/Blood_Plus"&gt;anime Saya&lt;/a&gt; ;-). A bit longer than Kuchiki Rukia's should suffice. Maybe even longer, but not below the elbows. It needs not to be curly.&lt;br /&gt;&lt;br /&gt;Head size: The head needs to have a reasonable size (NO powerpuff girls please).&lt;br /&gt;&lt;br /&gt;Here are some examples more or less of what I want (caramelldansen):&lt;br /&gt;&lt;a target="_blank" href="http://www.youtube.com/watch?v=UX6e7sO1ss0"&gt;http://www.youtube.com/watch?v=UX6e7sO1ss0&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.youtube.com/watch?v=jdUT0gWqKnU"&gt;http://www.youtube.com/watch?v=jdUT0gWqKnU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The bodies need to be a little smaller. Something &lt;a target="_blank" href="http://www.worldtoys.co.kr/shop/dvProduct.phtml?pid=suiseseki_pinky&amp;pcode=472"&gt;like this&lt;/a&gt; (pinky's), but keep the caramelldansen face shapes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit (11:14PM)&lt;/b&gt;: I think I found what I want. &lt;a target="_blank" href="http://www.youtube.com/watch?v=pKj2qYhn3Bo&amp;feature=related"&gt;School Rumble's alternate ending 1&lt;/a&gt; shows some perfectly-proportioned chibi girls ^_^. Of special attention is Tsukamoto Yakumo at 1:00. The head isn't overly huge, and the body is still well-defined.&lt;br /&gt;&lt;br /&gt;Note that I chose the chibi-size so that the mascot can fit in a square space. But a little taller (not taller than the Caramelldansen figures) is perfectly acceptable, and even desired. Try to choose a middle ground if you can.&lt;br /&gt;&lt;br /&gt;Eyes: Blue.&lt;br /&gt;&lt;br /&gt;Nose: As all bishoujo characters - thin and pretty.&lt;br /&gt;&lt;br /&gt;Dress: She could be wearing a kendo outfit (to honor her name), or a movie director outfit. Since Saya is virtual, you could give her a tron-like outfit that would turn into other outfits ;-) A kimono wouldn't be bad, either - but don't make it pink, it doesn't fit the character.&lt;br /&gt;&lt;br /&gt;Breast size: Not too large, but not too small, either.&lt;br /&gt;&lt;br /&gt;Constitution: Not too athletic, but not too thin, either.&lt;br /&gt;&lt;br /&gt;Mouth: Not "X-3" styled mouths. Normal mouths, please.&lt;br /&gt;&lt;br /&gt;Attitude: More like a cute smiling girl. Innocent, but intelligent. Not a joker, and definitely NOT a tsundere! (But she's allowed to get upset -.-# once in a while). But she needs to look cute at all times.&lt;br /&gt;&lt;br /&gt;Here's an example smile that suits Saya perfectly: &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Wikipedia:TAN"&gt;Wikipe-Tan&lt;/a&gt; (just the smile, not the body)&lt;br /&gt;&lt;br /&gt;The rest is up to your imagination (just don't copy existing anime characters, please!).&lt;br /&gt;&lt;br /&gt;Also, we need the character designer to be available for future redesigns and all that, so it requires commitment (or maybe we could choose someone else later, but oh well).&lt;br /&gt;&lt;br /&gt;Any help will be appreciated. The winner designer will obviously appear in the software's credits!&lt;br /&gt;^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3526413262245483678?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3526413262245483678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3526413262245483678' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3526413262245483678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3526413262245483678'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/01/we-need-mascot.html' title='We need a mascot!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-8476208198963024095</id><published>2009-01-05T10:39:00.000-08:00</published><updated>2009-01-05T11:48:48.188-08:00</updated><title type='text'>It's Official: We're moving to Qt4!</title><content type='html'>SAYA-VE OFFICIAL ANNOUNCEMENT&lt;br /&gt;=============================&lt;br /&gt;&lt;br /&gt;We're disposing wxWidgets in favor of Qt4.&lt;br /&gt;&lt;br /&gt;(End of announcement)&lt;br /&gt;&lt;br /&gt;Unofficial comment by Rick.&lt;br /&gt;===========================&lt;br /&gt;&lt;br /&gt;I finally made up my mind. After an e-mail conversation with one of the VLC developers, I was told that they submitted quite a few bug reports to wxWidgets, and they were all dismissed. I was also told that wxWidgets was very difficult to work with, and recommended to work with GTK, QT, or anything _else_ (wow, is wxWidgets that bad?).&lt;br /&gt;&lt;br /&gt;And my experience confirms it.&lt;br /&gt;&lt;br /&gt;Now, I tried the QT4 dialog designer, and once you get the hang of it (you need to use a right-click menu to put all the controls in a layout, there's no standard button for that), it's a bliss. But is it compatible with GPLv3? Version 4.3.4 and up are. Hurray! :)&lt;br /&gt;&lt;br /&gt;Sigh, so here goes YET ANOTHER month of changing existing code for arbitrary reasons. I'm lucky I had already adapted a lot of code from wxWidgets ;-).&lt;br /&gt;&lt;br /&gt;I'll close this announcement with a famous quote:&lt;br /&gt;&lt;br /&gt;"Chance favors the prepared mind".&lt;br /&gt;Louis Pasteur&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-8476208198963024095?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/8476208198963024095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=8476208198963024095' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8476208198963024095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8476208198963024095'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2009/01/its-official-were-moving-to-qt4.html' title='It&apos;s Official: We&apos;re moving to Qt4!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5255261155952153648</id><published>2008-12-25T20:11:00.000-08:00</published><updated>2008-12-25T20:15:32.681-08:00</updated><title type='text'>First donation received, yay! :)</title><content type='html'>I'd like to thank Zarxrax from the Doom9 forums for donating our first $20 bucks. This is very significant because it means SOMEONE BELIEVES IN US!&lt;br /&gt;&lt;br /&gt;Now, I'd really like to see how I'm going to use that money for the project - and how to activate my Paypal account in the first place, I had left it for later but turns out my debit card expires soon. So I'll have to get a new card # before I start using paypal's facilities.&lt;br /&gt;&lt;br /&gt;Anyway - Thank you zarxrax, we really appreciate your generous donation. Merry Christmas, and happy new year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5255261155952153648?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5255261155952153648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5255261155952153648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5255261155952153648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5255261155952153648'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/12/first-donation-received-yay.html' title='First donation received, yay! :)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4235616054080989707</id><published>2008-12-23T20:56:00.001-08:00</published><updated>2008-12-23T21:05:21.966-08:00</updated><title type='text'>Merry Christmas!</title><content type='html'>Hello everyone! I'm glad you're still here finding out how Saya's been doing. She's been fine, but our little virtual heroine got bored: I kept working on her inner machinery and forgot to give her a nice skin. Right now she's glaring at me, demanding a new makeover ^^;;;&lt;br /&gt;&lt;br /&gt;Seriously, I've been revamping the inner workings of Saya:&lt;br /&gt;&lt;br /&gt;* A completely new string class.&lt;br /&gt;* A completely new event engine.&lt;br /&gt;* A base cross-platform application class which will make it much easier to port Saya to Qt or whatever toolkit you desire.&lt;br /&gt;* One-to-one wrappers for wxWidget's dialog boxes... well, almost :)&lt;br /&gt;* A restructured source code tree.&lt;br /&gt;* Tons of bug fixes.&lt;br /&gt;&lt;br /&gt;The not-so-good news is that, as I had mentioned, I haven't been able to make a video player for Saya yet, but I'm very close! :) Thanks to all these months efforts, I hope to have a video player working in the next month... provided that I actually have free time to work on it. :)&lt;br /&gt;&lt;br /&gt;Merry Christmas/Holidays, and a happy new year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4235616054080989707?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4235616054080989707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4235616054080989707' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4235616054080989707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4235616054080989707'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/12/merry-christmas.html' title='Merry Christmas!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5483848672226403585</id><published>2008-12-07T06:52:00.000-08:00</published><updated>2008-12-07T07:23:37.315-08:00</updated><title type='text'>Saya developer's meeting #3 (2008-11-28) chat log</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Good evening..&lt;br /&gt;&amp;lt;nekohayo&amp;gt; hello~!&lt;br /&gt;&amp;lt;rick_777&amp;gt; evening&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; this meeting is officially open&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; nice that we chat together tonight...&lt;br /&gt;&amp;lt;rick_777&amp;gt; Tonight we will discuss the progress so far and what's&lt;br /&gt;expected for the next month&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; perfect&lt;br /&gt;&amp;lt;rick_777&amp;gt; First, i have to announce that due to my new job, the&lt;br /&gt;expected development time on Saya might become restricted to weekends&lt;br /&gt;&amp;lt;rick_777&amp;gt; and occasionally on weekdays, depending on how heavy the workload is&lt;br /&gt;&amp;lt;rick_777&amp;gt; Second, as you have seen in the mailing list, an IP lawyer&lt;br /&gt;has volunteered to help us in anything legal.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; ok&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; that's great&lt;br /&gt;&amp;lt;nekohayo&amp;gt; oh, haven't seen that, but I haven't checked mail today&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I wonder why though&lt;br /&gt;&amp;lt;rick_777&amp;gt; Also, Rigo and I have been working on the playback controls.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; in case it turns out we violate a strange patent no one knows about&lt;br /&gt;&amp;lt;rick_777&amp;gt; yup.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Anyway - I'm still undecided whether to do the fun and&lt;br /&gt;entertaining GUI stuff, or to keep debugging the boring core stuff&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; yup Rich has been very helpful with that thanks again Rich&lt;br /&gt;&amp;lt;rick_777&amp;gt; it might depend on my mood, but I'd really like to have&lt;br /&gt;those nice round buttons to give the fans some eye-candy&lt;br /&gt;&amp;lt;rick_777&amp;gt; that usually keeps them interested&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; what about both?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Good idea :)&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; Anyway, I don't know how much time i'll be able to work.&lt;br /&gt;The playback controls SHOULD become functional by january 2009.&lt;br /&gt;&amp;lt;rick_777&amp;gt; which is unfortunate, as I see the deadline extending more&lt;br /&gt;and more :(&lt;br /&gt;&amp;lt;rick_777&amp;gt; Perhaps this would be a good time to encourage more recruiting ;-)&lt;br /&gt;&amp;lt;nekohayo&amp;gt; rick_777: you mean actually controlling playback, not just&lt;br /&gt;the visual widgets, I hope&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: Yes. Actually controlling playback&lt;br /&gt;&amp;lt;rick_777&amp;gt; So we go to the Research and Development section&lt;br /&gt;&amp;lt;rick_777&amp;gt; There's a library called libcairo, that is great for&lt;br /&gt;drawing vector graphics. It might become useful in the timeline&lt;br /&gt;&amp;lt;rick_777&amp;gt; and to modify effects&lt;br /&gt;&amp;lt;nekohayo&amp;gt; cairo actually is part of gtk now, afaik.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; afaik?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; as far as I know&lt;br /&gt;&amp;lt;nekohayo&amp;gt; cairo is pretty much used a lot throughout the gnome desktop&lt;br /&gt;&amp;lt;rick_777&amp;gt; But to keep my promise about the project, we'll need to&lt;br /&gt;embed the cairo library in saya&lt;br /&gt;&amp;lt;rick_777&amp;gt; to avoid dependency hell&lt;br /&gt;&amp;lt;nekohayo&amp;gt; it's what draws pretty vectors, graphs, widgets, whatever&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo, how do you feel regarding your wxWidgets skills?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; dependency hell: hmm. is that really such a bad thing?&lt;br /&gt;you're imposing yourself a ton of additional/unnecessary workload, no?&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: Dependency hell is what made it impossible for me&lt;br /&gt;to install the kdenlive video editor on my machine. It was&lt;br /&gt;frustrating.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: improving... what's my next task?&lt;br /&gt;&amp;lt;rick_777&amp;gt; I don't want to step on the same stone.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; you just have to properly document what are the dependencies&lt;&lt;br /&gt;&amp;lt;nekohayo&amp;gt; so that users can get it compiled easily. every last one of them.&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: The problem isn't knowing what the dependencies&lt;br /&gt;are, but having to download them if your distro doesn't provide them.&lt;br /&gt;&amp;lt;rick_777&amp;gt; having the source code in the same package is a big&lt;br /&gt;productivity boost for users&lt;br /&gt;&amp;lt;nekohayo&amp;gt; well, if you have some really obscure ones, yes you can embed them&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok&lt;br /&gt;&amp;lt;nekohayo&amp;gt; but cairo is mainstream.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Rigo, here's your next homework:&lt;br /&gt;&amp;lt;rick_777&amp;gt; we still need a jog control&lt;br /&gt;&amp;lt;nekohayo&amp;gt; yeah I see your point&lt;br /&gt;&amp;lt;nekohayo&amp;gt; but it's additional workload for you, possibly. anyway.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; do we?&lt;br /&gt;&amp;lt;rick_777&amp;gt; to avoid getting the "oh no, this is too complicated!&lt;br /&gt;*brain block*" syndrome,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we'll split your task in various subtasks:&lt;br /&gt;&amp;lt;rick_777&amp;gt; 1) Draw the widget using the wxwidgets functions. Just the&lt;br /&gt;little circle with a tiny circle inside it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; 2) Make it more appealing, like perhaps adding a shadow and&lt;br /&gt;background color&lt;br /&gt;&amp;lt;rick_777&amp;gt; 3) Parameterize the drawing depending on a private variable&lt;br /&gt;(like "angle")&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4) Capturing the mousedown event (the name may be&lt;br /&gt;different) to switch on a "dragging mode"&lt;br /&gt;&amp;lt;rick_777&amp;gt; and popping a messagebox saying "dragging enabled"&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.1) Perhaps with that you could change some color in the&lt;br /&gt;jog control, like making the little tiny circle glow red&lt;br /&gt;&amp;lt;rick_777&amp;gt; like a LED light, that'd be cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.2) When the mouse button is released, make the tiny&lt;br /&gt;circle stop glowing&lt;br /&gt;&amp;lt;nekohayo&amp;gt; is a jog control really that important?&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, it is.&lt;br /&gt;&amp;lt;rick_777&amp;gt; it's essential for professional video editing&lt;br /&gt;&amp;lt;nekohayo&amp;gt; from my experience, I never needed one/even knew it&lt;br /&gt;existed. it didn't in vegas.&lt;br /&gt;&amp;lt;rick_777&amp;gt; and there are some hardware widgets that implement a jog&lt;br /&gt;&amp;lt;nekohayo&amp;gt; the thing is&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: I tought we already discussed this point in the list&lt;br /&gt;&amp;lt;rick_777&amp;gt; you connect them to usb, and the video editor (like Canopus Edius)&lt;br /&gt;&amp;lt;rick_777&amp;gt; reacts&lt;br /&gt;&amp;lt;rick_777&amp;gt; um, perhaps i didn't make myself clear.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: and if I remember well we agreed not to include it&lt;br /&gt;&amp;lt;nekohayo&amp;gt; isn't the jog control a bit premature?&lt;br /&gt;&amp;lt;rick_777&amp;gt; i apologize for the confusion.&lt;br /&gt;&amp;lt;nekohayo&amp;gt; when there is no rendering/playback/splitting/tracks&lt;br /&gt;&amp;lt;rick_777&amp;gt; We agreed not to include it in the first "release" of the&lt;br /&gt;controls - which we already have in SVN.&lt;br /&gt;&amp;lt;rick_777&amp;gt; nekohayo: I need the jog control to test the playback engine&lt;br /&gt;&amp;lt;nekohayo&amp;gt; ah&lt;br /&gt;&amp;lt;nekohayo&amp;gt; oh, that explains&lt;br /&gt;&amp;lt;rick_777&amp;gt; right now i'll be able to test it using limited features&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: have you seen avidemux?&lt;br /&gt;&amp;lt;rick_777&amp;gt; like play, fast forward, etc. But jog control is much more precise&lt;br /&gt;&amp;lt;rick_777&amp;gt; Once, I think. let me check.&lt;br /&gt;&amp;lt;rick_777&amp;gt; ah, i see it. It's pretty basic IMHO&lt;br /&gt;&amp;lt;rick_777&amp;gt; everyone, please look at this.&lt;br /&gt;&amp;lt;rick_777&amp;gt; &lt;a href="http://images.google.com/images?um=1&amp;hl=en&amp;q=premiere+pro+jog&amp;btnG=Search+Images" target="_blank"&gt;http://images.google.com/images?um=1&amp;hl=en&amp;q=premiere+pro+jog&amp;btnG=Search+Images&lt;/a&gt;&lt;br /&gt;&amp;lt;nekohayo&amp;gt; why yes, it's the pro editing keyboard&lt;br /&gt;&amp;lt;rick_777&amp;gt; see the jog control in there?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; here's a reality check, however.&lt;br /&gt;&amp;lt;rick_777&amp;gt; oh?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; most linux users or home editors don't have this&lt;br /&gt;&amp;lt;rick_777&amp;gt; but our plan is not to make a home editor&lt;br /&gt;&amp;lt;rick_777&amp;gt; but to make a professional editor&lt;br /&gt;&amp;lt;nekohayo&amp;gt; all things start up non professional though, unless you&lt;br /&gt;develop behind closed doors for a few years :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; granted, small steps, but the jog is a step we can make,&lt;br /&gt;and besides, making a jog control will become a great training for&lt;br /&gt;Rigo. It's much easier than making the timeline controls&lt;br /&gt;&amp;lt;nekohayo&amp;gt; alright&lt;br /&gt;&amp;lt;rick_777&amp;gt; no pressure there :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; so, may I continue on your homework?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: an important milestone is functional controls right?&lt;br /&gt;&amp;lt;rick_777&amp;gt; Exactly!&lt;br /&gt;&amp;lt;rick_777&amp;gt; and according to the development plans,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we need a functional player for version 0.1&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; Rich: Insted of the jog control can I help in implemeting&lt;br /&gt;the control functions instead?&lt;br /&gt;&amp;lt;rick_777&amp;gt; &lt;a href="http://sayavideoeditor.sourceforge.net/roadmap.shtml" target="_blank"&gt;http://sayavideoeditor.sourceforge.net/roadmap.shtml&lt;/a&gt;&lt;br /&gt;&amp;lt;rick_777&amp;gt; the wha?&lt;br /&gt;&amp;lt;rick_777&amp;gt; please be specific, what do you mean with "the control functions"&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; making the controls work&lt;br /&gt;&amp;lt;rick_777&amp;gt; OH!&lt;br /&gt;&amp;lt;rick_777&amp;gt; Well...&lt;br /&gt;&amp;lt;rick_777&amp;gt; the problem is that we don't know how functional the&lt;br /&gt;playback engine is&lt;br /&gt;&amp;lt;rick_777&amp;gt; so i need to do it step by step: Implementing one control,&lt;br /&gt;debugging...&lt;br /&gt;&amp;lt;rick_777&amp;gt; and i'm still not sure what part goes where&lt;br /&gt;&amp;lt;rick_777&amp;gt; so i'd rather have you doing something in a more controlled&lt;br /&gt;(pardon the pun) environment&lt;br /&gt;&amp;lt;rick_777&amp;gt; But if you want, you could work on the skeleton for the&lt;br /&gt;control functions&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I would feel like If contribution was more valuable if I&lt;br /&gt;can help you making the controls work&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; my contribution I mean&lt;br /&gt;&amp;lt;rick_777&amp;gt; actually, i think the jog is much more valuable&lt;br /&gt;&amp;lt;rick_777&amp;gt; perhaps it turns out that the button control functions are&lt;br /&gt;just one-liners&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok, tell you what. This month we'll work together on that&lt;br /&gt;&amp;lt;rick_777&amp;gt; if i beat you to it and end up doing it myself (because it&lt;br /&gt;could be very easy), no hard feelings.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; But the jog control is something i really need, and i don't&lt;br /&gt;have the background to do it&lt;br /&gt;&amp;lt;rick_777&amp;gt; but there are tutorials on making your own widgets&lt;br /&gt;&amp;lt;rick_777&amp;gt; so if you do that, your level would really increase&lt;br /&gt;&amp;lt;rick_777&amp;gt; and your abilities would complement mine, and viceversa&lt;br /&gt;&amp;lt;rick_777&amp;gt; besides, the real reason why i'm asking you to do it... is&lt;br /&gt;&amp;lt;rick_777&amp;gt; i need someone to work on the timeline controls&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; what's the diference between the slider we already have&lt;br /&gt;and the jogÂ¡&lt;br /&gt;&amp;lt;rick_777&amp;gt; you know, moving clips around...&lt;br /&gt;&amp;lt;rick_777&amp;gt; the slider should have a "spring effect" that when you drop it,&lt;br /&gt;&amp;lt;rick_777&amp;gt; it goes back to the center and playback is paused.&lt;br /&gt;&amp;lt;rick_777&amp;gt; Let's imagine that you implement a jog control using a&lt;br /&gt;slider (which you won't).&lt;br /&gt;&amp;lt;rick_777&amp;gt; if you drop the control,&lt;br /&gt;&amp;lt;rick_777&amp;gt; the thumb bar goes back to the middle, but playback doesn't&lt;br /&gt;change. Well, the moment you move it, playback is paused and frames&lt;br /&gt;advance as long as you move the control&lt;br /&gt;&amp;lt;rick_777&amp;gt; how should i put it...&lt;br /&gt;&amp;lt;rick_777&amp;gt; jog control is like a car's wheel. You move it right, the&lt;br /&gt;car moves right.&lt;br /&gt;&amp;lt;rick_777&amp;gt; the shutter control (the slider we have) is like the&lt;br /&gt;accelerator pedal&lt;br /&gt;&amp;lt;rick_777&amp;gt; the more you push it, the faster it goes&lt;br /&gt;&amp;lt;rick_777&amp;gt; so that's basically the difference between the jog and the shutter&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; If I understand correctly&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; avidemux does that with a single slider...&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; is there a program that implements your idea to see it clearly&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, adobe premiere ^_^&lt;br /&gt;&amp;lt;rick_777&amp;gt; let me find a youtube video&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; thanks&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I always thought the jog was a thing of the past that was&lt;br /&gt;made to compensate for VCR/analog devices' lack of precision&lt;br /&gt;&amp;lt;nekohayo&amp;gt; and irrelevant in the world of frames and keyframes&lt;br /&gt;&amp;lt;nekohayo&amp;gt; I guess I'll have to see that video and see how it is&lt;br /&gt;relevant nowadays&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I like the way avidemux implements it&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I think its intuitive&lt;br /&gt;&amp;lt;rick_777&amp;gt; okay um....&lt;br /&gt;&amp;lt;rick_777&amp;gt; the problem is, i haven't seen avidemux&lt;br /&gt;&amp;lt;rick_777&amp;gt; but i'll try to install it so i can see how it works&lt;br /&gt;&amp;lt;nekohayo&amp;gt; apt-get it&lt;br /&gt;&amp;lt;nekohayo&amp;gt; :P&lt;br /&gt;&amp;lt;rick_777&amp;gt; not in the repo :P&lt;br /&gt;&amp;lt;nekohayo&amp;gt; wtf, it is&lt;br /&gt;&amp;lt;nekohayo&amp;gt; at least in debian/ubuntu?&lt;br /&gt;&amp;lt;nekohayo&amp;gt; ;)&lt;br /&gt;&amp;lt;rick_777&amp;gt; not in mepis.&lt;br /&gt;&amp;lt;rick_777&amp;gt; ugh.&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok, mind explaining how avidemux works?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; why don't you install over your winblows installation&lt;br /&gt;&amp;lt;rick_777&amp;gt; OK&lt;br /&gt;&amp;lt;rick_777&amp;gt; booting it up...&lt;br /&gt;&amp;lt;rick_777&amp;gt; downloading...&lt;br /&gt;&amp;lt;rick_777&amp;gt; ah - here's the official adobe premiere explanation for the&lt;br /&gt;jog/shuttle controls&lt;br /&gt;&amp;lt;rick_777&amp;gt; &lt;a href="hxxp://livedocs.adobe.com/en_US/PremierePro/3.0/WS810776E4-8A15-4ff5-88B9-E6B712E0BB49.html" target="_blank"&gt;http://livedocs.adobe.com/en_US/PremierePro/3.0/WS810776E4-8A15-4ff5-88B9-E6B712E0BB49.html&lt;/a&gt;&lt;br /&gt;&amp;lt;rick_777&amp;gt; and btw, i can see a situation where a professional editor&lt;br /&gt;needs the jog control&lt;br /&gt;&amp;lt;rick_777&amp;gt; the jog control not only works for input video playback, it&lt;br /&gt;will also work to preview the output video&lt;br /&gt;&amp;lt;rick_777&amp;gt; so imagine you're doing a lip-sync editing&lt;br /&gt;&amp;lt;rick_777&amp;gt; and you need precise control over which frame goes where&lt;br /&gt;&amp;lt;rick_777&amp;gt; (in premiere, you would move the jog control and you could&lt;br /&gt;hear the corresponding audio - even if it's tenths of a second&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; i'm running avidemux now&lt;br /&gt;&amp;lt;rick_777&amp;gt; i'm loading a .vob file from a dvd&lt;br /&gt;* nekohayo slaps forehead at the overcomplexity of premiere's interface :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; ugh! I need to copy it to the HD&lt;br /&gt;&amp;lt;rick_777&amp;gt; brb&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; loaded&lt;br /&gt;&amp;lt;rick_777&amp;gt; so what's the part you want me to do?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; use the jog disk&lt;br /&gt;&amp;lt;rick_777&amp;gt; what jog disk?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; beside the video slider&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; over the selection word&lt;br /&gt;&amp;lt;rick_777&amp;gt; well that's not a jog&lt;br /&gt;&amp;lt;rick_777&amp;gt; that's the shuttle&lt;br /&gt;&amp;lt;rick_777&amp;gt; but yes, I see how it works&lt;br /&gt;&amp;lt;rick_777&amp;gt; however it only works when trying to seek a determinate&lt;br /&gt;instant in time&lt;br /&gt;&amp;lt;rick_777&amp;gt; btw, i'd love the shuttle control in Saya to look like that&lt;br /&gt;&amp;lt;rick_777&amp;gt; ;-)&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; yeah it looks nice&lt;br /&gt;&amp;lt;rick_777&amp;gt; do you think you could copy it? ;-)&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; got to talk to the lawyer first&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; :p&lt;br /&gt;&amp;lt;rick_777&amp;gt; lol&lt;br /&gt;&amp;lt;rick_777&amp;gt; anwyay&lt;br /&gt;&amp;lt;rick_777&amp;gt; i still i see no valid reason why NOT to implement the jog control&lt;br /&gt;&amp;lt;rick_777&amp;gt; please enlighten me&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; can you please explain what the jog does&lt;br /&gt;&amp;lt;rick_777&amp;gt; ok&lt;br /&gt;&amp;lt;nekohayo&amp;gt; except development time, nope&lt;br /&gt;&amp;lt;rick_777&amp;gt; imagine...&lt;br /&gt;&amp;lt;rick_777&amp;gt; that the avidemux slider is a toothed like&lt;br /&gt;&amp;lt;rick_777&amp;gt; line&lt;br /&gt;&amp;lt;rick_777&amp;gt; like with gears&lt;br /&gt;&amp;lt;rick_777&amp;gt; but flat&lt;br /&gt;&amp;lt;rick_777&amp;gt; and imagine the jog control is a gear that goes just below it&lt;br /&gt;&amp;lt;rick_777&amp;gt; and connects to it&lt;br /&gt;&amp;lt;rick_777&amp;gt; so if you move the jog clockwise, the timeline slider goes forward&lt;br /&gt;&amp;lt;rick_777&amp;gt; if you move it counterclockwise, the timeline slider (NOT&lt;br /&gt;the shuttle! btw, but the main slider) goes backward&lt;br /&gt;&amp;lt;rick_777&amp;gt; but in a very tiny scale&lt;br /&gt;&amp;lt;rick_777&amp;gt; like one frame per 15 degrees change in the jog&lt;br /&gt;&amp;lt;rick_777&amp;gt; can you see it?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; so it has large resolutioin&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; i've needed to use the jog in the past&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I think I got it but I would like to try it. Do you know&lt;br /&gt;whether there is a trial?&lt;br /&gt;&amp;lt;rick_777&amp;gt; ?&lt;br /&gt;&amp;lt;rick_777&amp;gt; OH&lt;br /&gt;&amp;lt;rick_777&amp;gt; please watch this&lt;br /&gt;&amp;lt;rick_777&amp;gt; &lt;a href="http://www.youtube.com/watch?v=VvvxJuY1EGY" target="_blank"&gt;http://www.youtube.com/watch?v=VvvxJuY1EGY&lt;/a&gt;&lt;br /&gt;&amp;lt;rick_777&amp;gt; it's an Edius Pro promotional&lt;br /&gt;&amp;lt;rick_777&amp;gt; go to 1:34&lt;br /&gt;&amp;lt;rick_777&amp;gt; and you'll see what i want to do&lt;br /&gt;&amp;lt;rick_777&amp;gt; hmmmmmmmm perhaps i'm mistaking the jog with the shuttle&lt;br /&gt;&amp;lt;rick_777&amp;gt; i need to document myself better&lt;br /&gt;&amp;lt;rick_777&amp;gt; either way, see how the mouse is moving clockwise and the&lt;br /&gt;video advances?&lt;br /&gt;&amp;lt;rick_777&amp;gt; pardon me, it's 1:33&lt;br /&gt;&amp;lt;rick_777&amp;gt; actually i think it'd be useful to watch the complete promo&lt;br /&gt;&amp;lt;rick_777&amp;gt; go ahead, i can wait :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; btw, the promo was of course done 100% with Edius&lt;br /&gt;&amp;lt;rick_777&amp;gt; this is where we want to go&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; wow nice piece of software&lt;br /&gt;&amp;lt;rick_777&amp;gt; how does avidemux fare now? ;-)&lt;br /&gt;&amp;lt;rick_777&amp;gt; anyway&lt;br /&gt;&amp;lt;rick_777&amp;gt; did you see how the mouse moved clockwise and&lt;br /&gt;counterclockwise and the video responded?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; yup&lt;br /&gt;&amp;lt;rick_777&amp;gt; well&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I still why to try premiere tough&lt;br /&gt;&amp;lt;rick_777&amp;gt; later we might be able to implement such gestures&lt;br /&gt;&amp;lt;rick_777&amp;gt; but i have this idea&lt;br /&gt;&amp;lt;rick_777&amp;gt; have you ever done this in MS Paint?&lt;br /&gt;* nekohayo takes a look&lt;br /&gt;&amp;lt;rick_777&amp;gt; you click on a point, and start moving the mouse clockwise&lt;br /&gt;&amp;lt;rick_777&amp;gt; when in "select" mode&lt;br /&gt;&amp;lt;rick_777&amp;gt; no, wait&lt;br /&gt;&amp;lt;rick_777&amp;gt; better select the "line" tool&lt;br /&gt;&amp;lt;rick_777&amp;gt; click on a point, and then start moving the mouse&lt;br /&gt;&amp;lt;rick_777&amp;gt; clockwise&lt;br /&gt;&amp;lt;rick_777&amp;gt; are you doing it?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; yup&lt;br /&gt;&amp;lt;rick_777&amp;gt; so, the line follows the mouse pointer&lt;br /&gt;&amp;lt;rick_777&amp;gt; and the axis is constant&lt;br /&gt;&amp;lt;rick_777&amp;gt; now if you draw an imaginary horizontal line....&lt;br /&gt;&amp;lt;rick_777&amp;gt; the two lines would form an angle&lt;br /&gt;&amp;lt;rick_777&amp;gt; the variation of that angle&lt;br /&gt;&amp;lt;rick_777&amp;gt; corresponds to the playback speed when using the jog&lt;br /&gt;(shuttle?) control&lt;br /&gt;&amp;lt;rick_777&amp;gt; the little circle inside the knob&lt;br /&gt;&amp;lt;rick_777&amp;gt; would follow the mouse&lt;br /&gt;&amp;lt;rick_777&amp;gt; the little circle would be the equivalent of the spinning&lt;br /&gt;line you just moved in mspaint&lt;br /&gt;&amp;lt;rick_777&amp;gt; and as it spins clock/counterclockwise, the video advances&lt;br /&gt;forward and backward&lt;br /&gt;&amp;lt;rick_777&amp;gt; as i said, it's a control not so easy to make, but it's necessary&lt;br /&gt;&amp;lt;rick_777&amp;gt; at least for professional users&lt;br /&gt;&amp;lt;Rigoberto&amp;gt;  isn't the jog control going to like premiere's?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; going to look I mean&lt;br /&gt;&amp;lt;rick_777&amp;gt; nope. Premiere's design is counterintuitive&lt;br /&gt;&amp;lt;rick_777&amp;gt; you need to unclick, move the mouse to the left, click,&lt;br /&gt;move it to the right, etc&lt;br /&gt;&amp;lt;rick_777&amp;gt; it's a mess&lt;br /&gt;&amp;lt;rick_777&amp;gt; if you make it circular, you could theoretically advance a&lt;br /&gt;whole blockbuster movie just by moving the mouse in circles&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; I thought you said you wanted ours to look like it&lt;br /&gt;&amp;lt;rick_777&amp;gt; the shuttle control, yes&lt;br /&gt;&amp;lt;rick_777&amp;gt; but i think avidemux's is prettier :)&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; avidemux shuttle is very similar to premiere's jog&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, but premiere has a shuttle, too!&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; yup just above the jog&lt;br /&gt;&amp;lt;rick_777&amp;gt; it's the tiny slider just above the jog&lt;br /&gt;&amp;lt;rick_777&amp;gt; as you can see, the style varies, but the functionality is&lt;br /&gt;more or less the same&lt;br /&gt;&amp;lt;rick_777&amp;gt; so here are my new requirements:&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Make the slider look like avidemux's shuttle control&lt;br /&gt;&amp;lt;rick_777&amp;gt; or jog, or whatever it's called.&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Make the jog control circular, like a knob with a red&lt;br /&gt;"LED" indicating the direction it's pointing to&lt;br /&gt;&amp;lt;rick_777&amp;gt; * Make the buttons behave just like avidemux (i'll take care of that)&lt;br /&gt;&amp;lt;rick_777&amp;gt; So I guess that sums up what we'll work on this month&lt;br /&gt;&amp;lt;rick_777&amp;gt; k?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; what about the steps you were saying...&lt;br /&gt;&amp;lt;rick_777&amp;gt; that's all about the jog control&lt;br /&gt;&amp;lt;rick_777&amp;gt; let's review them&lt;br /&gt;&amp;lt;rick_777&amp;gt; 1) Draw the widget using the wxwidgets functions. Just the&lt;br /&gt;little circle with a tiny circle inside it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; 2) Make it more appealing, like perhaps adding a shadow and&lt;br /&gt;background color&lt;br /&gt;&amp;lt;rick_777&amp;gt; 3) Parameterize the drawing depending on a private variable&lt;br /&gt;(like "angle")&lt;br /&gt;&amp;lt;rick_777&amp;gt; ) Capturing the mousedown event (the name may be different)&lt;br /&gt;to switch on a "dragging mode"&lt;br /&gt;&amp;lt;rick_777&amp;gt; and popping a messagebox saying "dragging enabled"&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.1) Perhaps with that you could change some color in the&lt;br /&gt;jog control, like making the little tiny circle glow red&lt;br /&gt;&amp;lt;rick_777&amp;gt; like a LED light, that'd be cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.2) When the mouse button is released, make the tiny&lt;br /&gt;circle stop glowing, and the jog is released&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.3) if you can, when the jog button is pressed, make the&lt;br /&gt;mouse pointer invisible&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.4) when the mouse button is released, also move the mouse&lt;br /&gt;to exactly where the tiny red light was&lt;br /&gt;&amp;lt;rick_777&amp;gt; oh, i guess i forgot step 4.1.5)&lt;br /&gt;&amp;lt;rick_777&amp;gt; move the redlight along with the mouse&lt;br /&gt;&amp;lt;rick_777&amp;gt; just get the coordinates of the mouse pointer and calculate the angle&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.5) The hard part will be implementing a "step"&lt;br /&gt;measurement to calculate how much the mouse was moving in a certain&lt;br /&gt;time, and trigger an event&lt;br /&gt;&amp;lt;rick_777&amp;gt; we can leave 4.5) for last.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; ok&lt;br /&gt;&amp;lt;rick_777&amp;gt; I'm sure you can do that with a little wxwidgets research&lt;br /&gt;and practice&lt;br /&gt;&amp;lt;rick_777&amp;gt; i KNOW you can do it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; grasshopper :P&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; :)&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; lol&lt;br /&gt;&amp;lt;rick_777&amp;gt; well , that's all for today.&lt;br /&gt;&amp;lt;rick_777&amp;gt; any other questions?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; are you going to send the chat log?&lt;br /&gt;&amp;lt;rick_777&amp;gt; yes, but my computer might crash and the log could get lost&lt;br /&gt;&amp;lt;rick_777&amp;gt; better take precautions&lt;br /&gt;&amp;lt;rick_777&amp;gt; any other questions?&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; noup&lt;br /&gt;&amp;lt;rick_777&amp;gt; Ok then :)&lt;br /&gt;&amp;lt;rick_777&amp;gt; This meeting (and log) is officially closed.&lt;br /&gt;&amp;lt;Rigoberto&amp;gt; good evening folks&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5483848672226403585?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5483848672226403585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5483848672226403585' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5483848672226403585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5483848672226403585'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/12/saya-developers-meeting-3-2008-11-28_07.html' title='Saya developer&apos;s meeting #3 (2008-11-28) chat log'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7006958285656079351</id><published>2008-12-07T06:50:00.000-08:00</published><updated>2008-12-07T07:22:33.692-08:00</updated><title type='text'>Saya developers meeting #3 (2008-11-28): Summary of Activities</title><content type='html'>This is a brief summary about what has been discussed in the second&lt;br /&gt;Saya-VE developers meeting.&lt;br /&gt;&lt;br /&gt;About the team:&lt;br /&gt;* No changes, but I was e-mailed by a pro-open-source IP lawyer in&lt;br /&gt;case we need any assistance.&lt;br /&gt;&lt;br /&gt;About the tasks:&lt;br /&gt;&lt;br /&gt;* We discussed the need of having a jog control, and what was the&lt;br /&gt;difference between a jog (advancing / going back frame by frame) and a&lt;br /&gt;shuttle (fast forwarding/rewinding at different speeds).&lt;br /&gt;* Jeff gave us an explanation of how controls work in AVIDemux.&lt;br /&gt;* We discussed a bit about how the button 3D effects should behave&lt;br /&gt;* Rigo has been assigned the task of designing a jog control for the&lt;br /&gt;playback controls.&lt;br /&gt;Here's a snippet of the task in question from the chat log:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;rick_777&amp;gt; to avoid getting the "oh no, this is too complicated!&lt;br /&gt;*brain block*" syndrome,&lt;br /&gt;&amp;lt;rick_777&amp;gt; we'll split your task in various subtasks:&lt;br /&gt;&amp;lt;rick_777&amp;gt; 1) Draw the widget using the wxwidgets functions. Just the&lt;br /&gt;little circle with a tiny circle inside it.&lt;br /&gt;&amp;lt;rick_777&amp;gt; 2) Make it more appealing, like perhaps adding a shadow and&lt;br /&gt;background color&lt;br /&gt;&amp;lt;rick_777&amp;gt; 3) Parameterize the drawing depending on a private variable&lt;br /&gt;(like "angle")&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4) Capturing the mousedown event (the name may be&lt;br /&gt;different) to switch on a "dragging mode"&lt;br /&gt;&amp;lt;rick_777&amp;gt; and popping a messagebox saying "dragging enabled"&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.1) Perhaps with that you could change some color in the&lt;br /&gt;jog control, like making the little tiny circle glow red&lt;br /&gt;&amp;lt;rick_777&amp;gt; like a LED light, that'd be cool&lt;br /&gt;&amp;lt;rick_777&amp;gt; 4.2) When the mouse button is released, make the tiny&lt;br /&gt;circle stop glowing&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;About the next meeting:&lt;br /&gt;&lt;br /&gt;Next meeting is scheduled, unless notified by the members, on Friday&lt;br /&gt;26/Dec/2008. If anyone has any problem with that, we can schedule the&lt;br /&gt;meeting to be held in January next year, or earlier this month.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7006958285656079351?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7006958285656079351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7006958285656079351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7006958285656079351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7006958285656079351'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/12/saya-developers-meeting-3-2008-11-28.html' title='Saya developers meeting #3 (2008-11-28): Summary of Activities'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2576858365582064335</id><published>2008-11-23T18:01:00.000-08:00</published><updated>2008-11-23T18:07:34.673-08:00</updated><title type='text'>Third screenshot: Playback controls!</title><content type='html'>With the help of Rigo, I've been able to design the playback controls for Saya.Note that the jog widget (a widget that allows you to skip frames by moving the mouse in circles) is missing, we haven't designed it yet.&lt;br /&gt;&lt;br /&gt;But basically this is how it'll look.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iBNw06Dsj6g/SSoMO4dX-MI/AAAAAAAAADw/5A6a62Xvwxo/s1600-h/playback_controls.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_iBNw06Dsj6g/SSoMO4dX-MI/AAAAAAAAADw/5A6a62Xvwxo/s400/playback_controls.png" alt="" id="BLOGGER_PHOTO_ID_5272039763603880130" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2576858365582064335?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2576858365582064335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2576858365582064335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2576858365582064335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2576858365582064335'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/11/third-screenshot-playback-controls.html' title='Third screenshot: Playback controls!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iBNw06Dsj6g/SSoMO4dX-MI/AAAAAAAAADw/5A6a62Xvwxo/s72-c/playback_controls.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-9055583140102382092</id><published>2008-11-06T18:19:00.000-08:00</published><updated>2008-11-06T18:28:29.280-08:00</updated><title type='text'>Settled with a new job... good/bad news.</title><content type='html'>The good news is that I got a new job, and that hopefully will have a fine pay.&lt;br /&gt;&lt;br /&gt;The bad news, is that my plans to work on Saya fulltime (with your donations) will no longer be realizable. Also, my workload for the next weeks will be somewhat heavy, so the development may slow down. Sorry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-9055583140102382092?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/9055583140102382092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=9055583140102382092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9055583140102382092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9055583140102382092'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/11/settled-with-new-job-goodbad-news.html' title='Settled with a new job... good/bad news.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-399305648492723604</id><published>2008-11-03T20:02:00.001-08:00</published><updated>2008-11-03T20:08:23.104-08:00</updated><title type='text'>Finally! Out of the bottleneck!</title><content type='html'>The hardest part in the design and implementation of a Video Editor is the streaming module. Since 3 months ago I've been breaking my head trying to implement it, but I've stumbled upon various obstacles, namely Audio / Video synchronization, audio buffers, handling of the differences between streaming (encoding) and playback, and dealing with latency issues.&lt;br /&gt;&lt;br /&gt;I spent nearly two months rewriting the code to use lock-free data structures (that will take care of latency issues), using 4 separate threads instead of one for playback, and finishing the design of the Audio/Video Input/Output devices.&lt;br /&gt;&lt;br /&gt;And I'm glad to announce that the most difficult part has been already coded! This month I'll be rewriting the demo to use the new playback engine, and altho the audio part hasn't been implemented yet, most of the design has been already settled (class AVController is 33% done - but trust me, that 33% was pretty hard!).&lt;br /&gt;&lt;br /&gt;Now I've told Rigo to hurry with his implementation of the playback controls so we can start testing and debugging the playback.&lt;br /&gt;&lt;br /&gt;I'll be updating the project status in the next few days to reflect the changes in the repository. All rejoice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-399305648492723604?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/399305648492723604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=399305648492723604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/399305648492723604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/399305648492723604'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/11/finally-out-of-bottleneck.html' title='Finally! Out of the bottleneck!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6866920857770605716</id><published>2008-10-24T19:00:00.000-07:00</published><updated>2008-10-24T19:01:57.654-07:00</updated><title type='text'>Saya-VE developers' meeting, Oct 24 / 08</title><content type='html'>Highlights:&lt;br /&gt;&lt;br /&gt;* There are some people interested in joining, but couldn't (or forgot to) join the chat.&lt;br /&gt;* I couldn't work on the project since I've been very busy at work - same for Rigo&lt;br /&gt;* All pending work will be revised on the next meeting&lt;br /&gt;&lt;br /&gt;The next meeting will be held on Friday, November 28 2008 at 8PM CDT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6866920857770605716?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6866920857770605716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6866920857770605716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6866920857770605716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6866920857770605716'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/10/saya-ve-developers-meeting-oct-24-08.html' title='Saya-VE developers&apos; meeting, Oct 24 / 08'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1592804442489277592</id><published>2008-10-09T22:11:00.000-07:00</published><updated>2008-10-09T22:18:27.000-07:00</updated><title type='text'>Saya development may stall for a couple of weeks...</title><content type='html'>I need to make an announcement. I'm going to install a new Linux distro on my box (I just can't stand PCLinuxOS anymore, there's so many things I need to run and they're not available on the repositories - plus, my install got borked somehow and I can't fix it. Primarily because the kernel I installed (2.6.24) isn't available on the PCLinuxOS free repository. Sigh), so polishing the install and leaving it usable might take me a couple of weeks of my free time. &lt;a target="_blank" href="http://saya-dev.blogspot.com/2008/10/mandriva-distro-headaches-and-mepis-80.html"&gt;More about it&lt;/a&gt; in the saya-dev blog.&lt;br /&gt;&lt;br /&gt;Also, I'm going to switch to a new job (where I get better pay) in 2 weeks - so these 2 weeks my boss will have me very busy - and very tired.&lt;br /&gt;&lt;br /&gt;So this leaves the development of Saya frozen *gulp* for a couple of weeks (let's hope it's not more than that). I'm sorry. If only there were more volunteers to help me out...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1592804442489277592?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1592804442489277592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1592804442489277592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1592804442489277592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1592804442489277592'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/10/saya-development-may-stall-for-couple.html' title='Saya development may stall for a couple of weeks...'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3268541759661012254</id><published>2008-10-03T20:37:00.000-07:00</published><updated>2008-10-03T20:45:48.365-07:00</updated><title type='text'>Project now accepts donations!</title><content type='html'>I finally set up whatever I needed to accept Sourceforge donations. If you want to contribute to this project with your cash, now you can! :D&lt;br /&gt;&lt;br /&gt;Donate here: &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://sourceforge.net/donate/index.php?group_id=230361"&gt;&lt;img src="http://1.bp.blogspot.com/_iBNw06Dsj6g/SObmWbYbiZI/AAAAAAAAADg/zRra0mb3LTA/s200/project-support.jpg" alt="" id="BLOGGER_PHOTO_ID_5253139288355998098" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3268541759661012254?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3268541759661012254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3268541759661012254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3268541759661012254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3268541759661012254'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/10/project-now-accepts-donations.html' title='Project now accepts donations!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iBNw06Dsj6g/SObmWbYbiZI/AAAAAAAAADg/zRra0mb3LTA/s72-c/project-support.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4157927101531616900</id><published>2008-09-27T21:39:00.000-07:00</published><updated>2008-09-27T21:42:25.487-07:00</updated><title type='text'>Saya-VE 2nd dev meeting (26/Sep/2008) Summary</title><content type='html'>This is a brief summary about what has been discussed in the second&lt;br /&gt;Saya-VE developers meeting.&lt;br /&gt;&lt;br /&gt;About the Team:&lt;br /&gt;&lt;br /&gt;* Nopalin wrote me an e-mail explaining some tragic circumstances that made it impossible for him to continue on the project.&lt;br /&gt;* b3rx hasn't reported back after several warnings, so he's been fired automatically. I've removed him from the website page because he never contributed with any code.&lt;br /&gt;* From now on, new members will have to contribute only via patches. On the meeting after a month of activity, we'll decide whether to add them officially to the team or not.&lt;br /&gt;* One person has contacted me via the blog, but I haven't received any e-mail. Let's see what happens.&lt;br /&gt;* So this means the only active developers are me (Rick), Rigobertoc and Javier. And since Javier hasn't reported yet, in the worst case it's only Rigobertoc and me. Recruitment is encouraged.&lt;br /&gt;&lt;br /&gt;About the tasks:&lt;br /&gt;&lt;br /&gt;* The timeline assigned to Javier Galicia hasn't been completed yet. For some mysterious reason he was unable to attend the meeting, too.&lt;br /&gt;* The threads module has been completed, and Rigo has worked on the Unit test for that. The multithread unit test is a critical task to continue working on the core.&lt;br /&gt;* The data structures for the timeline have been completely rewritten to allow (de)serialization. But deserialization hasn't been worked on.&lt;br /&gt;* The playback visual controls are stalled due to the work on the threads unit test. They've been given a lower priority.&lt;br /&gt;&lt;br /&gt;About the website, and Public Relations:&lt;br /&gt;&lt;br /&gt;* We have a new blog: &lt;a href="http://saya-dev.blogspot.com/"&gt;http://saya-dev.blogspot.com/&lt;/a&gt; This blog is mainly for unofficial developer documentation and to share stuff we've learned during development - like programming patterns, new algorithms, etc.&lt;br /&gt;* Our project has become an official member for the Open Source Video Editing Foundation. However, no activity or other formalization has been done. Personally (and this is a conjecture), I don't think  we'll see any changes in the near future. Let's hope I'm wrong.&lt;br /&gt;* All team members are to e-mail me a public profile so I can post it on the website.&lt;br /&gt;* Sourceforge has changed its web access method. More info can be found at http://sourceforge.net/community/forum/topic.php?id=3518&amp;page&amp;replies=1&lt;br /&gt;&lt;br /&gt;About future plans:&lt;br /&gt;&lt;br /&gt;* Once the core has been finished, work will focus on gstreamer integration and the playback controls. Once we get the playback, shuttle/jog  and scrubbing controls working, the project will be published on freshmeat.net and the first binary will be released on Sourceforge. From that, planning stage will be closed and we will enter "pre-alpha". Things will be smoother from then.&lt;br /&gt;&lt;br /&gt;About the next meeting:&lt;br /&gt;&lt;br /&gt;Though it hasn't been formalized (nor discussed during the meeting), it is expected for all meetings to take place on the last friday of the month. However, the last friday of October is 31, and it's probable that the various team members will be invited to a party due to the american tradition of Halloween. For that reason, the next meeting will be held on Friday, October 24.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4157927101531616900?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4157927101531616900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4157927101531616900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4157927101531616900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4157927101531616900'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/saya-ve-2nd-dev-meeting-26sep2008.html' title='Saya-VE 2nd dev meeting (26/Sep/2008) Summary'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7663385447812279661</id><published>2008-09-20T18:56:00.000-07:00</published><updated>2008-09-20T18:59:39.821-07:00</updated><title type='text'>C++ Programmer Wanted</title><content type='html'>As usual, we're accepting C++ developers who want to cooperate with the Saya Video Editor project.&lt;br /&gt;&lt;br /&gt;The requirements are simple: Being committed and accepting Open Source as a philosophy, having internet at home, have at least 4 hours to develop per week, and of course, a good knowledge and practice of C++. Multithread programming knowledge is a big plus.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7663385447812279661?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7663385447812279661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7663385447812279661' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7663385447812279661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7663385447812279661'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/c-programmer-wanted.html' title='C++ Programmer Wanted'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-281025169298176649</id><published>2008-09-12T18:03:00.000-07:00</published><updated>2008-09-12T18:06:24.188-07:00</updated><title type='text'>Website to be down on Sept. 15th and/or 16th.</title><content type='html'>I just received an announcement from Sourceforge informing me about an upcoming migration of the data centers on September 15th and 16h. Expect some website failures during that period.&lt;br /&gt;&lt;br /&gt;Thank you for your understanding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-281025169298176649?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/281025169298176649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=281025169298176649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/281025169298176649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/281025169298176649'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/website-to-be-down-on-sept-15th-and.html' title='Website to be down on Sept. 15th and/or 16th.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5102633858822842895</id><published>2008-09-09T22:32:00.001-07:00</published><updated>2008-09-09T22:34:16.349-07:00</updated><title type='text'>New "Progress Status" page uploaded.</title><content type='html'>Here it is. The page that will tell you how far we've been progressing on Saya.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sayavideoeditor.sourceforge.net/progress.shtml"&gt;http://sayavideoeditor.sourceforge.net/progress.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's categorized in sections, and each section is divided in items.&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5102633858822842895?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5102633858822842895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5102633858822842895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5102633858822842895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5102633858822842895'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/new-progress-status-page-uploaded.html' title='New &quot;Progress Status&quot; page uploaded.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7648516118391369461</id><published>2008-09-07T12:31:00.000-07:00</published><updated>2008-09-07T21:52:20.192-07:00</updated><title type='text'>"Open Source Video Editing Foundation" created!</title><content type='html'>A guy from a group dedicated to video editing asked me to join him and get to talk with the authors of other video editing software.&lt;br /&gt;&lt;br /&gt;I was reluctant at first - why bother people with other video editors much more advanced than Saya? But He insisted, forwarding his mails to the other people, who joined the conversation. Through a series of e-mails with a bunch of people in the CC: headers, we (I don't even remember who were the other people, this happened too fast) have talked about licensing issues, the (now rejected) idea of forming a spec, having a "core library" common to new video editors (I hope Saya's gets chosen ;-) ), alternative OS's like Haiku (an open source BeOS), Freebsd, stuff about politics, about having talks with Stallman's FSF, and whatnot.&lt;br /&gt;&lt;br /&gt;After around 15 e-mail replies, the Google group has been founded. So this thing is getting momentum. We've all agreed that minority platforms (with Linux being the greatest) need a working Open Source Video Editor, and we've informally agreed to share source and tech reports.&lt;br /&gt;&lt;br /&gt;Here's the URL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/open-source-video-editing-foundation/"&gt;http://groups.google.com/group/open-source-video-editing-foundation/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is a website under construction, whose domain is yet to be announced.&lt;br /&gt;&lt;br /&gt;Now, I really don't know how this started. It was pretty spontaneous. But there are various Open Source developers in the group, including but not limited to  &lt;a href="http://traverso-daw.org/"&gt;Traverso&lt;/a&gt;, &lt;a href="http://atheme.org/index.php/Atheme"&gt;Atheme&lt;/a&gt;, etc. (maybe it's time to invite the Lumiera guys).&lt;br /&gt;&lt;br /&gt;But  I guarantee you, this thing is 100% organic grassroot. I was expecting Saya to get attention from &lt;a href="http://en.wikipedia.org/wiki/Free_and_Open_Source_Software"&gt;f/oss&lt;/a&gt; developers, but not THIS soon! In any case, this gives me more incentives to keep working on Saya.&lt;br /&gt;&lt;br /&gt;This is getting interesting.... VERY interesting B-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7648516118391369461?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7648516118391369461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7648516118391369461' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7648516118391369461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7648516118391369461'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/open-source-video-editing-foundation.html' title='&quot;Open Source Video Editing Foundation&quot; created!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-8034014802452213386</id><published>2008-09-03T20:46:00.001-07:00</published><updated>2008-09-03T20:50:28.997-07:00</updated><title type='text'>Unofficial dev blog created!</title><content type='html'>As I keep learning new programming techniques and algorihtms, I decided I couldn't just keep them to myself. The world needs to know.&lt;br /&gt;&lt;br /&gt;But that doesn't belong to the project, so I decided I would create a new blog:&lt;br /&gt;&lt;br /&gt;"Saya Video Editor unofficial dev blog"&lt;br /&gt;&lt;br /&gt;It's available at &lt;a href="http://saya-dev.blogspot.com/"&gt;http://saya-dev.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This way I can post somewhere else the technical stuff I do about Saya (or about any other thing for that matter), and keep this blog for Press, Media Attention and Public Relations, among other synonyms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-8034014802452213386?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/8034014802452213386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=8034014802452213386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8034014802452213386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8034014802452213386'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/unofficial-dev-blog-created.html' title='Unofficial dev blog created!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-483010959026008826</id><published>2008-09-02T22:42:00.001-07:00</published><updated>2008-09-02T23:03:16.432-07:00</updated><title type='text'>Threads module almost completed!</title><content type='html'>It was like a rollercoaster ride. At first I thought it would be much easier, like "Ok just do your stuff on the wrappers and built a bit more wrappers around pthreads and windows functions. How hard can it be?"&lt;br /&gt;&lt;br /&gt;Oh, boy. As I was examining the wxWidgets code that I modelled the classes after (turns out I ended up copying a lot of it - don't worry, all copyright notices are left intact), I realized that Windows XP doesn't implement condition variables (but Vista does - who'd tell?).&lt;br /&gt;&lt;br /&gt;Huh?&lt;br /&gt;&lt;br /&gt;Ok, to get you in perspective: There are three basic kinds of thread organization objects: Mutexes, Semaphores, and Conditions.&lt;br /&gt;&lt;br /&gt;----------- begin boring explanation -----------&lt;br /&gt;A mutex is an object that can be locked by ONLY one thread. The locking of a mutex is called an "atomic operation", it means that you won't be interrupted by another thread while you're doing your stuff. And as long as the mutex is locked, you're safe.&lt;br /&gt;&lt;br /&gt;(There is an equivalent of mutexes for threads of only one process, they're called critical sections. Instead of locking / unlocking, you enter and leave them. But they're practically the same.)&lt;br /&gt;&lt;br /&gt;A semaphore is like a racing semaphore:  One process is the car that "waits" for the semaphore to turn green, another process is the guy in charge of the semaphore. The interesting thing is that ANY process can set the semaphore to green, and this is where things get interesting.&lt;br /&gt;&lt;br /&gt;A "condition" is kinda the opposite of a semaphore: Instead of many guys signaling one car, it's one guy signaling ONE or MANY cars. You can signal all (it's called a broadcast), or only one.  But a condition requires a mutex for organization, it's kinda complicated. But it lets you send signals to a thread when you want to tell it to do something (if it's not busy already).&lt;br /&gt;----------- end boring explanation -----------&lt;br /&gt;Anyway, here's the trick: Conditions aren't implemented in windows, so you have to implement them using Semaphores and Mutexes (which are implemented).&lt;br /&gt;But in Posix, you don't have semaphores, so you have to implement them using conditions and mutexes.&lt;br /&gt;&lt;br /&gt;So here I was, copying code and organizing it. Then I realized that the most difficult part was the mess of creating a thread. It's not just a single call, you needto set up parameters, implement error handling functions ,etc. etc.&lt;br /&gt;&lt;br /&gt;And I realized that the posix implementation of threads in wxWidgets was much cleaner than the windows one. So I reorganized it and spared some windows-specific "optimizations" (they're actually more like shortcuts, for example, in Windows you can start a thread in dormant state, but in posix you need to use a semaphore to make it sleep). So by doing that the code looked much cleaner.&lt;br /&gt;&lt;br /&gt;I still need to implement/copy/adapt the code for killing a thread, and the code to delete all threads on program shutdown. It's easier now that I've implemented/copied/adapted nearly everything.&lt;br /&gt;&lt;br /&gt;When I do my first thread experiment, it'll be quite fun. I spent many nights this week trying to finish this.&lt;br /&gt;&lt;br /&gt;The bad news, is that as things look, it's probable we won't have a workable video editor by the end of this year (I began in May, and it's September already? Aw crap). It might take another 6 months or more. But at least I know that I'm much more advanced than I was when I started the project.&lt;br /&gt;&lt;br /&gt;But let me tell you. When I get the core finished, things will start to get REALLY interesting. I'll keep you updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-483010959026008826?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/483010959026008826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=483010959026008826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/483010959026008826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/483010959026008826'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/09/threads-module-almost-completed.html' title='Threads module almost completed!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1757842201133566216</id><published>2008-08-29T22:30:00.000-07:00</published><updated>2008-08-29T22:35:23.922-07:00</updated><title type='text'>Saya-VE 1st dev meeting (29/Aug/2008) Summary</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Saya-VE 1st developer meeting (29/Aug/2008) Summary of activities.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CHANGES IN THE TEAM: &lt;/span&gt;&lt;br /&gt;&lt;p&gt;* Developers who were silently kicked out (suprise! This wasn't&lt;br /&gt;mentioned in the meeting) due to lack of activity and reporting :&lt;br /&gt;Nopalin, Wireshark. Note to Nopalin: You earned points by developing&lt;br /&gt;part of the UI, you have a lot of chances of being accepted again.&lt;br /&gt;Please message me.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Developers who left: C.J. Barker.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Developers who joined: Rigoberto C., Javier Galicia&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;OFFICIAL STATEMENTS: &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Official communications channel for the devs are this group (&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="http://groups.google.com/group/saya-dev/"&gt;http://groups.google.com/group/saya-dev/&lt;/a&gt; )&lt;br /&gt;and gmail chat (aka GTalk, Jabber). For this, all members are required&lt;br /&gt;to get a GMail account and enable their chat in their gmail page.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* The project HQ is located at developer.berlios.de, project's name:&lt;br /&gt;"saya". Here we'll deal with bugs, features, tasks, and the SVN&lt;br /&gt;repository is located there.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Sourceforge will be used ONLY for the website ( &lt;a target="_blank" rel="nofollow" href="http://sayavideoeditor.sourceforge.net/"&gt;http://sayavideoeditor.sourceforge.net/&lt;/a&gt;&lt;br /&gt;) and for releasing binaries / docs.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;(oops, forgot to say in the meeting: Devs must get accounts both at&lt;br /&gt;Berlios and Sourceforge)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Meetings like this one will take place every last Friday of the&lt;br /&gt;month, at 8PM CDT (that's -0600 with daylight savings). The calendar&lt;br /&gt;can be seen at&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="http://www.google.com/calendar/embed?src=sbij7s3h23o0bhrrt4kmeppisk%40group.calendar.google.com&amp;amp;ctz=America/Mexico_City"&gt;http://www.google.com/calendar/embed?src=sbij7s3h23o0bhrrt4kmeppisk%4...&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Members will be given write-access to the calendar as they prove&lt;br /&gt;their worth.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* New members must prove their worth by submitting one or two patches&lt;br /&gt;before being given SVN access.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* If a dev won't be available for some time (i.e. vacations), he MUST&lt;br /&gt;post it on this group (there's a specific thread for it).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* A "status with progress bars" page will be added to the website.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Links with research info will be given to me so I can post them on&lt;br /&gt;the website, under the "research" page.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;TASKS GIVEN: &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Jeff is the Vegas expert. Ask him anything about UI design. He'll&lt;br /&gt;also design the progress report with colored bars, which I'll post on&lt;br /&gt;the website as soon as it's given to me.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Bertrand will work on the CODEC module (GStreamer)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* I (rick) will work on the CORE and RENDERER module. The effects /&lt;br /&gt;rendering part is still pending. If anyone wants to give me a hand&lt;br /&gt;with the thread classes implementation, he's welcome.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Javier Galicia will work on the Timeline. If anyone knows wxWidgets,&lt;br /&gt;give him a hand.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* Rigoberto C. Will work on the playback controls for the preview&lt;br /&gt;window.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;NEXT MEETING WILL TAKE PLACE ON: &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Date: September 26, same hour (8PM CDT, that is -0600 GDT).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Server: irc.freenode.net (make sure you register your nickname by /msg&lt;br /&gt;NickServ register &lt;yourpassword&gt;).&lt;br /&gt;&lt;/yourpassword&gt;&lt;/p&gt;&lt;p&gt;Channel: #saya-dev&lt;br /&gt;&lt;/p&gt;See the calendar for details.&lt;br /&gt;&lt;br /&gt;Note: Remember, this meeting will be devs-ONLY. Foreigners will be kicked out and thrown to the dogs :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1757842201133566216?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1757842201133566216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1757842201133566216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1757842201133566216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1757842201133566216'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/saya-ve-1st-dev-meeting-29aug2008.html' title='Saya-VE 1st dev meeting (29/Aug/2008) Summary'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4309358434260724055</id><published>2008-08-29T19:55:00.001-07:00</published><updated>2008-08-29T20:00:09.137-07:00</updated><title type='text'>First Devs Meeting a huge success!</title><content type='html'>Finally I got to get all the team members online. Unfortunately, some devs did not attend and didn't even report themselves. They'll be removed from the project ipso-facto (sorry, gave enough warnings and this isn't a treehouse club).&lt;br /&gt;&lt;br /&gt;Another bad news: CJ Barker had to leave the project, his schedule became very tight all of a sudden, and this will be a long-term thing. We'll miss you.&lt;br /&gt;&lt;br /&gt;About the meeting:&lt;br /&gt;&lt;br /&gt;We talked about ourselves (brief intro), project expectations, official communication channels and how to organize ourselves. I also set up tasks to do. Expect a "Progress bar" to appear in the webpage soon. The meeting log will appear on our private google group.&lt;br /&gt;&lt;br /&gt;I'll keep you updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4309358434260724055?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4309358434260724055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4309358434260724055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4309358434260724055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4309358434260724055'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/first-devs-meeting-huge-success.html' title='First Devs Meeting a huge success!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2885430748417270531</id><published>2008-08-16T06:39:00.001-07:00</published><updated>2008-08-16T06:44:17.948-07:00</updated><title type='text'>Vacations, and a member is back! Kinda</title><content type='html'>Hello everyone! Posting from the beautiful lake landscape of Guadalajara. The air's clean in here! :P&lt;br /&gt;&lt;br /&gt;I got an unexpected message from one of the more "quiet" members of the team. Due to circumstances above his control, he completely could not login for almost 2 months!&lt;br /&gt;&lt;br /&gt;(I'm telling you, this project is cursed! Hard drives crashing, people getting fired and/or having car accidents, is this some kind of conspiracy?)&lt;br /&gt;&lt;br /&gt;But everything's going smooth. That other dev is back, and I just found a new programmer from Mexico (thanks OHLOH.NET) very eager to join the team!&lt;br /&gt;&lt;br /&gt;So, we might be late on the schedule, but this project is not turning back!&lt;br /&gt;&lt;br /&gt;I'll keep in touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2885430748417270531?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2885430748417270531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2885430748417270531' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2885430748417270531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2885430748417270531'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/vacations-and-member-is-back-kinda.html' title='Vacations, and a member is back! Kinda'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-8597051604708934531</id><published>2008-08-12T06:42:00.000-07:00</published><updated>2008-08-12T06:43:27.983-07:00</updated><title type='text'>Taking a one-week vacation this friday.</title><content type='html'>This Friday I'll go visit an old internet friend. I'll also intall Linux on his PC ;-)&lt;br /&gt;So I'll be out for a week, and go back this August 25.&lt;br /&gt;&lt;br /&gt;*sigh* 4 months and the project has been very slow in progressing :(&lt;br /&gt;&lt;br /&gt;Anyway - If you don't hear from me the next month it means a bus hit me or a plane crashed on me or something. Please pray for my safe return and everything :)&lt;br /&gt;&lt;br /&gt;When I return, we'll arrange a devs-only meeting on irc. Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-8597051604708934531?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/8597051604708934531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=8597051604708934531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8597051604708934531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8597051604708934531'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/taking-one-week-vacation-this-friday.html' title='Taking a one-week vacation this friday.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7417318207563494857</id><published>2008-08-12T06:11:00.000-07:00</published><updated>2008-08-12T06:41:54.774-07:00</updated><title type='text'>Playback framework, high resolution timers.</title><content type='html'>I've advanced in the playback framework - the core of our editor. I've designed the AVController class, and I'm in the playback part - the part where you move data from the input to the output and keep the video and audio in sync.&lt;br /&gt;&lt;br /&gt;For that I had to program  a high-resolution (millisecond precision) function. Basing myself on the SDL's API, I build the syGetTicks() function - it gives you the number of milliseconds that have passed since the program was started. Unfortunately the stupid Windows API didn't have a Unix time-compatible function, so I had to break my head trying to make it work.&lt;br /&gt;&lt;br /&gt;The Windows GetSystemTimeAsFiletime returns a 64-bit integer (well, 2 32-bit integers actually) that gives you the number of 100-nanosecond units (Whiskey Tango Foxtrot?!) since 1600. Wha? How am I supposed to convert that?&lt;br /&gt;&lt;br /&gt;Well, easy. You just divide it by 10,000,000. And how to do that with 32 bit math?&lt;br /&gt;&lt;br /&gt;Easy. Let's use some algebra.&lt;br /&gt;&lt;br /&gt;(A * 2^32 + B ) / C =  (B/C) + (A*2^32 / C )&lt;br /&gt;&lt;br /&gt;The low part of the division is taken care of. And the second, is just as simple:&lt;br /&gt;&lt;br /&gt;(A * 2^32) / 10^7 =  A * (2^32/10^7) = A * 429.4967296&lt;br /&gt;&lt;br /&gt;What do you think? We only have to multiply the high part by a floating point number and we'll get our result. However... we don't want to use floating point math in a high-resolution timing routine. So Instead, we'll do this:&lt;br /&gt;&lt;br /&gt;A * 429.4967296 = (A*429) + (A*0.496) + (A*0.0007296)&lt;br /&gt;&lt;br /&gt;Luckily, these numbers have fractional equivalents.&lt;br /&gt;&lt;br /&gt;A * 429.4967296 = (A*429) + ((A*62)/125) + ((A*57)/78125).&lt;br /&gt;&lt;br /&gt;Ta-da! So the final result is:&lt;br /&gt;&lt;br /&gt;result = (low / 10000000) + ((hi*57)/78125) + ((hi*62)/125) + (hi* 429);&lt;br /&gt;&lt;br /&gt;And we have the WINNT 32-bit equivalent for obtaining the number of seconds since... something.&lt;br /&gt;&lt;br /&gt;If at startup we obtain an initial counter, for subsequent calls we only need to substract that number and we'll obtain the number of seconds that have ellapsed since we turned on our PC.&lt;br /&gt;&lt;br /&gt;To obtain the milliseconds for the ticks, it was easier. Windows has a GetTickCount() function, but we can't use it since it based itself on the number of milliseconds since midnight. So we just obtain the modulo 1000 and stay with the milliseconds part.&lt;br /&gt;&lt;br /&gt;Here are the final functions. The sy prefix is for "saya". Note that the Windows part hasn't been tested yet :P&lt;br /&gt;If you want the final version, please check the Saya-VE source code (SVN) at &lt;br /&gt;&lt;a href="http://developer.berlios.de/projects/saya/"&gt;http://developer.berlios.de/projects/saya/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-size:10px"&gt;&lt;br /&gt;/**************************************************************&lt;br /&gt; * Cross-platform High resolution timer functions.&lt;br /&gt; * Copyright: Ricardo Garcia&lt;br /&gt; * Website:   http://sayavideoeditor.sourceforge.net/&lt;br /&gt; * License:   WxWindows License&lt;br /&gt; **************************************************************/&lt;br /&gt;unsigned long syGetTime();&lt;br /&gt;&lt;br /&gt;unsigned long sySecondsAtInit = syGetTime();&lt;br /&gt;&lt;br /&gt;unsigned long syGetTime() {&lt;br /&gt;    unsigned long result;&lt;br /&gt;    #ifdef __WIN32__&lt;br /&gt;        FILETIME ft;&lt;br /&gt;        GetSystemTimeAsFiletime(&amp;ft);&lt;br /&gt;        unsigned long low = ft.dwLowDateTime;&lt;br /&gt;        /* We spare the highest 16 bits;&lt;br /&gt;           we don't want to overflow the calculation. */&lt;br /&gt;        unsigned long hi  = ft.dwHighDateTime &amp; 0x0ffff;&lt;br /&gt;        result = (low / 10000000) + &lt;br /&gt;                 ((hi*57)/78125) + &lt;br /&gt;                 ((hi*62)/125) + &lt;br /&gt;                 (hi* 429);&lt;br /&gt;    #else&lt;br /&gt;        struct timeval mytime;&lt;br /&gt;        gettimeofday(&amp;mytime, NULL);&lt;br /&gt;        result = (unsigned long)(mytime.tv_sec);&lt;br /&gt;    #endif&lt;br /&gt;    return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;unsigned long syGetTicks() {&lt;br /&gt;    unsigned long result;&lt;br /&gt;    #ifdef __WIN32__&lt;br /&gt;        result = (syGetTime() - sySecondsAtInit) + &lt;br /&gt;                 (GetTickCount() % 1000);&lt;br /&gt;    #else&lt;br /&gt;        struct timeval mytime;&lt;br /&gt;        gettimeofday(&amp;mytime, NULL);&lt;br /&gt;        result = (unsigned long)(mytime.tv_sec - sySecondsAtInit)*1000;&lt;br /&gt;        result += (((unsigned long)(mytime.tv_usec)) / 1000);&lt;br /&gt;    #endif&lt;br /&gt;    return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7417318207563494857?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7417318207563494857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7417318207563494857' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7417318207563494857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7417318207563494857'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/playback-framework-high-resolution.html' title='Playback framework, high resolution timers.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5797413030717182432</id><published>2008-08-07T21:30:00.000-07:00</published><updated>2008-08-07T21:35:19.857-07:00</updated><title type='text'>How to implement the renderers? Draft 1.</title><content type='html'>Actually this is more like a brainstorm, but bear with me :)&lt;br /&gt;&lt;br /&gt;So far, we have been able to make a workable implementation of VideoOutputDevice. It has the following members:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class VideoOutputDevice : public syAborter {&lt;br /&gt;   public:&lt;br /&gt;       VideoOutputDevice(); // Constructor&lt;br /&gt;       bool Init(); // Initialices the output device&lt;br /&gt;       bool IsOk(); // Is the device OK?&lt;br /&gt;       bool IsPlaying(); // Is the device currently being transmitted data?&lt;br /&gt;       void ShutDown(); // Can only be called from the main thread!&lt;br /&gt;       VideoColorFormat GetColorFormat();&lt;br /&gt;       unsigned int GetWidth();&lt;br /&gt;       unsigned int GetHeight();&lt;br /&gt;       bool ChangeSize(unsigned int newwidth,unsigned int newheight);&lt;br /&gt;       // Can only be called from the main thread!&lt;br /&gt;&lt;br /&gt;       void LoadVideoData(syBitmap* bitmap);&lt;br /&gt;       virtual bool MustAbort();&lt;br /&gt;       virtual ~VideoOutputDevice(); // Destructor&lt;br /&gt;   protected:&lt;br /&gt;   //    ...&lt;br /&gt;   private:&lt;br /&gt;   //    ...&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The renderer must invoke VideoOutputDevice::Init on playback start and VideoOutputDevice::Shutdown&lt;br /&gt;on playback end;  he same for AudioOutputDevice::Init and AudioOutputDevice::ShutDown.&lt;br /&gt;Additionally, it must call VideoOutputDevice::LoadVideoData regularly (in case of playback) or for every frame&lt;br /&gt;(in case of encoding). Therefore, it requires a way to know the input's framerate. Also it needs to know the&lt;br /&gt;input's audio frequency.&lt;br /&gt;&lt;br /&gt;It requires to be multithreaded so that the framerate doesn't depend on the main thread's GUI being blocked&lt;br /&gt;or something.&lt;br /&gt;&lt;br /&gt;Let's assume that it's VidProject which tells the renderer what the framerate is.&lt;br /&gt;&lt;br /&gt;So we have:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;void Renderer::Init(VideoInputDevice* videoin,AudioInputDevice* audioin,&lt;br /&gt;                   VideoOutputDevice* videoout,AudioOutputDevice* audioout);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With this we mean we're gonna need new classes for input: VideoInputDevice and AudioInputDevice.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;bool Renderer::SetVideoFramerate(float framerate);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And now, onto the playback functions:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;void Renderer::Play(float speed = 1.0,bool muted = false);&lt;br /&gt;void Renderer::Pause();&lt;br /&gt;void Renderer::Stop();&lt;br /&gt;void Renderer::Seek(unsigned long time); // Time in milliseconds to seek to&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All that's fine, but what happens when we want to display a still frame? We don't know what video output device we&lt;br /&gt;have - a player or an encoder-, so there must be some way to send a still frame to the video device.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;void Renderer::PlayFrame();&lt;br /&gt;// (Note that this should be either a protected function or only be enabled when&lt;br /&gt;the video is paused; otherwise we could desync video and audio)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now that I think of it, sending still frames is what the Video Playing does. Every N milliseconds, we send a frame to the&lt;br /&gt;output buffer. So there must be separate seeks for video and audio.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;void Renderer::SeekVideo(unsigned long time);&lt;br /&gt;void Renderer::SeekAudio(unsigned long time);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And if we're seeking, there must be a way to tell if we're past the clip's duration.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;bool Renderer::IsVideoEof();&lt;br /&gt;bool Renderer::IsAudioEof();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And it seems we'll need separate video and audio functions for everything (edit: NOT!)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   void Renderer::PlayVideo(float speed = 1.0);&lt;br /&gt;   void Renderer::PlayAudio(float speed = 1.0);&lt;br /&gt;   void Renderer::PauseVideo();&lt;br /&gt;   void Renderer::PauseAudio();&lt;br /&gt;   void Renderer::StopVideo();&lt;br /&gt;   void Renderer::StopAudio();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;   But I wonder if having separate stop functions would be good at all because of sync issues. I mean, if we don't&lt;br /&gt;   want the audio or video to be shown we just don't decode it. It's matter of seeking, decoding, and sending.&lt;br /&gt;   So PlayVideo and Play Audio will just disable video and / or audio, and will only need pause, stop.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   void Renderer::PauseVideo(); SCRAPPED&lt;br /&gt;   void Renderer::PauseAudio(); SCRAPPED&lt;br /&gt;   void Renderer::StopVideo(); SCRAPPED&lt;br /&gt;   void Renderer::StopAudio(); SCRAPPED&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I think that with this info we'll be able to design a good rendering / playback framework.&lt;br /&gt;Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5797413030717182432?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5797413030717182432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5797413030717182432' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5797413030717182432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5797413030717182432'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/how-to-implement-renderers-draft-1.html' title='How to implement the renderers? Draft 1.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4949433356760449748</id><published>2008-08-06T22:15:00.000-07:00</published><updated>2008-08-06T22:17:58.246-07:00</updated><title type='text'>syBitmap finished! Now what?</title><content type='html'>The dev in charge of the Video playback controls is going to be away this week. So maybe it's time to start designing the Renderer API.&lt;br /&gt;&lt;br /&gt;Which functions will it have? How will it tell the codecs to read a file? How to handle video and audio sync? How to handle the threads?&lt;br /&gt;&lt;br /&gt;Too many questions, any help appreciated. Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4949433356760449748?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4949433356760449748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4949433356760449748' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4949433356760449748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4949433356760449748'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/sybitmap-finished-now-what.html' title='syBitmap finished! Now what?'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6925472065340640272</id><published>2008-08-06T06:00:00.000-07:00</published><updated>2008-08-06T06:38:05.044-07:00</updated><title type='text'>Saya-VE without SDL, experiment 1</title><content type='html'>Finally, my efforts are beginning to show results.  I realized that I had committed several mistakes (read-as: bugs) while implementing wxVideoPanel. While fixing them, I also improved the code a little.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Additional bitmap&lt;/span&gt;&lt;br /&gt;The most important bug was trying to save time by not creating another buffer. This caused a crash when resizing the panel under certain conditions. By using another buffer for wxVideoPanel, and updating it from wxVideoOutputDevice::Renderdata(), I could finally be sure that the wxVideoOutputDevice's bitmap was not accessed at the wrong time. As a bonus, this meant that while the video is paused, I still keep a copy of the buffer (oops... now that I think of it, when resizing, the bitmap info is actually lost. I'll fix that soon).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;syBitmapCopier&lt;/span&gt;&lt;br /&gt;I finished implementing the syBitmapCopier class. Most functions are inline, so no stack space will be used when invoking them (well, some variables were required, but those are unavoidable).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;syAborter&lt;/span&gt;&lt;br /&gt;I also did some clean up. I moved all the thread functions to syBitmap. I replaced the VideoOutputDevice* pointer from syVODBitmap and replaced it with an syAborter* pointer. syAborter is an abstract class that has only one method: bool MustAbort(), which indicates if an expensive operation must be aborted immediately. Then, I made  VideoOutputDevice and AudioOutputDevice subclasses of syAborter.&lt;br /&gt;&lt;br /&gt;What this means: syBitmap has all the required functions to be thread safe, and integration with ANY VideoOutputDevice class will be a piece of cake.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Classes cleanup&lt;/span&gt;&lt;br /&gt;Now that all the syVODBitmap functions were moved to syBitmap, syVODBitmap was no longer necessary, so I deleted it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And now, ladies and gentlemen... the demo!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The last bug I had made was calling an expensive wxWidgets function inside a for(x)... for(y) loop. No wonder the display was so slow. But now the wxVideoPanel demo is fully functional. And here it is!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iBNw06Dsj6g/SJmm3ZxlyII/AAAAAAAAABs/bD5lUNDfScE/s1600-h/wxpaneldemo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iBNw06Dsj6g/SJmm3ZxlyII/AAAAAAAAABs/bD5lUNDfScE/s400/wxpaneldemo.jpg" alt="" id="BLOGGER_PHOTO_ID_5231395912909441154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Demo() function (actually, method) of wxVideoPanel, regularly creates a nice colored image or arbitrary dimensions (the ripples change every 5ms approximately) which is later scaled to fit in the panel's dimensions. This way, no matter if your video is 4:3 or 16:9, it won't be distorted.&lt;br /&gt;&lt;br /&gt;After being created, the image is sent to wxVideoOutputDevice via the LoadVideoData() method. This method copies the data to its own bitmap, and then, in its RenderData() method, it calls wxVideoPanel::LoadData().&lt;br /&gt;&lt;br /&gt;wxVideoPanel::LoadData() locks its own bitmap and pastes the data. wxVideoPanel's bitmap is locked because there are two other functions that access it (each one locks the bitmap as well) : OnResize, and OnPaint.&lt;br /&gt;&lt;br /&gt;wxVideoPanel::OnIdle() checks if new data has been loaded, and calls OnPaint() if necessary. OnPaint() uses a wxBufferedDC to repaint the screen.&lt;br /&gt;&lt;br /&gt;This way, we have our nicely colored image which changes in realtime without flickering at all. Ta-da!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6925472065340640272?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6925472065340640272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6925472065340640272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6925472065340640272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6925472065340640272'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/saya-ve-without-sdl-experiment-1.html' title='Saya-VE without SDL, experiment 1'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iBNw06Dsj6g/SJmm3ZxlyII/AAAAAAAAABs/bD5lUNDfScE/s72-c/wxpaneldemo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-314420897955882896</id><published>2008-08-04T11:52:00.000-07:00</published><updated>2008-08-04T12:09:29.557-07:00</updated><title type='text'>From SDL to MyOwnVideoImplementation (TM)</title><content type='html'>After trying out the SDL video demo, I realized that for a video editor I won't be needing to use sprites, 3D textures or anything like that. It would be esier to write my own Bitmap buffer in memory.  So I did, and I ended up creating the wxVideoPanel and wxVideoOutputDevice classes.&lt;br /&gt;&lt;br /&gt;Unfortunately, the screen refreshing routines were awful. No, worse. They were hideous. I had to calculate everything manually, handle the pixel color spaces, etc. There had to be a better way. And hence, I came up with syBitmap: A cross-platform implementation of an in-memory bitmap. It has a virtual MustAbort() function which you can adapt for multi-threading purposes.&lt;br /&gt;Currently I've been able to replicate the SDL example, but I was too busy and tired so I couldn't upload the screenshot.&lt;br /&gt;&lt;br /&gt;As an added bonus, I created the derived class syVODBitmap (VOD stands for Video Output Device), which also has Lock() and Unlock() functions (also for multi-threading).&lt;br /&gt;&lt;br /&gt;The best part is that I could add a PasteFrom function in syBitmap, so that the copying also scales and centers the source bitmap so it will fit the destination. Unfortunately, the implementation isn't as fast as I wanted because it uses floating point math. But I plan to replace it with fixed point math so copying won't become an overhead.&lt;br /&gt;&lt;br /&gt;Still, the implementation is both ugly and slow. So I ended up creating another class (which I have yet to commit to SVN): syBitmapCopier. The idea behind it is this: Instead of having to calculate a pointer by multiplying y*width and then adding x, and then obtaining the color format of the pixels, we just init the class with the source and destination bitmaps, and these members are calculated only once.&lt;br /&gt;&lt;br /&gt;I have designed functions to copy pixels and increment only the source pointer, only the destination pointer, or both. I've also designed functions to copy entire rows and advance either / both of the pointers by one full row. This way we'll have no worries about having to recalculate parameters for each pixel or passing them through the stack. Who knows, maybe I can inline all of these functions to get a super-efficient bitmap copier.&lt;br /&gt;&lt;br /&gt;As soon as I finish the syBitmapCopier implementation, I'll make a multi-threaded demo to see how many frames per second I can get. And then I'll start making the Video playback UI, which is already overdue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-314420897955882896?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/314420897955882896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=314420897955882896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/314420897955882896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/314420897955882896'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/08/from-sdl-to-myownvideoimplementation-tm.html' title='From SDL to MyOwnVideoImplementation (TM)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4223551070949782792</id><published>2008-07-27T21:50:00.001-07:00</published><updated>2008-07-27T22:13:42.500-07:00</updated><title type='text'>Saya-VE with SDL, experiment 1</title><content type='html'>I pasted and adapted some code from the wx-sdl project (see link in previous entry) into Saya. I created a new class called SDLPanel (original, heh?), and used it instead of a common wxPanel.&lt;br /&gt;&lt;br /&gt;So far, here's how the painting works:&lt;br /&gt;&lt;br /&gt;1) Check if the panel has an active SDL_Surface object&lt;br /&gt;&lt;pre&gt;// can't draw if the screen doesn't exist yet&lt;br /&gt;if (!m_Screen) {&lt;br /&gt;return;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;2) Lock the SDL_Surface. This thing is thread-safe!&lt;br /&gt;&lt;pre&gt;// lock the surface if necessary&lt;br /&gt;if (SDL_MUSTLOCK(m_Screen)) {&lt;br /&gt;if (SDL_LockSurface(m_Screen) &gt; 0) {&lt;br /&gt;    return;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3) Create an in-memory bitmap (a wxImage) based on a SDL_Surface's memory. Once you got the image, you create a wxBitmap based on the wxImage. I really hope this isn't double-memory copying and that the wxImage uses the actual memory.&lt;br /&gt;&lt;pre&gt;// create a bitmap from our pixel data&lt;br /&gt;wxBitmap bmp(wxImage(m_Screen-&gt;w, m_Screen-&gt;;h,&lt;br /&gt;           static_cast{unsigned char *}(m_Screen-&gt;pixels), true));&lt;br /&gt;&lt;br /&gt;(NOTE: I use braces instead of less than and greater than because the code&lt;br /&gt;is altered by blogger's html tidying routines)&lt;br /&gt;&lt;/pre&gt;4) Now that we created the bitmap, we can safely unlock the SDL_Surface.&lt;br /&gt;&lt;pre&gt;   // unlock the screen&lt;br /&gt;if (SDL_MUSTLOCK(m_Screen)) {&lt;br /&gt;   SDL_UnlockSurface(m_Screen);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;5) The painting is done with standard techniques:&lt;br /&gt;&lt;pre&gt;   // paint the screen&lt;br /&gt;wxBufferedPaintDC dc(this, bmp);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For our purposes, the SDL_Surface can be a software bitmap without 3D acceleration, residing in the computer's RAM. In other words, it's a &lt;b&gt;plain and simple memory buffer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;And I had to load a full-fledged multimedia library for a simple in-memory bitmap!?!? C'mon!! But hey, it works :D&lt;br /&gt;&lt;br /&gt;Here's the screenshot (note: the little color lines actually vary in real-time, it's cool).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_iBNw06Dsj6g/SI1TPFNFVVI/AAAAAAAAABk/2-TESI8LDyo/s1600-h/saya_sdl.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_iBNw06Dsj6g/SI1TPFNFVVI/AAAAAAAAABk/2-TESI8LDyo/s400/saya_sdl.jpg" alt="" id="BLOGGER_PHOTO_ID_5227926261007209810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sweet, isn't it? Too bad I'll have to change the code back to keep working on this.&lt;br /&gt;&lt;br /&gt;But from this we can incorporate the VideoOutputDevice class so we can actually display clips and images. This will be a major breakthrough in our editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4223551070949782792?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4223551070949782792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4223551070949782792' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4223551070949782792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4223551070949782792'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/saya-ve-with-sdl-experiment-1.html' title='Saya-VE with SDL, experiment 1'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_iBNw06Dsj6g/SI1TPFNFVVI/AAAAAAAAABk/2-TESI8LDyo/s72-c/saya_sdl.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2596152621386737259</id><published>2008-07-23T20:45:00.000-07:00</published><updated>2008-07-23T20:51:06.381-07:00</updated><title type='text'>First experiences with SDL</title><content type='html'>It's time for Saya to get a video viewer, but we havn't been able to do anything yet. Enter &lt;a href="http://code.technoplaza.net/wx-sdl/"&gt;wx-sdl&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;wx-sdl is a tutorial/sample of using SDL with wxWidgets. It's a single file, and it has everything you need to draw your own video on a screen surface. The best thing is that it's LGPL licensed, so it won't be a problem including it in Saya! :D (two thumbs up!)&lt;br /&gt;&lt;br /&gt;There's a class called SDLPanel, but it's customized for the sample there, so we need to adapt it to make it generic. But the integration with wxWidgets is amazingly simple. I hope I will have it included in Saya by the next week. &lt;br /&gt;&lt;br /&gt;In related news, I had thought that including the SDL source code would be piece of cake. I guess I was wrong - it's a huge library, so I guess it will go along with wxWidgets in that I need to link to it instead of embedding it.&lt;br /&gt;&lt;br /&gt;Fortunately, all linux distros already include it or have RPMs for it, so installation won't be a problem. And you don't need to compile it in Windows either, it already comes with a handy-dandy DLL :)&lt;br /&gt;&lt;br /&gt;That means I'll need to post another edition for the developers' guide... sigh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2596152621386737259?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2596152621386737259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2596152621386737259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2596152621386737259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2596152621386737259'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/first-experiences-with-sdl.html' title='First experiences with SDL'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-253182204519371129</id><published>2008-07-23T15:00:00.001-07:00</published><updated>2008-07-23T15:02:49.955-07:00</updated><title type='text'>New developer joined!</title><content type='html'>Everyone, give a warm welcome to Robert Molnar a.k.a. wireshark. He's an experienced wxWidgets programmer (i think the first assignment i'll give him is to start designing the timeline :) ), and has helped a lot of other programmers at least in the wxForum. He's certainly got what it takes to develop a full-fledged Video Editor such as Saya.&lt;br /&gt;&lt;br /&gt;Welcome aboard!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-253182204519371129?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/253182204519371129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=253182204519371129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/253182204519371129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/253182204519371129'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/new-developer-joined.html' title='New developer joined!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7745552476063244218</id><published>2008-07-21T23:10:00.001-07:00</published><updated>2008-07-21T23:14:24.304-07:00</updated><title type='text'>Congratulations! It's a boy!</title><content type='html'>It's time to celebrate. Our effort has given birth to our first offspring. What the - offspring? Actually, I'm talking about Nopalin's first code commit ^_^ Well, I had to help a little, but the new project dialog is progressing. Congratulations!&lt;br /&gt;&lt;br /&gt;Oh - by coincidence, it turned out to be my birthday. So it's a double celebration then :)&lt;br /&gt;In other news, I finally figured out how to implement the video display and keep the current framework design. I'll try to do the first tests this week. Wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7745552476063244218?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7745552476063244218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7745552476063244218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7745552476063244218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7745552476063244218'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/congratulations-its-boy.html' title='Congratulations! It&apos;s a boy!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5396706017278282468</id><published>2008-07-16T19:36:00.000-07:00</published><updated>2008-07-16T21:39:12.702-07:00</updated><title type='text'>Expensive decision; Improved New Project Dialog</title><content type='html'>Two good news: I asked for permission at my job to work one hour less (without pay, of course) than I normally do - starting today - , and my boss accepted. This decision costed me a lot of money that I won't earn anymore, but it's certainly worth it - and the result is that today I could finally work a lot of time in Saya.&lt;br /&gt;&lt;br /&gt;As proof, and that's the second good news, here's the improved New Project Dialog, based on the GNOME Human Interface Guidelines (not all were followed, but it's an improvement) :&lt;br /&gt;&lt;br /&gt;Before:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s1600-h/new_project.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s400/new_project.jpg" alt="" id="BLOGGER_PHOTO_ID_5206734262223815218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_iBNw06Dsj6g/SH6xTWG-G3I/AAAAAAAAABc/CWwkohmj6sE/s1600-h/newprojectdlg.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_iBNw06Dsj6g/SH6xTWG-G3I/AAAAAAAAABc/CWwkohmj6sE/s400/newprojectdlg.jpg" alt="" id="BLOGGER_PHOTO_ID_5223807563706801010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the new dialog is thinner and less cluttered. Also, I removed the redundant "Aspect Ratio" combo box. Pixel Aspect is more than enough for the video settings. If later we decide to scale the project to a certain screen format, I'll add a button to calculate the pixel aspect ratio.&lt;br /&gt;&lt;br /&gt;(Note: The cyan background for the text controls is a personal desktop setting, just pretend there was white in there).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5396706017278282468?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5396706017278282468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5396706017278282468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5396706017278282468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5396706017278282468'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/expensive-decision-improved-new-project.html' title='Expensive decision; Improved New Project Dialog'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s72-c/new_project.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2795944248573102503</id><published>2008-07-15T21:40:00.000-07:00</published><updated>2008-07-16T23:02:04.743-07:00</updated><title type='text'>Developers' guide for Linux uploaded!</title><content type='html'>Oops. Make that "GNU/Linux". Anyway, thanks to CJ Barker for the draft. The files are available on &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=230361"&gt;Sourceforge&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2795944248573102503?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2795944248573102503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2795944248573102503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2795944248573102503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2795944248573102503'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/developers-guide-for-linux-uploaded.html' title='Developers&apos; guide for Linux uploaded!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1229774743820490765</id><published>2008-07-15T13:07:00.000-07:00</published><updated>2008-07-15T13:20:04.639-07:00</updated><title type='text'>Job + personal problems + stress = ???</title><content type='html'>Sigh. It's been more than a month since the project was founded, and it feels like I haven't been able to acomplish anything.&lt;br /&gt;&lt;br /&gt;These last 3 weeks, I've had too much work at the job, plus I've had personal problems at home. These have left me exhausted and without time or energy to work on the project when I get home.&lt;br /&gt;&lt;br /&gt;Without realizing that,  I opened the project and saw that very little code has been written. So I asked myself: what the heck have I / we been doing this month? I felt so frustrated and impotent. It's even worse when I can't get a quick e-mail reply from one of the team members. What will happen if I we keep having the same problems / interruptions and we can't get anything done in the next 3 months?&lt;br /&gt;&lt;br /&gt;But then I realized that I've written the developers' guide (a task not trivial at all), an explanation of the project design, and the other developers have been organizing themselves.&lt;br /&gt;&lt;br /&gt;Yes, it's true, not much code has been written, but it won't be like this forever. CJ Barker has mailed me telling me that he'll have time this weekend to work on the resources panel. Nopalin is putting a lot of effort in learning wxWidgets, and more research has been done.&lt;br /&gt;&lt;br /&gt;Tonight I'll start rewriting / publishing the Linux developers' guide (thanks to CJ for writing the first draft).&lt;br /&gt;&lt;br /&gt;Anyway I've also noticed a lack of organization. I'm thinking that perhaps we should have monthly meetings on the irc channel - that's why it was created in the first place.&lt;br /&gt;&lt;br /&gt;So, please bear with us a little more. We're not perfect, but we're not slackers either. We're very few members and we're doing our best to make this work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1229774743820490765?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1229774743820490765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1229774743820490765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1229774743820490765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1229774743820490765'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/job-personal-problems-stress.html' title='Job + personal problems + stress = ???'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1722756390073710392</id><published>2008-07-14T09:41:00.000-07:00</published><updated>2008-07-14T09:48:20.047-07:00</updated><title type='text'>Car accident; Human Interface Guidelines</title><content type='html'>The bad news: One of our team members had a car accident and he had to be taken to the hospital :( Fortunately, he's fine now, but he'll need a bit of rest. Let's wish him a fast recovery.&lt;br /&gt;&lt;br /&gt;The good news: After a brief discussion (but not argument) with some of the team members, I've decided to follow the &lt;a href="http://library.gnome.org/devel/hig-book/stable/index.html.en"&gt;Gnome Human Interface Guidelines&lt;/a&gt;. This will make our dialogs VERY user friendly and not cluttered at all :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1722756390073710392?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1722756390073710392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1722756390073710392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1722756390073710392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1722756390073710392'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/car-accident-human-interface-guidelines.html' title='Car accident; Human Interface Guidelines'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6956591325994654943</id><published>2008-07-10T00:01:00.000-07:00</published><updated>2008-07-10T00:04:25.806-07:00</updated><title type='text'>New dev, engine warming up :)</title><content type='html'>Two good news: One, we got a new dev, Rigo, which is an old friend from school.&lt;br /&gt;Two, everyone's back from their away status. Nopalin has been studying hard and is learning fast. I hope that the New Project dialog will be completed soon.&lt;br /&gt;&lt;br /&gt;Also, the "Welcome" dialog has been fixed from some bugs and some bitmaps have been added to the big buttons.&lt;br /&gt;&lt;br /&gt;It seems that the real development has been started! :)&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6956591325994654943?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6956591325994654943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6956591325994654943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6956591325994654943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6956591325994654943'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/new-dev-engine-warming-up.html' title='New dev, engine warming up :)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-783311096533581377</id><published>2008-07-05T21:43:00.000-07:00</published><updated>2008-07-05T21:45:24.711-07:00</updated><title type='text'>Framework design is up!</title><content type='html'>The Saya-VE &lt;a href="http://sayavideoeditor.sourceforge.net/design.shtml"&gt;framework design&lt;/a&gt; has been uploaded to the website (it's licensed as GNU FDL) . Also, the developers' guide section now points to the downloadable dev guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-783311096533581377?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/783311096533581377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=783311096533581377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/783311096533581377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/783311096533581377'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/07/framework-design-is-up.html' title='Framework design is up!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3925559568531347182</id><published>2008-06-30T23:01:00.000-07:00</published><updated>2008-06-30T23:03:02.969-07:00</updated><title type='text'>Whew! Developers' Guide finished.</title><content type='html'>After two long weeks of overnight work, I finally finished the Developers' Guide for Windows. It's available on the Sourceforge page in the downloads section.&lt;br /&gt;&lt;br /&gt;Let's hope the Linux devs don't require a developer guide :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3925559568531347182?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3925559568531347182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3925559568531347182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3925559568531347182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3925559568531347182'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/whew-developers-guide-finished.html' title='Whew! Developers&apos; Guide finished.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5906482640036598641</id><published>2008-06-23T21:05:00.000-07:00</published><updated>2008-06-23T21:09:38.058-07:00</updated><title type='text'>Having second thoughts about gstreamer...</title><content type='html'>Recently I've been writing on a mailing list about the ffmpeg project, and on why we need an alternative. A little bit of browsing led me to take a second look at Gstreamer. Therefore, my previous post entitled "On Diva, gstreamer and tiers gone wrong" seems to be inaccurate.&lt;br /&gt;&lt;br /&gt;In theory, GStreamer is everything a video editor has dreamed of... but I couldn't get hold of the developer guide (it's on development. How ironic). However, I have this hunch, telling me that I won't be able to access frames and audio samples directly, and instead I'll have to rely on plugins such as gnonlin.&lt;br /&gt;&lt;br /&gt;Let's hope not. I mailed one of the Pitivi authors for guidance. Let's see what we find out. Cross your fingers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5906482640036598641?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5906482640036598641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5906482640036598641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5906482640036598641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5906482640036598641'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/having-second-thoughts-about-gstreamer.html' title='Having second thoughts about gstreamer...'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4750861535780336535</id><published>2008-06-21T19:10:00.001-07:00</published><updated>2008-06-21T19:20:53.379-07:00</updated><title type='text'>How to make a portable Codeblocks project</title><content type='html'>Perhaps this will help other developers who want to write cross-platform applications with Code::Blocks. After breaking my head for various hours, I finally found out how to do it. Code::Blocks 8.02 includes a script engine which can make certain compiler options apply only to Windows environments.&lt;br /&gt;&lt;br /&gt;Example: In your project settings:&lt;br /&gt;Under "Compiler settings", "other options":&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[[if (PLATFORM == PLATFORM_MSW) print(_T("-mthreads -D__GNUWIN32__ -D__WXMSW__"));;]]&lt;br /&gt;`wx-config --cflags`&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(Note: The double ;; at the end is a workaround a scripting bug)&lt;br /&gt;As you can see, the one-line script is pretty much like C. the _T must have been incorporated for wxWidgets compatibility. In any case, Notice the compilation string: -mthreads, -D__GNUWIN32__ and -D__WXMSW__. The -D is a compiler define. I tried to add scripting to the #defines, but that didn't work, so I had to add them on the compiler command line.&lt;br /&gt;&lt;br /&gt;The wx-config part is for Linux. I've found that experimentally, having this option in the project doesn't affect compilation under Windows.&lt;br /&gt;&lt;br /&gt;The same can be done with the linker. Under Linker settings, other linker options:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[[if (PLATFORM == PLATFORM_MSW) print(_T("-mthreads -lwxmsw28u -lintl.dll"));;]]&lt;br /&gt;`wx-config --libs`&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here I tell the linker to link two windows-only libraries: libwxmsw28u.a, and libintl.dll.a (libintl is used for internationalization). For posix environments (OS X or GNU/Linux), the backticked expressions are more than enough, but you could do the same with "if (PLATFORM != PLATFORM_MSW).&lt;br /&gt;&lt;br /&gt;Under search directories, I add both the Windows and posix directories.&lt;br /&gt;&lt;br /&gt;Compiler search dirs:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(#wx.include)&lt;br /&gt;$(#wx)/contrib/include&lt;br /&gt;$(#wx)/lib/gcc_dll/mswu&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Linker search dirs:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(#wx)/lib/gcc_dll&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Resource Compiler search dirs:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(#wx.include)&lt;br /&gt;$(#wx)/lib/gcc_dll/mswu&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;With this simple settings, you won't require having two different projects, one for GNU/Linux or Mac OS, and another for Windows.&lt;br /&gt;&lt;br /&gt;This will help making cross-platform projects quite easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4750861535780336535?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4750861535780336535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4750861535780336535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4750861535780336535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4750861535780336535'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/how-to-make-portable-codeblocks-project.html' title='How to make a portable Codeblocks project'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4732045836178905187</id><published>2008-06-20T23:50:00.001-07:00</published><updated>2008-06-20T23:58:49.902-07:00</updated><title type='text'>Windows = Pandora's box!</title><content type='html'>Today was a hectic day. Not only I had to run Windows to get my tax declaration working (the app doesn't run on GNU/Linux), but I had to use Windows to set up Code::Blocks as well.&lt;br /&gt;&lt;br /&gt;Once upon a time... the second most active developer, &lt;span style="font-style: italic;"&gt;Nopalin&lt;/span&gt;, had problems with his harddrive and ended up installing Windows. The pandora box had just been opened on me. I had now to download MINGW, compile wxWidgets, download an additional libintl from gnuwin32 (it doesn't come by default with mingw), install subversion, and guess what.&lt;br /&gt;&lt;br /&gt;As I had expected, I had compiling problems with the project, which was configured for a posix environment. I had to modify the global settings for Code::Blocks under Windows (something you must NOT do, that's what the project settings are for!) until I found out how to make the project build properties cross-platform (this is a capability not implemented in  Code::Blocks yet, maybe they have scripting capabilities now, but I don't know of them).&lt;br /&gt;&lt;br /&gt;And then wxDateTime method FormatISODate() outputs garbage on Windows. When that was fixed, I noticed some other problems: The buttons in the welcome dialog were invisible, and the new project dialog has the wrong size! :(&lt;br /&gt;&lt;br /&gt;How did all this happen? Well, I'll be able to find out as soon as I make the project cross-platform. In the worst cases, I'll have to use the same tactic the C::B devs did: Use parallel project files. Ugh. Let's hope I don't have to resort to that. Sigh...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4732045836178905187?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4732045836178905187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4732045836178905187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4732045836178905187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4732045836178905187'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/windows-pandoras-box.html' title='Windows = Pandora&apos;s box!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3645100734887611017</id><published>2008-06-20T08:55:00.000-07:00</published><updated>2008-06-20T09:21:44.856-07:00</updated><title type='text'>Why "Lone Ranger" programming will never work.</title><content type='html'>Recently I got an e-mail from someone interested in video editors, pointing me to a novel video editor in the works.&lt;br /&gt;&lt;br /&gt;The problem: The thing's written in [obscure programming language which is neither Python nor C++]. Oh, you didn't know there was a programming language called [obscure], right? See, THAT's the problem.&lt;br /&gt;&lt;br /&gt;I'll quote some text from the other programmer (I'll rephrase all paragraphs to protect the innocent from Google searches):&lt;br /&gt;&lt;blockquote&gt;Basically I'm sick tired of having a non-working video editor and a lot of novel ideas that other editors lack. And I've rewritten it so many times that I've got to get this off my head.&lt;br /&gt;All those four years I haven't been programming because of school. But this year might allow me to start working on [editor] again.&lt;br /&gt;&lt;/blockquote&gt;Later, I read:&lt;br /&gt;&lt;blockquote&gt;Lately I’ve realized that programming takes too much time from my life.... I almost made it work... I’m not a programmer. Programming in [obscure programming language] is my hobby, not my profession. I don’t get any money from it. It's a problem when programming takes about 80% of my time and I don't have time left for normal activities ... my projects will be put on hiatus. Feel free to ask me for rights to commit to the subversion of [editor]. You can take over the project for now. I hope I’ll get back to programming [editor] with a little more peace of mind after next year [written on December 2007].&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And this, ladies and gentlemen, is why the Lone Ranger approach to Open Source programming &lt;span style="font-weight: bold;"&gt;WILL NEVER&lt;/span&gt;&lt;b&gt; WORK&lt;/b&gt;. Do you have the slightest idea why so many Sourceforge projects are abandoned? It's like the Open Source Project cemetery. Well here's the reason: Those projects had NO programming teams.&lt;br /&gt;&lt;br /&gt;I absolutely refuse to work on a hobby project if I have to do it myself, with tools I have to write myself because there are non-existing tools for an esoteric programming language (let alone a binding to [ famous multimedia library ] ).&lt;br /&gt;&lt;br /&gt;Perhaps you'll understand now why I chose to use C++ and wxWidgets. There are at least 10 C++ programmers for every [obscure programming language] programmer. And there are at least 10 Windows users for every Linux user. If I'm going to have a programming team and a live project, I better use things where I can recruit most volunteers.&lt;br /&gt;&lt;br /&gt;After all, a Non-Linear Video Editor is not something you can make in your garage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3645100734887611017?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3645100734887611017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3645100734887611017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3645100734887611017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3645100734887611017'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/why-lone-ranger-programming-will-never.html' title='Why &quot;Lone Ranger&quot; programming will never work.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-8153403884751749675</id><published>2008-06-19T14:21:00.000-07:00</published><updated>2008-06-19T14:27:49.904-07:00</updated><title type='text'>New mailing list + one developer less = still good!</title><content type='html'>Today I received a letter from the MIT guy (the one who never answered my mails) asking me to remove him from the project. However, I have the suspicion that either his request to get in or his request to get out was forged (this means someone got access to his account), because they were in very different tones. Too bad - because we can't allow someone with such a bad security get in the project. Reliability: 50% -&gt; zero.&lt;br /&gt;&lt;br /&gt;In other news, I opened a private mailing list for the developers so we can organize ourselves better. I'm also working on the developers guide so anyone can install the software required to compile and run Saya.&lt;br /&gt;&lt;br /&gt;Then we'll start working, and hopefully in a couple (ok, maybe 4) weeks we will release version 0.1, code name: Aikuchi. That will mark the end of the planning phase and we will officially become "pre-alpha". Keep in touch! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-8153403884751749675?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/8153403884751749675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=8153403884751749675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8153403884751749675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/8153403884751749675'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/new-mailing-list-one-developer-less.html' title='New mailing list + one developer less = still good!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2580766094712571409</id><published>2008-06-18T20:40:00.001-07:00</published><updated>2008-06-18T21:07:42.473-07:00</updated><title type='text'>Class diagram for AVClip</title><content type='html'>So how are we managing the effects?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iBNw06Dsj6g/SFnaj-dxtUI/AAAAAAAAABU/ejtOx_6ATuE/s1600-h/avclip_class_diagram.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iBNw06Dsj6g/SFnaj-dxtUI/AAAAAAAAABU/ejtOx_6ATuE/s400/avclip_class_diagram.png" alt="" id="BLOGGER_PHOTO_ID_5213438355256227138" border="0" /&gt;&lt;/a&gt;An &lt;span style="font-weight: bold;"&gt;AVClip&lt;/span&gt; has a vector of effects.&lt;br /&gt;An &lt;span style="font-weight: bold;"&gt;Effect&lt;/span&gt; consists of a map (string, FXParamTimelines). The string denotes the parameter's name.&lt;br /&gt;An &lt;span style="font-weight: bold;"&gt;FXParamTimeline&lt;/span&gt; is a map of (integer, string parameter), where the integer represents a point in time.&lt;br /&gt;&lt;br /&gt;(Notice that there are no bezier curves in this diagram. But there will be, don't worry about that).&lt;br /&gt;&lt;br /&gt;Time is measured in milliseconds, but I'm going to replace the integer with a 64-bit integer so I can represent nanoseconds (this is necessary to be able to move audio clips around with one-sample precision in time).&lt;br /&gt;&lt;br /&gt;One thing that I forgot to mention is that &lt;span style="font-weight: bold;"&gt;none of the data structures I present here, have pointers&lt;/span&gt; (pointers are EVIL!). This is so we can duplicate the instances of effects and clips easily. Since the indirection is handled through array (or vector / map) indexes, we won't have segmentation faults due to a badly dereferenced pointer. This also makes serializing and deserializing the data a piece of cake.&lt;br /&gt;&lt;br /&gt;When copying a series of clips to the clipboard, I will replace the clip id's with new ones. Simpler than a Jedi mind trick. "These aren't the id#s you're looking for." *Waves hand* No pointer mangling, no headaches.&lt;br /&gt;&lt;br /&gt;So this is the reason why I'm trying to focus on the User Interface first. Because it's the task which takes most of the time. And since I already got rid of the wxWidgets-specific classes in this framework, we can choose whatever UI library we want. But I'm sticking with wxWidgets for the user interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2580766094712571409?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2580766094712571409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2580766094712571409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2580766094712571409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2580766094712571409'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/class-diagram-for-avclip.html' title='Class diagram for AVClip'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iBNw06Dsj6g/SFnaj-dxtUI/AAAAAAAAABU/ejtOx_6ATuE/s72-c/avclip_class_diagram.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-18304198437764990</id><published>2008-06-18T18:59:00.000-07:00</published><updated>2008-06-18T19:07:27.841-07:00</updated><title type='text'>Class diagram for VidProject</title><content type='html'>Who'd guess there was a tool to convert C++ code into UML diagrams? It's called Umbrello.&lt;br /&gt;Here's a simplified UML Class diagram for Vidproject and associated classes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iBNw06Dsj6g/SFm-ACafaeI/AAAAAAAAABM/IbiLLlGflww/s1600-h/vidproject_class_diagram.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iBNw06Dsj6g/SFm-ACafaeI/AAAAAAAAABM/IbiLLlGflww/s400/vidproject_class_diagram.png" alt="" id="BLOGGER_PHOTO_ID_5213406951515318754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Video Project has a list of the currently used Resources (video and audio clips - i.e. files ). Additionally, it contains an AVTimeline which contains various sequences.  Each sequence contains various audio and video tracks. And each track contains... surprise, a clip. The clip has an index indicating which resource it operates on. And of course, a list of effects and a transition.&lt;br /&gt;&lt;br /&gt;Notice that a video clipboard is nothing but a sequence. Convenient, isn't it?&lt;br /&gt;&lt;br /&gt;As you can see from this diagram, the memory consumption for these classes is minimal, since they're nothing but sparse data structures.&lt;br /&gt;&lt;br /&gt;Now, I don't really know how Cinelerra or other video editors work. But one thing's certain: It's much easier to model the classes after the structure of the data we're going to modify. And this data is a timeline.&lt;br /&gt;&lt;br /&gt;I already have implemented saving undo/redos for these classes, and you can impose a memory limit on how many undos/redos you can store in memory. So there goes the high memory requirement. Poof! :)&lt;br /&gt;&lt;br /&gt;I'll upload this diagram to the webpage when I can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-18304198437764990?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/18304198437764990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=18304198437764990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/18304198437764990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/18304198437764990'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/class-diagram-for-vidproject.html' title='Class diagram for VidProject'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iBNw06Dsj6g/SFm-ACafaeI/AAAAAAAAABM/IbiLLlGflww/s72-c/vidproject_class_diagram.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3287288394938190427</id><published>2008-06-17T23:28:00.000-07:00</published><updated>2008-06-17T23:36:36.138-07:00</updated><title type='text'>Bugs fixed, we're back in the business!</title><content type='html'>The annoying configuration bugs that had plagued me for the last couple of days were finally solved (note to self: remember to wrap the functions va_start and va_end around vsnprintf the next time - how embarrassing ^^; Oh well... I guess these things happen when you're programming while undersleeping at 4AM in the morning). Another hint, is that whenever you're dealing with char* strings, DO NOT store them in the stack! If anything goes wrong, you won't be able to debug because the stack will be messed up. Use varname = new vartype[num].&lt;br /&gt;&lt;br /&gt; AAaaaaaaanyway...&lt;br /&gt;&lt;br /&gt;I added a nifty debug log to our wxApp object, so we can finally know what's happening behind the scenes. This is excellent for hard-to-debug cases. And now, back to business, there are tons of things to do:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fix the updating of recent project menus. I currently use a flag, it's better to use a counter to see whenever it's been updated.&lt;/li&gt;&lt;li&gt;Implement the audio/video presets in the new project menu&lt;/li&gt;&lt;li&gt;Implement project creation and saving with XML.&lt;/li&gt;&lt;li&gt;Keep working on the framework to do some video streaming (Jonathan's beaten me to that already, I must keep up in the race!)&lt;/li&gt;&lt;li&gt;Update the website, write the class diagrams, etc.&lt;/li&gt;&lt;/ul&gt;And now, to get a good deserved rest. G'night!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3287288394938190427?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3287288394938190427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3287288394938190427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3287288394938190427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3287288394938190427'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/bugs-fixed-were-back-in-business.html' title='Bugs fixed, we&apos;re back in the business!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-774668406840916487</id><published>2008-06-17T00:10:00.000-07:00</published><updated>2008-06-17T00:13:07.174-07:00</updated><title type='text'>A new dev comes, an old dev leaves... possibly.</title><content type='html'>Everybody welcome CJ-Bark, our newest team member.&lt;br /&gt;Also, one of the developers might... "have a long vacation" since I haven't got a single e-mail from him since he joined.&lt;br /&gt;&lt;br /&gt;Keep in touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-774668406840916487?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/774668406840916487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=774668406840916487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/774668406840916487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/774668406840916487'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/new-dev-comes-old-dev-leaves-possibly.html' title='A new dev comes, an old dev leaves... possibly.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-1424427749451763469</id><published>2008-06-16T23:39:00.001-07:00</published><updated>2008-06-16T23:41:20.693-07:00</updated><title type='text'>Conversion finished! Now onto bug fixing.</title><content type='html'>The good: The backend conversion from wxWidgets to generic functions has been completed! :)&lt;br /&gt;&lt;br /&gt;The bad: It's buggy. Now the Open dialog doesn't show the recently opened projects.  :-/&lt;br /&gt;&lt;br /&gt;The ugly: I'll have to debug!  :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-1424427749451763469?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/1424427749451763469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=1424427749451763469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1424427749451763469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/1424427749451763469'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/conversion-finished-now-onto-bug-fixing.html' title='Conversion finished! Now onto bug fixing.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-353780110621734734</id><published>2008-06-15T01:42:00.000-07:00</published><updated>2008-06-15T01:57:31.384-07:00</updated><title type='text'>Saying goodbye to wxWidgets (partially)</title><content type='html'>Turns out there were a lot more wxWidgets functions used in the backend than I expected.&lt;br /&gt;&lt;br /&gt;After a few hours of rewriting code, I managed to almost replace all. However, I'm left with a few stubs (I only committed a zipfile with the changes, I don't want to break the build in SVN). Here's a list of the new functions and changes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;static std::string ioCommon::GetPathname(std::string fullpath); // UNFINISHED&lt;/li&gt;&lt;li&gt;static std::string ioCommon::GetFilename(std::string fullpath); // UNFINISHED&lt;/li&gt;&lt;li&gt;static bool ioCommon::FileExists(std::string filename);&lt;/li&gt;&lt;li&gt;static bool ioCommon::FileExists(const char* filename);&lt;/li&gt;&lt;li&gt;class BufferedFile; // UNFINISHED&lt;/li&gt;&lt;li&gt;class TempFile; // UNFINISHED&lt;/li&gt;&lt;li&gt;const std::string syString::Format(const char* format, ... );&lt;/li&gt;&lt;li&gt;const std::string syString::FormatBig(unsigned long bufsize, const char* format, ... );&lt;/li&gt;&lt;li&gt;enum sayaEventType;&lt;/li&gt;&lt;li&gt;enum sayaYesNoCancel;&lt;/li&gt;&lt;li&gt;class sayaEvtHandler; // This will be used for handling the events coming from the backend.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;class sayaConfig; // A wxConfig wrapper, it's an abstract class.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;class sayaConfigProvider; // abstract class. UNFINISHED; needs an implementation (wrapping) done in wxWidgets.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;const wxString std2wx(const std::string&amp;amp; str);&lt;/li&gt;&lt;li&gt;const wxString std2wx(const char* str);&lt;/li&gt;&lt;li&gt;ALL wxString references in ProjectManager were replaced by std::string&lt;/li&gt;&lt;li&gt;Since wxWidgets uses the _() macro, all literal strings will have to be surrounded by gettext().&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;For now it seems that we have to implement the stubs I created. But after that, the code architecture will be much more robust and cleaner, because the ProjectManager and related classes now only depend on the STL and some basic libraries like stdio. This means that if someone wants to make a frontend for the project in QT, it will be much easier for him to do it now.&lt;br /&gt;&lt;br /&gt;Now I have to go to sleep. I'm dead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-353780110621734734?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/353780110621734734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=353780110621734734' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/353780110621734734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/353780110621734734'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/saying-goodbye-to-wxwidgets-partially.html' title='Saying goodbye to wxWidgets (partially)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-9035369259681904659</id><published>2008-06-14T16:29:00.000-07:00</published><updated>2008-06-14T16:33:35.824-07:00</updated><title type='text'>Saying goodbye to wxString</title><content type='html'>I just had realized something. If I want to make Saya UI-Toolkit independent (except the UI frontend), it means I'll have to add another bunch of wrappers. But it's worth it.&lt;br /&gt;&lt;br /&gt;So I'll start replacing the wxString references everywhere except in Main.h and Main.cpp for std::string . This will also help me get rid of the _T() and macros. For internationalization, I guess I'll redefine the _() macro to some internal function, used only by the backend.&lt;br /&gt;&lt;br /&gt;It also means I'll make an intermediate class to pass the messages (like presenting dialogs). I think I'm going to like this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-9035369259681904659?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/9035369259681904659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=9035369259681904659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9035369259681904659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9035369259681904659'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/saying-goodbye-to-wxstring.html' title='Saying goodbye to wxString'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5462371254563692994</id><published>2008-06-13T22:06:00.000-07:00</published><updated>2008-06-14T12:44:24.587-07:00</updated><title type='text'>SVN problems and headaches</title><content type='html'>We're having &lt;a href="http://developer.berlios.de/bugs/?func=detailbug&amp;amp;bug_id=14033&amp;amp;group_id=1"&gt;technical problems&lt;/a&gt; using the SVN server at berlios. It seems I'll have to change the access method from svn+ssh to https. But I'm afraid I can't do it right now, I have this horrible headache. I'll keep you updated.&lt;br /&gt;&lt;br /&gt;Update: Fixed. To solve the SVN access Issue, I only had to replace the svn+ssh login method by https.  I had to do some directory copying, but it was easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5462371254563692994?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5462371254563692994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5462371254563692994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5462371254563692994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5462371254563692994'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/svn-problems-and-headaches.html' title='SVN problems and headaches'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3986244602555285601</id><published>2008-06-12T19:10:00.000-07:00</published><updated>2008-06-12T22:20:41.128-07:00</updated><title type='text'>Critical Sections and Mutexes</title><content type='html'>Ah, the joy of multithreading. I really miss the wxMutex and wxMutexLocker classes of wxWidgets, which unfortunately, I can't use for the wrappers (because they're wrappers and therefore they need to be as lightweight as possible. Linking to the wxWidgets library isn't exactly what I want).&lt;br /&gt;&lt;br /&gt;The first decision I took was to use the SFML Mutexes class. Unfortunately, I stumbled upon the problem: If I include this for the wrapper, what will happen when one of the plugins actually uses the library? Would I get some duplicate definition? Should I copy the code and rename it?&lt;br /&gt;&lt;br /&gt;Forget it. Enter google. I found two great resources for using Mutexes: &lt;a href="https://computing.llnl.gov/tutorials/pthreads/"&gt;computing.llnl.gov&lt;/a&gt; (which included a copy of the pthreads manpage) and &lt;a href="http://en.wikipedia.org/wiki/Critical_section"&gt;wikipedia&lt;/a&gt;. Lucky me, the wikipedia tutorial included a cross-platform version of implementing critical sections! And it's GFDL, alright!&lt;br /&gt;&lt;br /&gt;Now let's see if I can find a good example of a cross-platform thread-safe sleep() function.&lt;br /&gt;&lt;br /&gt;Update: Done. Now I can go back to work on thread-safety for the audio/video wrappers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3986244602555285601?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3986244602555285601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3986244602555285601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3986244602555285601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3986244602555285601'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/critical-sections-and-mutexes.html' title='Critical Sections and Mutexes'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5062665727161066169</id><published>2008-06-11T22:23:00.000-07:00</published><updated>2008-06-12T06:43:04.682-07:00</updated><title type='text'>OpenVIP: The ace under my sleeve</title><content type='html'>There's been more than one person who doubts that I can do a video editor alone. The complexities of writing a good Video Editor backend are too great for a "newbie" to try on his own.&lt;br /&gt;&lt;br /&gt;And they're right. But I'm not writing a backend. I already have one. See?&lt;br /&gt;&lt;a href="http://openvip.sourceforge.net/"&gt;http://openvip.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the webpage:&lt;br /&gt;&lt;br /&gt;OpenVIP is a free video-processing tool for Linux and Windows. It consists of  two parts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;OpenVIP core&lt;/b&gt;, which can be used for processing multimedia files from    command line, or as a C++ library linked to other applications.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;OpenVIP editor&lt;/b&gt;, which provides a user-friendly GUI to the core and    is based on the timeline concept - you place multimedia files on the timeline, apply filters, transitions, ...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; These are the main features of OpenVIP:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Supports AVI, DV, MPEG, MOV, MP3, WMA, and WMV formats (via the    &lt;a href="http://ffmpeg.mplayerhq.hu/"&gt;FFmpeg&lt;/a&gt; libraries) as well as sequences of    bitmap files (via the &lt;a href="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt; library)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; A lot of nice plugins including colour transformations, geometric distortions, basic sound processing and transitions between two clips&lt;/li&gt;&lt;li&gt; A simple interface for developing your own plugins in C++&lt;/li&gt;&lt;/ul&gt;OpenVIP was designed by a college group as their graduation project. Unfortunately, they couldn't continue their project. That's where I come in. Or should I say &lt;span style="font-weight: bold;"&gt;we&lt;/span&gt;, since there's already a &lt;a href="http://sourceforge.net/project/memberlist.php?group_id=230361"&gt;developing team for Saya&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All we're doing is designing a professional user interface around the OpenVIP Video Editor framework. Because the framework is done in C++, designing the frontend is much simpler than starting a video editor from scratch.&lt;br /&gt;&lt;br /&gt;The only problem is that OpenVIP is released as GPLv2, while Saya is GPLv3. I've asked the main developer to release the project as GPLv3 so I can add the framework right away. Perhaps his mail got lost, I guess I'll ask again. (Edit: I just got a mail from Antonin Slavik, the OpenVIP project leader. OpenVIP is now GPLv3 or later with linking permission! Road's clear!)&lt;br /&gt;&lt;br /&gt;Still... we can't commit the same mistake other developers have by tying themselves to one framework and later realizing it doesn't do what they need. This is why we're making a whole "interface layer" in Saya, so the video processing and playback frameworks can be inserted as plugins. Some things will need to be implemented on our own (or outright stolen from mature frameworks), like threads, mutexes. There's a 90% chance that I'll borrow SFML's system module to deal with this part.&lt;br /&gt;&lt;br /&gt;The rest will be a lot easier to handle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5062665727161066169?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5062665727161066169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5062665727161066169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5062665727161066169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5062665727161066169'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/openvip-ace-under-my-sleeve.html' title='OpenVIP: The ace under my sleeve'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5887690065433477755</id><published>2008-06-10T22:50:00.000-07:00</published><updated>2008-06-12T06:48:45.621-07:00</updated><title type='text'>Status report. June 10, 2008</title><content type='html'>What has been done:&lt;br /&gt;&lt;br /&gt;* Organizing the team, getting team members. Some members haven't been able to be contacted live - but we got an Adobe Premiere video editing expert / advisor (edit: And tentatively another advisor, who happens to be a Sony Vegas expert and User Interface Nazi ;-) ) , a beta tester, 3 developers and 1 possible developer more (if I manage to get him online). Additionally, an old friend from school who's a college graduate is offering to join the project - but not before he passes a wxWidgets exam I assigned him :)&lt;br /&gt;&lt;br /&gt;* Researching on various fields. Nopalin has been able to do his first wxWidgets programs, and is ready to work on the UI. b3rx is in the process of documenting the OpenVIP classes and some classes that have already been designed. I've been researching the use of SFML and have corrected various misunderstandings in the wrapper classes.&lt;br /&gt;&lt;br /&gt;* The pluggable multimedia framework has been started. Abstract class AudioOutputDevice has been completed. Abstract class VideoOutputDevice has been started (as a stub). Actual implementations using classes derived from these, remain to be written.&lt;br /&gt;&lt;br /&gt;What remains to be done:&lt;br /&gt;&lt;br /&gt;- Completing the New Project Dialog and creating new projects.&lt;br /&gt;- Creating an A/V streaming class for rendering video and audio on-the-fly.&lt;br /&gt;- Creating a plain vanilla video player using the said classes.&lt;br /&gt;&lt;br /&gt;If everything goes well, this will be done within the next 4 weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5887690065433477755?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5887690065433477755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5887690065433477755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5887690065433477755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5887690065433477755'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/status-report-june-10-2008.html' title='Status report. June 10, 2008'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6835048912774831432</id><published>2008-06-10T09:16:00.001-07:00</published><updated>2008-06-10T14:40:41.097-07:00</updated><title type='text'>To SDL or to SFML? That is the question</title><content type='html'>I recently found a multimedia library called &lt;a href="http://www.sfml-dev.org/features.php"&gt;SFML&lt;/a&gt; (Simple and Fast multimedia library). According to the webpage, "         Instead of being one big API, SFML rather contains a lot of small         packages, that can be chosen and combined according to the intended usage. You can use only the         base package to get input and windowing, as well as the full graphics package with sprites         and post-effects." Additionally, it's written in C++ and seems to be very flexible.&lt;br /&gt;&lt;br /&gt;That sounds just like what we're looking for. However, there is a problem, and it's that the project is (relatively) too young compared to SDL. How stable and reliable it is?&lt;br /&gt;&lt;br /&gt;I'm sure that choosing a multimedia library is a problem many multimedia programmers face.  They have to base their entire code on choosing one or another library. This is why I decided to design abstract classes as wrappers, so we don't have to face that decision. I hope that with SMFL we can have a working multimedia player soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6835048912774831432?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6835048912774831432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6835048912774831432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6835048912774831432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6835048912774831432'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/to-sdl-or-to-sfml-that-is-question.html' title='To SDL or to SFML? That is the question'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2909324266105376368</id><published>2008-06-09T06:56:00.000-07:00</published><updated>2008-06-09T06:59:15.150-07:00</updated><title type='text'>We got a team! And a website!</title><content type='html'>This week has been hectic and I haven't been able to sleep very well - but it was worth it. Saya-VE has a &lt;a href="http://sayavideoeditor.sourceforge.net/"&gt;website&lt;/a&gt;, a &lt;a href="http://sourceforge.net/projects/sayavideoeditor/"&gt;Sourceforge page&lt;/a&gt;, 3 more developers and a beta tester.&lt;br /&gt;&lt;br /&gt;We'll keep you posted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2909324266105376368?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2909324266105376368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2909324266105376368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2909324266105376368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2909324266105376368'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/we-got-team-and-website.html' title='We got a team! And a website!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-9096397995880995240</id><published>2008-06-05T16:26:00.000-07:00</published><updated>2008-06-23T21:45:53.663-07:00</updated><title type='text'>on DIVA, GStreamer and Tiers gone wrong</title><content type='html'>I just found &lt;a href="http://www.mdk.org.pl/2006/12/7/state-of-diva"&gt;this awesome post&lt;/a&gt; from Michael Dominic explaining his problems with the GStreamer framework.&lt;br /&gt;&lt;br /&gt;"GStreamer solves a lot of problems on the GNOME desktop but it doesn’t solve the problem of video editing.   &lt;p&gt;Gst is a &lt;em&gt;playback&lt;/em&gt; framework, and for video editing you need &lt;em&gt;editing&lt;/em&gt; framework. The later is not, as it’s commonly believed, just a superset of the former. The MLT framework is an interesting example of the “video editing” architecture."&lt;/p&gt;A later comment from a reader explains further:&lt;br /&gt;&lt;br /&gt;"I would also join the voices in suggesting that you reconsider your decision with GStreamer. In the last six months GStreamer has become more and more suitable for applications such as Diva, and Gnonlin is a particularly useful component here."&lt;br /&gt;&lt;p&gt;And here I was thinking that I could use GStreamer as a basis for Saya. I think I can explain the concepts with a small diagram:&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:courier new;"&gt;PiTiVi or some other editor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Gnonlin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Gstreamer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Video Hardware&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is, gnonlin is a PLUGIN which goes with GStreamer (if it's not, someone correct me please!). The problem is that this plugin is a video-editing component built upon a low-level playback framework. This is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Editor UI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Editing stuff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Playback&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;OS / Hardware&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and that's a no-no. It's got the logic ALL WRONG!&lt;br /&gt;&lt;br /&gt;Instead, what I want is something like this (the higher, the more user interaction) :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  GUI&lt;br /&gt;^&lt;br /&gt;| (commands, events)&lt;br /&gt;v&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;High-level Editor framework (track / timeline /&lt;br /&gt;                          effect stuff handling)&lt;br /&gt;^&lt;br /&gt;| (playback info, commands, events)   &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   v&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Renderer (effects / mixing)&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;|              |&lt;br /&gt;|              v&lt;br /&gt;|            Low level&lt;br /&gt;|            Playback Framework&lt;br /&gt;|            (i.e. SDL)&lt;br /&gt;|                                       |&lt;br /&gt;|                                                  v&lt;br /&gt;v            Video Hardware&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Decoder&lt;br /&gt;|&lt;br /&gt;|&lt;br /&gt;v&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; Files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In other words, The decoder/files make the MODEL. The Playback/VideoHardware are the PRESENTATION (the GUI is another separate layer of presentation, so they're tied - in a way), and the Editor framework is the CONTROLLER.&lt;br /&gt;&lt;br /&gt;Ladies and gentlemen, this is nothing but Model-View-Controller 101.&lt;br /&gt;&lt;br /&gt;Any questions?&lt;br /&gt;&lt;br /&gt;---------&lt;br /&gt;Update (June 23, 2008) : It seems I was mistaken in my assumptions regarding GStreamer and PiTiVi. However, the MVC pattern is still a rule I'm going to follow. Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-9096397995880995240?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/9096397995880995240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=9096397995880995240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9096397995880995240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9096397995880995240'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/on-diva-gstreamer-and-tiers-gone-wrong.html' title='on DIVA, GStreamer and Tiers gone wrong'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5129714225847106920</id><published>2008-06-04T13:38:00.000-07:00</published><updated>2008-06-04T13:44:03.196-07:00</updated><title type='text'>There can be only one... (not)</title><content type='html'>At least I'm not alone. Another guy had more or less the same idea that I had, and around the same time. Clearly this is an indicator that video editing in Linux *DOES* have a problem. His project blog is at &lt;a href="http://myvideoeditor.blogspot.com/"&gt;http://myvideoeditor.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alas, it seems he chose another path (he's going to use GStreamer and Python). Why, oh, why??? I really don't know if he'll succeed, but I asked him to join forces. Sigh, if only we had managed to get in touch earlier. Jonathan claims that C++ is a monster hard to debug. Well, not if you use the latest GDB and Code::Blocks. Programming C++ with Code::Blocks is a breeze ;-)&lt;br /&gt;&lt;br /&gt;Luke er Jonathan... JOIN ME, and we shall rule the galaxy together! Well, more or less :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5129714225847106920?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5129714225847106920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5129714225847106920' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5129714225847106920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5129714225847106920'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/06/there-can-be-only-one-not.html' title='There can be only one... (not)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2553357367075879793</id><published>2008-05-31T19:23:00.000-07:00</published><updated>2008-06-02T15:38:45.913-07:00</updated><title type='text'>"New Project" dialog</title><content type='html'>After researching for a couple of days and designing for a whole day, I finally got a decent and pretty "new project" dialog. So far it's been one of the most complicated things I've done for the project yet, because I needed to get info about all the known editors, and standard video formats (thank you, wikipedia!)&lt;br /&gt;&lt;br /&gt;Also, Premiere shows more settings, while Edius Pro's dialog is more compact and "friendly", but in my opinion it was oversimplified. So I had to choose a compromise.&lt;br /&gt;&lt;br /&gt;One of the things that annoyed me about Premiere was that you had to scroll and read the settings as you kept choosing, and if you didn't like one, you were presented with an overcomplicated screen of settings.&lt;br /&gt;&lt;br /&gt;I managed to include all the important settings in one page, and they'll change as I switch between presets. If i choose "custom", the settings will become read-write (they should be read-only and greyed out), so I can just type everything right away.&lt;br /&gt;&lt;br /&gt;I also managed to make them pretty and not bloated. This took me a while, but putting the video settings at the left and the audio settings at the right, just did the trick.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s1600-h/new_project.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s400/new_project.jpg" alt="" id="BLOGGER_PHOTO_ID_5206734262223815218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I would also like to thank the wxFormBuilder developers for making such a great tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2553357367075879793?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2553357367075879793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2553357367075879793' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2553357367075879793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2553357367075879793'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/new-project-dialog.html' title='&quot;New Project&quot; dialog'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iBNw06Dsj6g/SEIJOZu0wjI/AAAAAAAAABE/qNK9NxcnY6g/s72-c/new_project.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-9035100474120349506</id><published>2008-05-22T23:38:00.000-07:00</published><updated>2008-05-23T00:11:28.837-07:00</updated><title type='text'>Second screenshot!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iBNw06Dsj6g/SDZnIZu0whI/AAAAAAAAAA0/877x4bJS3x4/s1600-h/saya_wxaui.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iBNw06Dsj6g/SDZnIZu0whI/AAAAAAAAAA0/877x4bJS3x4/s400/saya_wxaui.jpg" alt="" id="BLOGGER_PHOTO_ID_5203459813517083154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This time I've added some panels with wxAUI. The little light blue area is supposed to be a file tree for the resources directories.&lt;br /&gt;&lt;br /&gt;The bottom part is going to be the timeline, and is fixed to the main window.&lt;br /&gt;&lt;br /&gt;The good part is that the panels can be undocked and turned into separate windows.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iBNw06Dsj6g/SDZrapu0wiI/AAAAAAAAAA8/rxIu1NyMJy0/s1600-h/saya_wxaui_undocked.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iBNw06Dsj6g/SDZrapu0wiI/AAAAAAAAAA8/rxIu1NyMJy0/s400/saya_wxaui_undocked.jpg" alt="" id="BLOGGER_PHOTO_ID_5203464525096206882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A friend gave me an idea based on the first screenshot: The timeline should be on the top. And it makes sense, this way I can add the toolbar directly to the window, and there will be no problems with them being too far from the timeline.&lt;br /&gt;&lt;br /&gt;Soon you'll be able to see actual resources loaded in the resource window. Then I'll start working on the timeline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-9035100474120349506?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/9035100474120349506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=9035100474120349506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9035100474120349506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/9035100474120349506'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/second-screenshot.html' title='Second screenshot!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iBNw06Dsj6g/SDZnIZu0whI/AAAAAAAAAA0/877x4bJS3x4/s72-c/saya_wxaui.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5015198844981210846</id><published>2008-05-21T13:11:00.001-07:00</published><updated>2008-05-21T13:17:30.542-07:00</updated><title type='text'>Resolution independence conundrum</title><content type='html'>Hi everyone. I was thinking about a feature in Edius Pro that I want to implement in my editor: Resolution independency... but I stumbled on a problem.&lt;br /&gt;&lt;br /&gt;Let's say we have a sequence whose frames are made of 4 zoomed-out clips: A, B, C and D, as in a multicam display.&lt;br /&gt;AB&lt;br /&gt;CD&lt;br /&gt;&lt;br /&gt;To process this, normally one would apply a "reduction" transformation to A, B, C and D, followed by a translation transformation. Then that would be rendered in the resulting clip, which we'll call E.&lt;br /&gt;&lt;br /&gt;Now imagine E has similar sequences called F, G and H.&lt;br /&gt;&lt;br /&gt;EF&lt;br /&gt;GH&lt;br /&gt;&lt;br /&gt;The result will be called I, which would have this structure:&lt;br /&gt;&lt;br /&gt;I { E { ABCD } F { JKLM} G {NOPQ} H {RSTU} }&lt;br /&gt;&lt;br /&gt;Now what happens when we zoom inside I? The result depends on the processing order of the transformations. If we put this in layers (tracks), we'll have something similar to this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;I&lt;br /&gt;E    F    G    H&lt;br /&gt;ABCD JKLM NOPQ RSTU&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If transformations (filters) are applied bottom-up, we would gain speed in processing, but resolution is lost, since the resulting images have a constant resolution. Zooming in would result in mosaic artifacts.&lt;br /&gt;&lt;br /&gt;Instead, if transformations are applied top-down, processing complexity would be greater, but resolution would be preserved to the last pixel. This would allow us to zoom from I to E, to A and beyond.&lt;br /&gt;&lt;br /&gt;The conundrum is...&lt;br /&gt;&lt;br /&gt;Is there an algorithm for doing this? :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5015198844981210846?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5015198844981210846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5015198844981210846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5015198844981210846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5015198844981210846'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/resolution-independence-conundrum.html' title='Resolution independence conundrum'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-6386624859436355136</id><published>2008-05-19T23:08:00.000-07:00</published><updated>2008-05-19T23:10:52.033-07:00</updated><title type='text'>Doxygen: Better safe than sorry</title><content type='html'>I noticed that some of the TinyXML code I took from the Code::Blocks project has doxygen-formatted documentation. Frankly, I didn't know how that worked, until I read these pages:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stack.nl/%7Edimitri/doxygen/docblocks.html"&gt;http://www.stack.nl/~dimitri/doxygen/docblocks.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stack.nl/%7Edimitri/doxygen/commands.html"&gt;http://www.stack.nl/~dimitri/doxygen/commands.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I better start soon. If I leave it for later, I'll end up with a mess of code and no documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-6386624859436355136?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/6386624859436355136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=6386624859436355136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6386624859436355136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/6386624859436355136'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/doxygen-better-safe-than-sorry.html' title='Doxygen: Better safe than sorry'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5811772786748191803</id><published>2008-05-19T18:37:00.000-07:00</published><updated>2008-05-19T18:49:56.669-07:00</updated><title type='text'>Frame independency, more API changes</title><content type='html'>I was rewatching the Edius Pro ads, and I marvelled at the concept of fps and resolution-independent processing. I remember the first time that I tried to import a clip in Premiere. It complained about the fps of the video being different than the current project's.&lt;br /&gt;&lt;br /&gt;I had forgotten about this until I rewatched this promo. Wait a sec, fps-independent? Resolution independent? Cool!&lt;br /&gt;&lt;br /&gt;Then I thought about the difficulty of such implementation. For now we can see timelines having HH:MM:SS:FF:MMM (hours, minutes, seconds, frames, and milliseconds - or was that milliframes? I don't think so.).&lt;br /&gt;&lt;br /&gt;Currently in the timeline structures I have the tracks sorting the clips by frame. It's an integer number. But then I thought - hey, a millisecond is also an integer. So what's the limit for our videos? Let's see...&lt;br /&gt;&lt;br /&gt;Assumming we have a limit of 2^31, we have 2147483648 milliseconds available for a production. If we divide it by 1000, we got 2147483.648 seconds. Let's round it to 2147483 seconds. If we divide it by 3600, we got ourselves an amount of 596.52 hours, which would be equivalent to 24 straight days. More than enough, I think :).&lt;br /&gt;&lt;br /&gt;And due to the fact that we're using std::maps and not mere vectors, we don't have to worry about memory requirements: They're exactly the same.&lt;br /&gt;&lt;br /&gt;Another thing I realized was that storing clips in a pool for later usage, is simply a waste of time and resources. Each time we copy/paste, we're gonna generate new clips. Cutting doesn't solve the problem because we could undo and yet retain the clip in the clipboard, so we'd need to process that. So, that would leave us with only more complexity and absolutely no storage gain.&lt;br /&gt;&lt;br /&gt;If we get rid of the clips-in-storage-pool, we can store the clips (clip as in data-structure, not the movie, duh) directly in the timeline. Since it's an STL map, we don't have to worry about pointers either!&lt;br /&gt;&lt;br /&gt;So these are the next changes to be done in the infrastructure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5811772786748191803?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5811772786748191803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5811772786748191803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5811772786748191803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5811772786748191803'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/frame-independency-more-api-changes.html' title='Frame independency, more API changes'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7276974835420230476</id><published>2008-05-18T23:34:00.000-07:00</published><updated>2008-05-18T23:48:29.719-07:00</updated><title type='text'>QsKKing's Vegas 7 tutorial, mencoder, transitions...</title><content type='html'>My bittorrent download of QsKKing's tutorial for Sony Vegas 7.0 just finished downloading. The bad news is that it was encoded with one of the latest Micr.... (UGH! I can't mention that word! It burns!) codecs, which I had to get from the internet. I couldn't watch it with VLC player (I could with mplayer, but I hate that software, it's quite unfriendly). So I tried recoding it with FFMPEG, to no avail. I then tried with mencoder, which worked.&lt;br /&gt;&lt;br /&gt;A good tip for using mencoder is installing the rpm for KMediaGrab, which is a graphical frontend for mencoder. The KMediaGrab version I got is 0.3, and it works as charm.&lt;br /&gt;&lt;br /&gt;Anyway, since this is a Video Editing blog, I just wanted to recommend kmediagrab to you guys, in case you need to convert from one format to another.&lt;br /&gt;&lt;br /&gt;Now, onto QsKKing's tutorial. Let me tell you man, this rocks. Thanks for encoding it in high resolution so I could read the menus and options clearly so I can replicate them. One thing I specially liked is the overlapping clips and automatic transitions, which I didn't know in Premiere (well, with one or two months of barely using it, what can I say? Perhaps the option was hidden in there somewhere, and I really wouldn't remember anything if it wasn't for the Edicion de Video book).&lt;br /&gt;&lt;br /&gt;Now I realize that my approach to making transitions was wrong. Transitions should happen automatically ALL the time, and all I would need to do is get the transition parameters for the clip, when ENDING. Why only the ending transition? Because transitions require by default TWO clips. Only one clip is needed for the information. And with the overlapping = transition, I don't need to define transition links for a clip. The transition parameters will just have to be embedded in the clip. Don't want a transition? Remove the overlap. Voila! :)&lt;br /&gt;&lt;br /&gt;Again, thank you, QsKKing. I really owe you one. Just a little favor. Next time use something more universal like AVI/XVID ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7276974835420230476?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7276974835420230476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7276974835420230476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7276974835420230476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7276974835420230476'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/qskkings-vegas-7-tutorial-mencoder.html' title='QsKKing&apos;s Vegas 7 tutorial, mencoder, transitions...'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-3027465036315829108</id><published>2008-05-18T20:49:00.000-07:00</published><updated>2008-05-18T21:23:51.772-07:00</updated><title type='text'>Edius Pro rocks!</title><content type='html'>Now *THIS* is something that I was talking about. I just downloaded a few tutorials and  ads for Canopus' Edius Pro from youtube, and they have these cool features:&lt;br /&gt;&lt;br /&gt;* The toolbox above the timeline has these little icons that when you hover over them, you get a tooltip with the Brief description (as in the Menu) AND the accelerator shortcut key!&lt;br /&gt;* The resources window lets you scan a directory and they recreate a directory tree with all the resources of each directory in another pane - with icons, of course.&lt;br /&gt;* According to the ad, you can jog by just &lt;a href="http://www.youtube.com/watch?v=VvvxJuY1EGY"&gt;moving the mouse in a circular motion&lt;/a&gt;.  I ignore if this is by just clicking in the window or use a knob-like jog dial.&lt;br /&gt;&lt;br /&gt;But this is the kind of features that I kept asking for in overhyped editors like Jahshaka. What effort did these guys need to make a friggin' tooltip appear in front of a tool? Or a small context menu that explained to me what each button did? These things are CHILD'S PLAY to do, at least in wxWidgets. And why do programmers leave these things FOR THE END, if they're the EASIEST things to do?&lt;br /&gt;&lt;br /&gt;So this is why I started my project. Instead of starting with the backend image processing stuff, I'll start with the front end and add all these basic features that make Video Editing "just work". If later some guy makes a super-duper Video Editor technology, he'll just have to use Saya's frontend, and no problem. Of course, provided that I have managed to write an extensible interface for making your own effect dialogs - which I intend to do. But I disgress.&lt;br /&gt;&lt;br /&gt;Now that I've seen how Edius works, I'm going to use Edius' resources Window as model, instead of Premiere's (and possibly I'll start searching for more Edius screencasts ;-) ). If only open source programmers learned not to reinvent the wheel...&lt;br /&gt;&lt;br /&gt;Ah, user-friendliness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-3027465036315829108?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/3027465036315829108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=3027465036315829108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3027465036315829108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/3027465036315829108'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/edius-pro-rocks.html' title='Edius Pro rocks!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-234635511972373624</id><published>2008-05-18T07:02:00.000-07:00</published><updated>2008-05-18T07:36:36.620-07:00</updated><title type='text'>Clipboard problems, part deux</title><content type='html'>I think I got it figured out. First of all, let's simplify audio/video clipboard pasting. Since tracks can only be either video or audio, each track needs to have a  video-type flag telling which kind of track it is. This way it won't accept clips of different kinds. Ordering of tracks will be handled by the UI, so it doesn't matter if audio and video tracks are mixed, audio track will always appear at the bottom and video tracks at the top. However, for pasting purposes, having only the track's type is sufficient.&lt;br /&gt;&lt;br /&gt;Declaring one clipboard type for single clips is annoying. Instead, let's add a function that detects whether a sequence has only a single clip. Or even better, just add a friggin' flag. This is OOP, we can derive a clipboard from a sequence.&lt;br /&gt;&lt;br /&gt;With that, we can turn the clipboard into a full-fledged sequence and our copy/paste problems will be gone.&lt;br /&gt;&lt;br /&gt;When pasting multiple tracks, we just have to use an identifier for the track's z-position, and act accordingly. If the topmost track is pasted below, we can either deny the paste or (at the user's choice in the options dialog), create new tracks to do the paste.&lt;br /&gt;&lt;br /&gt;Having the z-position stored in the clipboard tracks allows for moving clips at will without any difficulties, even if sequence tracks have been added or deleted.&lt;br /&gt;&lt;br /&gt;Now the problem is nested tracks. How to handle them? Well, we have to analyse the global effect of having tracks nested. Let's say we have tracks A,B,C and D.&lt;br /&gt;&lt;pre&gt;A&lt;br /&gt;B&lt;br /&gt;C&lt;br /&gt;D&lt;/pre&gt;Now let's add some container tracks E and F, which will contain A and B, and C and D respectively. Let's call A and B "leaf" tracks, and E and F "branch" tracks.&lt;br /&gt;&lt;pre&gt;E - A&lt;br /&gt; - B&lt;br /&gt;F - C&lt;br /&gt;   D&lt;/pre&gt;&lt;br /&gt;In the end, it doesn't matter how nested they are, they keep the same order. If D is rendered and C on top of it, combined, they form a single track but the effect is exactly the same. Meaning that when the tree is expanded to its full extent, there will be no problem. We just have to take care of pasting into the "leaf" tracks and everything will be as usual.&lt;br /&gt;&lt;br /&gt;This means container tracks can't have clips. They're only made for visualization and handling purposes. So that would leave us with having to use a "trackbase" class to define branch and leaf tracks. Tracks would then need a function to calculate their Z position based on their parent tracks' position. This can be expressed with the following functions:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;unsigned int zpos() {&lt;br /&gt; return get_parent_zpos() + local_zpos;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;unsigned int get_parent_zpos() {&lt;br /&gt; unsigned int result;&lt;br /&gt; if(!m_ParentTrack) {&lt;br /&gt;    result = 0;&lt;br /&gt; } else {&lt;br /&gt;    result = m_ParentTrack-&gt;zpos();&lt;br /&gt; }&lt;br /&gt; return result;&lt;br /&gt;}&lt;/pre&gt;Finally, to paste and move tracks, we only have to make sure that all tracks are fully expanded - otherwise, pasting (or moving) clips/selections will be forbidden.&lt;br /&gt;&lt;br /&gt;The paste operation then becomes simple, it's just iterating over the tracks and pasting the contents. Note that audio tracks will also be copied/cut/pasted if they're linked to the video tracks. To do so, we need to add a "track" member to the clip, to know which track they belong to. For that we also need a "position" member, to tell us the local position in the track. If the track's position slot doesn't equal to the clips', the clips' position is invalidated and the track is rescanned to find the clip. If the clip isn't found, it's then searched in all the  tracks, and updated accordingly. If still the cip isn't found, it means we have an orphan clip and it will be deleted.&lt;br /&gt;&lt;br /&gt;Our timeline structure is getting more defined :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-234635511972373624?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/234635511972373624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=234635511972373624' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/234635511972373624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/234635511972373624'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/clipboard-problems-part-deux.html' title='Clipboard problems, part deux'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5835814576720772848</id><published>2008-05-17T22:00:00.000-07:00</published><updated>2008-05-17T22:02:13.036-07:00</updated><title type='text'>Sony Vegas: You're next.</title><content type='html'>I'd like to thank QSK King for uploading his Sony Vegas 7 tutorial to youtube and various torrent trackers.&lt;br /&gt;&lt;br /&gt;I'm downloading that tutorial right now, and I'll see if I really can obtain some juicy information which I can transform into code.&lt;br /&gt;&lt;br /&gt;QSK King: You're da King! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5835814576720772848?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5835814576720772848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5835814576720772848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5835814576720772848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5835814576720772848'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/sony-vegas-youre-next.html' title='Sony Vegas: You&apos;re next.'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2238225222732133395</id><published>2008-05-17T20:29:00.001-07:00</published><updated>2008-05-17T21:10:50.449-07:00</updated><title type='text'>Canopus Edius</title><content type='html'>I just found a relatively new Nonlinear Editor for Windows. It's called Canopus &lt;a href="http://www.canopus.com/products/EDIUSPro/newfeatures.php#newgui"&gt;Edius Pro.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The screenshots look awesome. I think I'm going to take some interface options from them. Hmmm what's this? They got a Render Menu in the menubar. It's worth taking a look...&lt;br /&gt;&lt;br /&gt;Apparently there is no such thing as "nested tracks" in Edius... perhaps the idea of nesting tracks isn't really as good as I thought, it only complicates things more. The only advantage that I see in nesting tracks is making more space available for visualizing clips, and applying effects to various tracks at the same time. But if we have sequences that can be nested as clips, there's no need for nesting tracks. I can just select a bunch of clips, right click them and "combine into a single sequence". This would create a new sequence, add it to the resources and create a clip from it.&lt;br /&gt;(Update: Yes, there is a need for nested tracks. Do operation on various tracks at the same time, mute or hide all the tracks at the same time. But in the end, they're nothing more than a list of tracks clumped together. What's the difficulty? It'll be just for grouping.)&lt;br /&gt;&lt;br /&gt;Going back to Edius... what's this? They got bezier curves for editing effects? O.o&lt;br /&gt;Wow. When the Lumiera guys mentioned they wanted to add bezier curves for effects editing, they weren't kidding, there IS such a feature. And that color correction screen is really wonderful (I'd link or copy it but I don't want to get in copyright problems, the link is there for you to link).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2238225222732133395?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2238225222732133395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2238225222732133395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2238225222732133395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2238225222732133395'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/canopus-edius.html' title='Canopus Edius'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4507404104997357020</id><published>2008-05-17T19:00:00.000-07:00</published><updated>2008-05-17T19:18:56.850-07:00</updated><title type='text'>Clipboard problems</title><content type='html'>A problem I stumbled upon is... how to handle copying and pasting? Copying a single clip is no problem. Copying a piece of a track isn't problem either, I only have to store the track beginning offset and copy the clips' data.&lt;br /&gt;&lt;br /&gt;However, how to handle nested tracks? Should I group tracks by video and audio?&lt;br /&gt;&lt;br /&gt;I remember when I used Premiere a while ago, I could add audio and video tracks. What I don't remember is... would I add only audio tracks or video tracks? But it seems You could add audio-only tracks, i.e. for adding background music to a video. Therefore, tracks shouldn't be grouped by video and audio.&lt;br /&gt;&lt;br /&gt;How to handle then copying and pasting?&lt;br /&gt;&lt;br /&gt;Here's an idea. Do a copy of the current timeline in case of multitrack clipboard, and paste into exactly the same tracks (no up/down possible). I'm thinking that this would have the same effect than dragging and dropping a selection. However, how to move multitrack clips up/down? I think I'd need to add a command for shifting up / down clips.&lt;br /&gt;&lt;br /&gt;When I figure out how to solve this, I'll be able to implement cut/copy/paste effectively.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4507404104997357020?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4507404104997357020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4507404104997357020' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4507404104997357020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4507404104997357020'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/clipboard-problems.html' title='Clipboard problems'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5525871511568126959</id><published>2008-05-17T15:07:00.000-07:00</published><updated>2008-05-17T15:19:56.203-07:00</updated><title type='text'>First screenshot!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iBNw06Dsj6g/SC9X0PLgAzI/AAAAAAAAAAM/lFS65FBQ1kw/s1600-h/basic_file_menu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iBNw06Dsj6g/SC9X0PLgAzI/AAAAAAAAAAM/lFS65FBQ1kw/s400/basic_file_menu.jpg" alt="" id="BLOGGER_PHOTO_ID_5201472649575793458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the first screenshot of Saya. So far it only consists of the menus, but the File Menu is 95% implemented (items like Capture / Batch Capture aren't updated yet because they depend on variables that I still haven't added to the application.&lt;br /&gt;&lt;br /&gt;As you can see, the menu structure is nearly identical to Adobe Premiere, altho I've modified some things a little. The shortcut keys (the underlined letters) aren't identical since the  book I purchased (&lt;a href="http://www.redusers.com/noticias/edicion-de-video"&gt;"Edición de Video" by RedUsers&lt;/a&gt; - it's a latin-american book) doesn't include screenshots THAT detailed. But they do have a chapter on the menus, woo hoo! This is why I could copy the Premiere menus so easily. Some of the nested menus weren't in the same chapter, but I could easily compile them from the context menus on the various chapters.&lt;br /&gt;&lt;br /&gt;Currently I've implemented opening files (altho opening a file doesn't do anything but loading a string in memory), saving, reopening, clearing the recent projects. Importing videos and/or images isn't implemented yet.&lt;br /&gt;&lt;br /&gt;The good news is that I got the project and timeline memory structure (even the undo history) completely designed now (which I'll explain in a later post). The fun part will be designing the timeline widgets, whee!&lt;br /&gt;&lt;br /&gt;After I finish the code for enabling/disabling items on all menus, I'll start with the File Importing module. Then you'll get to see some dialogs done :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5525871511568126959?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5525871511568126959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5525871511568126959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5525871511568126959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5525871511568126959'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/first-screenshot.html' title='First screenshot!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iBNw06Dsj6g/SC9X0PLgAzI/AAAAAAAAAAM/lFS65FBQ1kw/s72-c/basic_file_menu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-5645389067209621930</id><published>2008-05-16T21:58:00.000-07:00</published><updated>2008-05-16T22:43:57.895-07:00</updated><title type='text'>Saya is now licensed under the GPLv3!</title><content type='html'>I updated all the development files to state they're licensed under the GPL version 3 or later. Additionally, I uploaded a copy of the GPLv3 in a file called LICENSE.txt&lt;br /&gt;All hail the FSF!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-5645389067209621930?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/5645389067209621930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=5645389067209621930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5645389067209621930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/5645389067209621930'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/saya-is-now-licensed-under-gplv3.html' title='Saya is now licensed under the GPLv3!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-897654061183810007</id><published>2008-05-15T18:58:00.000-07:00</published><updated>2008-05-15T21:26:27.703-07:00</updated><title type='text'>Codename funtime :)</title><content type='html'>Projects love codenames, right? Funny Furry, Breezy Badger, Joyful Jiraffe, and whatnot. So I say, let's have codenames for Saya, too! :) Since saya means "scabbard" in japanese, let's use some sword names!&lt;br /&gt;&lt;br /&gt;From wikipedia's &lt;a href="http://en.wikipedia.org/wiki/List_of_fictional_swords"&gt;List of famous fictional swords&lt;/a&gt;, I picked a few names of famous ficticious swords, and added a few real ones.&lt;br /&gt;&lt;br /&gt;I'll reserve the superpowerful magical swords for major releases, like ClaiohmSolais, Ascalon, Balmung or Excalibur. The earliest milestones will have wimpy names, like "baselard", "arrow", or "cutlass" :P&lt;br /&gt;&lt;br /&gt;Anyway, here's the current compilation.&lt;br /&gt;&lt;br /&gt;Arondight / Anduril  / Anguirel / Ascalon&lt;br /&gt;&lt;br /&gt;Baselard / Barrowblade / Buster / Balmung&lt;br /&gt;&lt;br /&gt;Cutlass / Claymore /  Callandor / Caladbolg / Curtana / ClaiomhSolais&lt;br /&gt;&lt;br /&gt;Dussac / Defender / Dragonslicer / Durandal&lt;br /&gt;&lt;br /&gt;Excalibur / Executioner / Einlanzer / Energy&lt;br /&gt;&lt;br /&gt;Falchion / Fragarach / Flamedancer / Fenrir&lt;br /&gt;&lt;br /&gt;Gladius / Guthwine / Glamdring / Gram&lt;br /&gt;&lt;br /&gt;Hauteclere / Herugrim / Heartsbane / Hrunting&lt;br /&gt;&lt;br /&gt;Ida / Itak / Irving / Iceflame / Izayoi&lt;br /&gt;&lt;br /&gt;Jian / Joyeuse / Jisoutou / Justice&lt;br /&gt;&lt;br /&gt;Katana / Kris / Khanda / Kunitsuna / Kusanagi&lt;br /&gt;&lt;br /&gt;Longclaw / Lilarcor / LionsTooth / Lhang&lt;br /&gt;&lt;br /&gt;Messer / Masamune / Murasame&lt;br /&gt;&lt;br /&gt;Narsil / Natsume / Nodachi / Naegling / Nothung&lt;br /&gt;&lt;br /&gt;Oathkeeper / Odyssey / Osafune / Orcrist&lt;br /&gt;&lt;br /&gt;Pathfinder / Pantera / Plesioth / Prakk&lt;br /&gt;&lt;br /&gt;QuelSerrar / Qinggang&lt;br /&gt;&lt;br /&gt;Rapier / Ragnarok / Ryusei /&lt;br /&gt;&lt;br /&gt;Sikanda / Shamshir / Sting / SenbonSakura / Stormbringer&lt;br /&gt;&lt;br /&gt;Tizona / Tetsusaiga / Tachi / Tulwar&lt;br /&gt;&lt;br /&gt;UltimaSchneider&lt;br /&gt;&lt;br /&gt;VioletFear / Valmanway / Vorpal&lt;br /&gt;&lt;br /&gt;Wakizashi / Wallace / Wyrmslayer&lt;br /&gt;&lt;br /&gt;Xiphos&lt;br /&gt;&lt;br /&gt;Yatagan / Yasutsuna&lt;br /&gt;&lt;br /&gt;Zweihander / Zabimaru / Zarroc / Zanbato / Zangetsu (I love this one! ;-) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-897654061183810007?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/897654061183810007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=897654061183810007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/897654061183810007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/897654061183810007'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/codename-funtime.html' title='Codename funtime :)'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2244469906921571136</id><published>2008-05-14T23:56:00.000-07:00</published><updated>2008-05-15T00:01:18.353-07:00</updated><title type='text'>How to implement undo/redo functionality</title><content type='html'>&lt;p&gt;After searching the web, I finally managed to implement an undo/redo class for Saya. I never imagined that with simple use-cases, I'd be able to straighten my thoughts and get rid of all the complications in thinking up a good algorithm.&lt;/p&gt;&lt;p&gt;So here goes.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Use case: Undo History&lt;br /&gt;======================&lt;br /&gt;&lt;br /&gt;1. Beginning&lt;br /&gt;============&lt;br /&gt;&lt;br /&gt;curstate ----&gt; 0. EOF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Do "something"&lt;br /&gt;=================&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;   curstate ----&gt; 0. EOF&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;                  0. RECENTLY SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. EOF&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If current state is EOF, save state in current slot with the transition to be done;&lt;br /&gt;   increment state pointer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Do "somethingElse"&lt;br /&gt;=====================&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. EOF&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. RECENTLY SAVED STATE, transition: "somethingelse"&lt;br /&gt;   curstate ----&gt; 2. EOF&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If current state is EOF, save state in current slot with the transition to be done;&lt;br /&gt;   increment state pointer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Undo&lt;br /&gt;=======&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;   curstate ----&gt; 2. EOF&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. RECENTLY SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If current state is EOF, Save state in current slot with an empty transition name;&lt;br /&gt;   decrement state pointer and restore state.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Redo&lt;br /&gt;=======&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;   curstate ----&gt; 2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If next state not EOF, Increment state pointer and restore state.&lt;br /&gt;&lt;br /&gt;5. Undo&lt;br /&gt;=======&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;   curstate ----&gt; 2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If current state not EOF, just decrement state pointer and restore state.&lt;br /&gt;&lt;br /&gt;6. Do aNewThing&lt;br /&gt;===============&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;INTERMEDIATE STEP:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;   curstate ----&gt; 1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. EOF&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "anewthing" (transition was renamed)&lt;br /&gt;   curstate ----&gt; 2. EOF&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;&lt;br /&gt;   If next state not EOF, delete all states until next state is EOF.&lt;br /&gt;   Rename current slot's transition; increment the pointer.&lt;br /&gt;&lt;br /&gt;--------- Alternative case: -----------&lt;br /&gt;&lt;br /&gt;BEFORE:&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;   curstate ----&gt; 2. SAVED STATE, transition: ""&lt;br /&gt;&lt;br /&gt;AFTER:&lt;br /&gt;&lt;br /&gt;                  0. SAVED STATE, transition: "something"&lt;br /&gt;                  1. SAVED STATE, transition: "somethingelse"&lt;br /&gt;                  2. SAVED STATE, transition: "aNewthing"&lt;br /&gt;   curstate ----&gt; 3. EOF&lt;br /&gt;&lt;br /&gt;ACTIONS:&lt;br /&gt;   If next state is EOF, rename current slot's transition; increment the pointer.&lt;br /&gt;&lt;br /&gt;Pseudocode:&lt;br /&gt;============&lt;br /&gt;&lt;br /&gt;Function Do() {&lt;br /&gt;   1. while(!IsNextEof()) delete the topmost state.&lt;br /&gt;   2. if(IsEof()) Save state in current slot with the transition to be done;&lt;br /&gt;   else&lt;br /&gt;      just rename current slot's transition.&lt;br /&gt;   3. ++curpos;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Undo() {&lt;br /&gt;   1. if(IsEof()) Save state in current slot with an empty transition name;&lt;br /&gt;   2. if(curpos) { curpos--; restore state; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Redo() {&lt;br /&gt;   1. if(!IsNextEof()) { curpos++; restore state; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function IsNextEof() {&lt;br /&gt;   return (curpos+1 &gt;= undostack.size(); )&lt;br /&gt;   // Note that we use a double-ended queue instead of just a stack to be able to delete&lt;br /&gt;   // old states in case memory usage exceeds a given limit.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function IsEof() {&lt;br /&gt;   return (curpos &gt;= undostack.size());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2244469906921571136?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2244469906921571136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2244469906921571136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2244469906921571136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2244469906921571136'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/how-to-implement-undoredo-functionality.html' title='How to implement undo/redo functionality'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-4698743144956538053</id><published>2008-05-13T23:39:00.000-07:00</published><updated>2008-05-13T23:46:35.607-07:00</updated><title type='text'>It's screencast time!</title><content type='html'>Seek, and ye will find, says an old proverb. Well, I've found it.&lt;br /&gt;&lt;br /&gt;Creative Cow has &lt;a href="http://cowcast.creativecow.net/premiere_pro/index.html"&gt;an entire collection of Adobe Premiere Pro Screencasts&lt;/a&gt;. Very well explained, with close-ups, so that makes perfect use cases explained by professionals. Until now I didn't know a tool such as multi-camera editing even existed.&lt;br /&gt;&lt;br /&gt;I would like to download Adobe's official tutorials, too to study them and implement the features in Saya, but that would feel dirty, like buying Texas from Santa Anna with his own gold, or something. So I'll keep Creative Cow's screencasts for the use cases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-4698743144956538053?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/4698743144956538053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=4698743144956538053' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4698743144956538053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/4698743144956538053'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/its-screencast-time.html' title='It&apos;s screencast time!'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-7466596644774365474</id><published>2008-05-13T20:46:00.000-07:00</published><updated>2008-05-13T21:39:10.612-07:00</updated><title type='text'>On the UI and the infrastructure</title><content type='html'>One question I've been asked more than once, is why I decided to start the design with the UI.&lt;br /&gt;&lt;br /&gt;According to good programming practices, first you need to work on a good design, and then start the implementation.&lt;br /&gt;&lt;br /&gt;Well, for now, the project will just focus on being an editor front-end. This means that the video processing stuff will be held back for later.&lt;br /&gt;&lt;br /&gt;Since my short-term goal is to have a workable user interface replicating the menus and dialogs of commercial video applications, I can assume that the design for these applications was well-done, and the only thing I need to do for now is to implement the dialogs and menus. When I stumble upon a wall (i.e. a dialog requiring information that I don't have yet), then I'll develop the infrastructure as needed, with the condition that I'll make it extensible to avoid getting stuck with a specific data structure.&lt;br /&gt;&lt;br /&gt;So, if you were worried because I don't have (yet) a working UML design, rest assured I'm also working on a good design for the infrastructure.&lt;br /&gt;&lt;br /&gt;So far, we have a class I'll call ProjectManager, which will handle project saving / loading, exporting, asking the user questions, etc.&lt;br /&gt;&lt;br /&gt;ProjectManager will have a member m_project which will be of the class VidProject. VidProject is a container, and will have one or more of the following:&lt;br /&gt;&lt;br /&gt;* Project Properties (title, framerate, preferred export format, codecs used, etc.)&lt;br /&gt;* A double-ended queue (std::deque) of undo/redo states&lt;br /&gt;* An std::vector of Sequences (timelines), which will have  a vector of tracks each.&lt;br /&gt;* A vector of Clips, and a vector of Clip indexes (to reuse deleted clip slots)&lt;br /&gt;* A vector of Resources, which are the actual video clips (to be more precise, the info on how to retrieve such clips, i.e. filename, starting / ending frame, etc.)&lt;br /&gt;&lt;br /&gt;Each clip will have (at least) the following information:&lt;br /&gt;&lt;br /&gt;* id# for the origin (the resource used).&lt;br /&gt;* Starting origin frame (in case of video, in case of audio we'll have samples - note that origin frames could also have starting / ending frames for the actual file used)&lt;br /&gt;* Ending origin frame&lt;br /&gt;* Loop count ( negative for infinite loops; 0 for no loops)&lt;br /&gt;* enum: video before the first frame will be black? transparent? a copy of the first frame?)&lt;br /&gt;* enum: same for the last frame&lt;br /&gt;* Changeable duration in timeline frames (for speed up  /slowdown of scenes)&lt;br /&gt;* A vector of effects (the effect id will be an id# in case of built-in effects, or a string, in case of external plugins. To keep things simple, the effect parameters will be stored on an std::map&lt;wxstring,wxstring&gt;.&lt;br /&gt;* If it's an audio clip, the id# for the corresponding clip of video, in case they're sinchronized.&lt;br /&gt;* the id# for the starting transition (use 0 for none)&lt;br /&gt;* the id# for the ending transition (use 0 for none)&lt;br /&gt;* In case of audio tracks, the channel # (0  for first channel, 1 for second, etc - this will be defined later as the implementation gets done). In case of stereo and multiple tracks, this will be a vector where the destination tracks will point to the source tracks. For remixing tracks, mixing to mono, etc, there will be also stackable audio effects.&lt;br /&gt;&lt;br /&gt;Tracks will be stored in a tree structure (children will be stored in a vector of track id#'s)  where the root of the tree will be the final rendering.  Again, we won't use pointers but indexes. To prevent recursion, each track will also have a level indicator.&lt;br /&gt;&lt;br /&gt;Each track will contain a map from frame# =&gt; clip id#. We can use the maps to construct a per-sequence set (a set is a map of booleans) of transition frames.  With these transition frames we can construct in real-time a list of states which tell us which frame contains which clip. With this info we can now render clips in the timeline.&lt;br /&gt;&lt;br /&gt;Note that I won't plan to use pointers AT ALL. By using standard cointainers and local indexes, I can serialize the sequences into easily-storable strings for undo / redo states, and it'll be also easier to serialize the whole project into an XML string.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-7466596644774365474?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/7466596644774365474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=7466596644774365474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7466596644774365474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/7466596644774365474'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/on-ui-and-infrastructure.html' title='On the UI and the infrastructure'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344514708575417646.post-2811684051721497911</id><published>2008-05-13T18:30:00.000-07:00</published><updated>2008-06-06T00:06:32.916-07:00</updated><title type='text'>Why I decided to create the Saya Video Editor</title><content type='html'>Good morning! This is the first post in my Saya Video Editor Blog.&lt;br /&gt;&lt;br /&gt;So, what is Saya? Saya is a project that aims to become a professional cross-platform Non Linear Video Editor. By cross-platform I mean that it'll work in Windows, Linux and even MacOS.&lt;br /&gt;&lt;br /&gt;Perhaps you're here wondering "Why reinvent the wheel?" "Aren't you doing more software fragmentation?" and "Do you really think you can do this on your own?"&lt;br /&gt;&lt;br /&gt;Well, I'll answer these questions one by one.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Q: Why reinvent the wheel?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A: I'm *NOT* reinventing the wheel. It's the *OTHER* guys who are reinventing the wheel. And yet, nobody has done it in a successful, cross-platform way.&lt;br /&gt;&lt;br /&gt;Allow me to explain further. Here are some features that the other Linux video editors are missing:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Cross-platform compatibility (and by that I mean Windows!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;As you can see, the Linux video editors are made for Linux, and Linux ONLY. While it's good to support a Free (as in Freedom) Operating System, it's not that good to leave the Windows people in the darkness. What would happen if OpenOffice.org was Linux only? What would happen if Firefox only ran on FreeBSD.&lt;br /&gt;&lt;br /&gt;Installing a lot of extra software in Windows to be able to run the binary you downloaded is *NOT* acceptable.&lt;br /&gt;&lt;br /&gt;Do you really think the average Windows user will agree to install and mess around with a virtual machine (and Linux inside it, which already includes a lot of headaches), or cygwin JUST to run (or try to run) a Video Editor?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_video_editing_software#Non-linear_video_editing_software_3"&gt;None of the Video Editors I tested&lt;/a&gt; (all of the free ones except zs4, which I was unable to find) were able to run in Microsoft Windows (TM).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How I'll succeed: With the wxWidgets library.&lt;/span&gt;&lt;br /&gt;This is why I chose to use the &lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets library&lt;/a&gt;, which makes portability SIMPLE. And I'm following a successful editor (Audacity) which was done in C++ and wxWidgets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Ease of installation in Windows (and that means absolutely NO python, and much less wxPython!) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The last time I tried to run a wxPython application I downloaded the wrong version (how is an end-user supposed to know?) and the program crashed. &lt;a href="http://www.youtube.com/watch?v=eZeYVIWz99I"&gt;Wanna know how I felt?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another complaint I have is that a lot of video editors depend on an interpreted language. Hello, I want a NATIVE application. If you want to use Python, please use a Python COMPILER. Thank you. I don't want to download an app and realizing it doesn't run after I decided to run it from the command line to see the Python error messages. Ugh.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How I'll &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;succeed&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: By writing the program 100% in C++.&lt;/span&gt;&lt;br /&gt;No interpreted language nightmares, no Python, no Ruby, No .NET / MONO, just plain and simple C++. With the use of STL, it's nearly a child's play to easily-write good programs. And with wxWidgets, make that double. Windows users can easily download an already-compiled binary (.exe - or even an installer), and the program will run. Was that so hard?&lt;br /&gt;&lt;br /&gt;An advantage of writing the program in C++ and make it install / compile easily in Windows will be a greater project exposure. I can choose to limit myself to the still-small Linux community, or I can embrace (without extending and extinguishing ;-) ) a much wider audience: Windows users. As a matter of fact, I was a Windows user myself, and I was frustrated at the lack of Free (and uncrippled) Video Editors for Windows. I would have joined a project if there was one - and trust me, I've been waiting for one for more than five years. I trust that there are other Windows users like me, that are expecting such a project to be born so they can join and participate in the writing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Ease of installation in Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I like short projects, or projects that come with their own libraries, even if redundant. While it's OK not to bundle very large libraries like wxWidgets, it's &lt;span style="font-weight: bold;"&gt;*&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;NOT* OK &lt;/span&gt;to ask for a dependency of an obscure video-processing library that also has dependencies on obscure math libraries that also have dependencies ad infinitum. What am I supposed to do if my distro isn't Ubuntu with their millionaire repository? I'm not asking for sharks with frickin' laser beams on their heads, I'm just asking to bundle the rare libraries so I don't need to download more stuff before doing the ./configure - make - make install ritual.&lt;br /&gt;&lt;br /&gt;I really don't know what's the deal with some Linux packages, but I had this experience with Kdenlive, where the release they used was buggy and I couldn't export the AMV I was making. It had timing problems. Sheesh. So, I tried to compile it on my own and I was smacked on the face with another dependency hell.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How I'll &lt;/span&gt;&lt;span style="font-weight: bold;"&gt; succeed&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I'll bundle the used libraries.&lt;/span&gt;&lt;br /&gt;XML libraries, multimedia libraries, they'll be included in the source tree. And it's perfectly legal since they're OPEN SOURCE. Ease of installation also means increased exposure to Linux audience - those people who know how to program but run in a wide variety of Linux distributions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Intuitive User Interface&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Let me say this straight: It is my personal opinion (no offense intended) that some editors like Cinelerra, simply have a hideous UI. In other words, it sucks. (personal opinion), and the decision of some developers to make a new program from scratch instead of just forking, confirms this (unfortunately, they'll make it for Linux ONLY. Why oh, why do they leave Windows users in limbo?). Cinelerra used a custom-made User Interface, which means that whenever I try to open or import a file, I'll experience a lot of bugs - an annoying one is that I can't easily change folders because it keeps appending that darn slash at the end, and I can't remove it!&lt;br /&gt;&lt;br /&gt;Then it's another maze to get to import a file. First, you can't import Divx files that you downloaded from the internet. Oh no, you first have to use some obscure tool to convert it to DV or M-JPEG format before you import it. More downloading of stuff. (And don't even get me started on crashes and hangs, but that's another matter).&lt;br /&gt;&lt;br /&gt;Another video editor I had tried was Jahshaka. Let me tell you that if something is counter-intuitive, Jahshaka is. They provide little or no help, no documentation, no tooltips, no right-click context menus, no nothing. You had to memorize some cryptic key shortcuts and whatnot. I wiped it a couple of hours after installing the thing.&lt;br /&gt;&lt;br /&gt;Come on guys, is that really hard to make an easy-to-use menu?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How I'll &lt;/span&gt;&lt;span style="font-weight: bold;"&gt; succeed&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I'll copy what works.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'll adopt existing user interfaces (i.e. menus, dialogs, widgets) from commercial projects like Adobe Premiere or Final Cut Pro.  And don't worry about Trade Secrets - I'm not reverse engineering anything. This is why I'm creating the interface based only on existing documentation (i.e. books) and publicly available information (wikis, screenshots found on the web, tutorial videos, etc).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Q: Aren't you doing more software fragmentation?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;A: No. I'm filling an unused niche (for the reasons explained above).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Q: &lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Do you really think you can do this on your own?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;A: No. This is why I'm making the webpage, posting the project on berlios (I'd choose sourceforge, but I've had good experiences with Berlios, specifically in the Code::Blocks IDE project (in which I participated, BTW :) )&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Q: OK, you convinced me. How can I help you?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Since I'm doing this from scratch, I need users of commercial video editors to share their experiences and ask for features. It doesn't matter if you don't have the software right now, you can use MS-paint, right? Or you can record some screencasts (or flash animations, whatever) of your favorite video editors (even from memory, even if the drawings suck) , i.e. "this is how you do 3-point editing" (that one would help a lot, btw), or "I like how this tool makes an icon for you" and all that. I'm not an expert in making videos, I didn't take a $1,200 dlls. course on -nameyoursoftwarehere-, so this is why i need help.&lt;br /&gt;&lt;br /&gt;If you're a Cinelerra or Kino or whatever - user, you can also record your screen casts or take snapshots and say "I want this feature!". I'll add it as soon as I can.&lt;br /&gt;&lt;br /&gt;If you're a C++ programmer with wxWidgets experience, &lt;span style="font-weight: bold;"&gt;YOU'RE MORE THAN WELCOME&lt;/span&gt; to join the project.&lt;br /&gt;&lt;br /&gt;So, please help me with Suggestions, feedback, and to paraphrase Neo:&lt;br /&gt;&lt;br /&gt;"Screenshots. Lots of screenshots."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344514708575417646-2811684051721497911?l=saya-videoeditor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saya-videoeditor.blogspot.com/feeds/2811684051721497911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344514708575417646&amp;postID=2811684051721497911' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2811684051721497911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344514708575417646/posts/default/2811684051721497911'/><link rel='alternate' type='text/html' href='http://saya-videoeditor.blogspot.com/2008/05/why-i-decided-to-create-saya-video.html' title='Why I decided to create the Saya Video Editor'/><author><name>Rick</name><uri>http://www.blogger.com/profile/16922162914881396629</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_iBNw06Dsj6g/SkbHG9HqP9I/AAAAAAAAAFo/aZNu9Zyh2iA/S220/gon.jpg'/></author><thr:total>1</thr:total></entry></feed>
