Thursday, December 25, 2008

First donation received, yay! :)

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!

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.

Anyway - Thank you zarxrax, we really appreciate your generous donation. Merry Christmas, and happy new year!

Tuesday, December 23, 2008

Merry Christmas!

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 ^^;;;

Seriously, I've been revamping the inner workings of Saya:

* A completely new string class.
* A completely new event engine.
* A base cross-platform application class which will make it much easier to port Saya to Qt or whatever toolkit you desire.
* One-to-one wrappers for wxWidget's dialog boxes... well, almost :)
* A restructured source code tree.
* Tons of bug fixes.

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. :)

Merry Christmas/Holidays, and a happy new year!

Sunday, December 7, 2008

Saya developer's meeting #3 (2008-11-28) chat log


<Rigoberto> Good evening..
<nekohayo> hello~!
<rick_777> evening
<rick_777> Ok
<rick_777> this meeting is officially open
<Rigoberto> nice that we chat together tonight...
<rick_777> Tonight we will discuss the progress so far and what's
expected for the next month
<Rigoberto> perfect
<rick_777> First, i have to announce that due to my new job, the
expected development time on Saya might become restricted to weekends
<rick_777> and occasionally on weekdays, depending on how heavy the workload is
<rick_777> Second, as you have seen in the mailing list, an IP lawyer
has volunteered to help us in anything legal.
<Rigoberto> ok
<Rigoberto> that's great
<nekohayo> oh, haven't seen that, but I haven't checked mail today
<nekohayo> I wonder why though
<rick_777> Also, Rigo and I have been working on the playback controls.
<Rigoberto> in case it turns out we violate a strange patent no one knows about
<rick_777> yup.
<rick_777> Anyway - I'm still undecided whether to do the fun and
entertaining GUI stuff, or to keep debugging the boring core stuff
<Rigoberto> yup Rich has been very helpful with that thanks again Rich
<rick_777> it might depend on my mood, but I'd really like to have
those nice round buttons to give the fans some eye-candy
<rick_777> that usually keeps them interested
<Rigoberto> what about both?
<rick_777> Good idea :)
<Rigoberto> :)
<rick_777> Anyway, I don't know how much time i'll be able to work.
The playback controls SHOULD become functional by january 2009.
<rick_777> which is unfortunate, as I see the deadline extending more
and more :(
<rick_777> Perhaps this would be a good time to encourage more recruiting ;-)
<nekohayo> rick_777: you mean actually controlling playback, not just
the visual widgets, I hope
<rick_777> nekohayo: Yes. Actually controlling playback
<rick_777> So we go to the Research and Development section
<rick_777> There's a library called libcairo, that is great for
drawing vector graphics. It might become useful in the timeline
<rick_777> and to modify effects
<nekohayo> cairo actually is part of gtk now, afaik.
<Rigoberto> afaik?
<nekohayo> as far as I know
<nekohayo> cairo is pretty much used a lot throughout the gnome desktop
<rick_777> But to keep my promise about the project, we'll need to
embed the cairo library in saya
<rick_777> to avoid dependency hell
<nekohayo> it's what draws pretty vectors, graphs, widgets, whatever
<rick_777> Rigo, how do you feel regarding your wxWidgets skills?
<nekohayo> dependency hell: hmm. is that really such a bad thing?
you're imposing yourself a ton of additional/unnecessary workload, no?
<rick_777> nekohayo: Dependency hell is what made it impossible for me
to install the kdenlive video editor on my machine. It was
frustrating.
<Rigoberto> Rich: improving... what's my next task?
<rick_777> I don't want to step on the same stone.
<nekohayo> you just have to properly document what are the dependencies<
<nekohayo> so that users can get it compiled easily. every last one of them.
<rick_777> nekohayo: The problem isn't knowing what the dependencies
are, but having to download them if your distro doesn't provide them.
<rick_777> having the source code in the same package is a big
productivity boost for users
<nekohayo> well, if you have some really obscure ones, yes you can embed them
<rick_777> ok
<nekohayo> but cairo is mainstream.
<rick_777> Rigo, here's your next homework:
<rick_777> we still need a jog control
<nekohayo> yeah I see your point
<nekohayo> but it's additional workload for you, possibly. anyway.
<Rigoberto> do we?
<rick_777> to avoid getting the "oh no, this is too complicated!
*brain block*" syndrome,
<rick_777> we'll split your task in various subtasks:
<rick_777> 1) Draw the widget using the wxwidgets functions. Just the
little circle with a tiny circle inside it.
<rick_777> 2) Make it more appealing, like perhaps adding a shadow and
background color
<rick_777> 3) Parameterize the drawing depending on a private variable
(like "angle")
<rick_777> 4) Capturing the mousedown event (the name may be
different) to switch on a "dragging mode"
<rick_777> and popping a messagebox saying "dragging enabled"
<rick_777> 4.1) Perhaps with that you could change some color in the
jog control, like making the little tiny circle glow red
<rick_777> like a LED light, that'd be cool
<rick_777> 4.2) When the mouse button is released, make the tiny
circle stop glowing
<nekohayo> is a jog control really that important?
<rick_777> yes, it is.
<rick_777> it's essential for professional video editing
<nekohayo> from my experience, I never needed one/even knew it
existed. it didn't in vegas.
<rick_777> and there are some hardware widgets that implement a jog
<nekohayo> the thing is
<Rigoberto> Rich: I tought we already discussed this point in the list
<rick_777> you connect them to usb, and the video editor (like Canopus Edius)
<rick_777> reacts
<rick_777> um, perhaps i didn't make myself clear.
<Rigoberto> Rich: and if I remember well we agreed not to include it
<nekohayo> isn't the jog control a bit premature?
<rick_777> i apologize for the confusion.
<nekohayo> when there is no rendering/playback/splitting/tracks
<rick_777> We agreed not to include it in the first "release" of the
controls - which we already have in SVN.
<rick_777> nekohayo: I need the jog control to test the playback engine
<nekohayo> ah
<nekohayo> oh, that explains
<rick_777> right now i'll be able to test it using limited features
<Rigoberto> Rich: have you seen avidemux?
<rick_777> like play, fast forward, etc. But jog control is much more precise
<rick_777> Once, I think. let me check.
<rick_777> ah, i see it. It's pretty basic IMHO
<rick_777> everyone, please look at this.
<rick_777> http://images.google.com/images?um=1&hl=en&q=premiere+pro+jog&btnG=Search+Images
<nekohayo> why yes, it's the pro editing keyboard
<rick_777> see the jog control in there?
<nekohayo> here's a reality check, however.
<rick_777> oh?
<nekohayo> most linux users or home editors don't have this
<rick_777> but our plan is not to make a home editor
<rick_777> but to make a professional editor
<nekohayo> all things start up non professional though, unless you
develop behind closed doors for a few years :)
<rick_777> granted, small steps, but the jog is a step we can make,
and besides, making a jog control will become a great training for
Rigo. It's much easier than making the timeline controls
<nekohayo> alright
<rick_777> no pressure there :)
<rick_777> so, may I continue on your homework?
<Rigoberto> Rich: an important milestone is functional controls right?
<rick_777> Exactly!
<rick_777> and according to the development plans,
<rick_777> we need a functional player for version 0.1
<Rigoberto> Rich: Insted of the jog control can I help in implemeting
the control functions instead?
<rick_777> http://sayavideoeditor.sourceforge.net/roadmap.shtml
<rick_777> the wha?
<rick_777> please be specific, what do you mean with "the control functions"
<Rigoberto> making the controls work
<rick_777> OH!
<rick_777> Well...
<rick_777> the problem is that we don't know how functional the
playback engine is
<rick_777> so i need to do it step by step: Implementing one control,
debugging...
<rick_777> and i'm still not sure what part goes where
<rick_777> so i'd rather have you doing something in a more controlled
(pardon the pun) environment
<rick_777> But if you want, you could work on the skeleton for the
control functions
<Rigoberto> I would feel like If contribution was more valuable if I
can help you making the controls work
<Rigoberto> my contribution I mean
<rick_777> actually, i think the jog is much more valuable
<rick_777> perhaps it turns out that the button control functions are
just one-liners
<rick_777> Ok, tell you what. This month we'll work together on that
<rick_777> if i beat you to it and end up doing it myself (because it
could be very easy), no hard feelings.
<Rigoberto> ok
<rick_777> But the jog control is something i really need, and i don't
have the background to do it
<rick_777> but there are tutorials on making your own widgets
<rick_777> so if you do that, your level would really increase
<rick_777> and your abilities would complement mine, and viceversa
<rick_777> besides, the real reason why i'm asking you to do it... is
<rick_777> i need someone to work on the timeline controls
<Rigoberto> what's the diference between the slider we already have
and the jogĂ‚¡
<rick_777> you know, moving clips around...
<rick_777> the slider should have a "spring effect" that when you drop it,
<rick_777> it goes back to the center and playback is paused.
<rick_777> Let's imagine that you implement a jog control using a
slider (which you won't).
<rick_777> if you drop the control,
<rick_777> the thumb bar goes back to the middle, but playback doesn't
change. Well, the moment you move it, playback is paused and frames
advance as long as you move the control
<rick_777> how should i put it...
<rick_777> jog control is like a car's wheel. You move it right, the
car moves right.
<rick_777> the shutter control (the slider we have) is like the
accelerator pedal
<rick_777> the more you push it, the faster it goes
<rick_777> so that's basically the difference between the jog and the shutter
<Rigoberto> If I understand correctly
<Rigoberto> avidemux does that with a single slider...
<Rigoberto> is there a program that implements your idea to see it clearly
<rick_777> yes, adobe premiere ^_^
<rick_777> let me find a youtube video
<Rigoberto> thanks
<nekohayo> I always thought the jog was a thing of the past that was
made to compensate for VCR/analog devices' lack of precision
<nekohayo> and irrelevant in the world of frames and keyframes
<nekohayo> I guess I'll have to see that video and see how it is
relevant nowadays
<Rigoberto> I like the way avidemux implements it
<Rigoberto> I think its intuitive
<rick_777> okay um....
<rick_777> the problem is, i haven't seen avidemux
<rick_777> but i'll try to install it so i can see how it works
<nekohayo> apt-get it
<nekohayo> :P
<rick_777> not in the repo :P
<nekohayo> wtf, it is
<nekohayo> at least in debian/ubuntu?
<nekohayo> ;)
<rick_777> not in mepis.
<rick_777> ugh.
<rick_777> ok, mind explaining how avidemux works?
<Rigoberto> why don't you install over your winblows installation
<rick_777> OK
<rick_777> booting it up...
<rick_777> downloading...
<rick_777> ah - here's the official adobe premiere explanation for the
jog/shuttle controls
<rick_777> http://livedocs.adobe.com/en_US/PremierePro/3.0/WS810776E4-8A15-4ff5-88B9-E6B712E0BB49.html
<rick_777> and btw, i can see a situation where a professional editor
needs the jog control
<rick_777> the jog control not only works for input video playback, it
will also work to preview the output video
<rick_777> so imagine you're doing a lip-sync editing
<rick_777> and you need precise control over which frame goes where
<rick_777> (in premiere, you would move the jog control and you could
hear the corresponding audio - even if it's tenths of a second
<rick_777> Ok
<rick_777> i'm running avidemux now
<rick_777> i'm loading a .vob file from a dvd
* nekohayo slaps forehead at the overcomplexity of premiere's interface :)
<rick_777> ugh! I need to copy it to the HD
<rick_777> brb
<rick_777> Ok
<rick_777> loaded
<rick_777> so what's the part you want me to do?
<Rigoberto> use the jog disk
<rick_777> what jog disk?
<Rigoberto> beside the video slider
<Rigoberto> over the selection word
<rick_777> well that's not a jog
<rick_777> that's the shuttle
<rick_777> but yes, I see how it works
<rick_777> however it only works when trying to seek a determinate
instant in time
<rick_777> btw, i'd love the shuttle control in Saya to look like that
<rick_777> ;-)
<Rigoberto> yeah it looks nice
<rick_777> do you think you could copy it? ;-)
<Rigoberto> got to talk to the lawyer first
<Rigoberto> :p
<rick_777> lol
<rick_777> anwyay
<rick_777> i still i see no valid reason why NOT to implement the jog control
<rick_777> please enlighten me
<Rigoberto> can you please explain what the jog does
<rick_777> ok
<nekohayo> except development time, nope
<rick_777> imagine...
<rick_777> that the avidemux slider is a toothed like
<rick_777> line
<rick_777> like with gears
<rick_777> but flat
<rick_777> and imagine the jog control is a gear that goes just below it
<rick_777> and connects to it
<rick_777> so if you move the jog clockwise, the timeline slider goes forward
<rick_777> if you move it counterclockwise, the timeline slider (NOT
the shuttle! btw, but the main slider) goes backward
<rick_777> but in a very tiny scale
<rick_777> like one frame per 15 degrees change in the jog
<rick_777> can you see it?
<Rigoberto> so it has large resolutioin
<rick_777> yes
<rick_777> i've needed to use the jog in the past
<Rigoberto> I think I got it but I would like to try it. Do you know
whether there is a trial?
<rick_777> ?
<rick_777> OH
<rick_777> please watch this
<rick_777> http://www.youtube.com/watch?v=VvvxJuY1EGY
<rick_777> it's an Edius Pro promotional
<rick_777> go to 1:34
<rick_777> and you'll see what i want to do
<rick_777> hmmmmmmmm perhaps i'm mistaking the jog with the shuttle
<rick_777> i need to document myself better
<rick_777> either way, see how the mouse is moving clockwise and the
video advances?
<rick_777> pardon me, it's 1:33
<rick_777> actually i think it'd be useful to watch the complete promo
<rick_777> go ahead, i can wait :)
<rick_777> btw, the promo was of course done 100% with Edius
<rick_777> this is where we want to go
<Rigoberto> wow nice piece of software
<rick_777> how does avidemux fare now? ;-)
<rick_777> anyway
<rick_777> did you see how the mouse moved clockwise and
counterclockwise and the video responded?
<Rigoberto> yup
<rick_777> well
<Rigoberto> I still why to try premiere tough
<rick_777> later we might be able to implement such gestures
<rick_777> but i have this idea
<rick_777> have you ever done this in MS Paint?
* nekohayo takes a look
<rick_777> you click on a point, and start moving the mouse clockwise
<rick_777> when in "select" mode
<rick_777> no, wait
<rick_777> better select the "line" tool
<rick_777> click on a point, and then start moving the mouse
<rick_777> clockwise
<rick_777> are you doing it?
<Rigoberto> yup
<rick_777> so, the line follows the mouse pointer
<rick_777> and the axis is constant
<rick_777> now if you draw an imaginary horizontal line....
<rick_777> the two lines would form an angle
<rick_777> the variation of that angle
<rick_777> corresponds to the playback speed when using the jog
(shuttle?) control
<rick_777> the little circle inside the knob
<rick_777> would follow the mouse
<rick_777> the little circle would be the equivalent of the spinning
line you just moved in mspaint
<rick_777> and as it spins clock/counterclockwise, the video advances
forward and backward
<rick_777> as i said, it's a control not so easy to make, but it's necessary
<rick_777> at least for professional users
<Rigoberto> isn't the jog control going to like premiere's?
<Rigoberto> going to look I mean
<rick_777> nope. Premiere's design is counterintuitive
<rick_777> you need to unclick, move the mouse to the left, click,
move it to the right, etc
<rick_777> it's a mess
<rick_777> if you make it circular, you could theoretically advance a
whole blockbuster movie just by moving the mouse in circles
<Rigoberto> I thought you said you wanted ours to look like it
<rick_777> the shuttle control, yes
<rick_777> but i think avidemux's is prettier :)
<Rigoberto> avidemux shuttle is very similar to premiere's jog
<rick_777> yes, but premiere has a shuttle, too!
<Rigoberto> yup just above the jog
<rick_777> it's the tiny slider just above the jog
<rick_777> as you can see, the style varies, but the functionality is
more or less the same
<rick_777> so here are my new requirements:
<rick_777> * Make the slider look like avidemux's shuttle control
<rick_777> or jog, or whatever it's called.
<rick_777> * Make the jog control circular, like a knob with a red
"LED" indicating the direction it's pointing to
<rick_777> * Make the buttons behave just like avidemux (i'll take care of that)
<rick_777> So I guess that sums up what we'll work on this month
<rick_777> k?
<Rigoberto> what about the steps you were saying...
<rick_777> that's all about the jog control
<rick_777> let's review them
<rick_777> 1) Draw the widget using the wxwidgets functions. Just the
little circle with a tiny circle inside it.
<rick_777> 2) Make it more appealing, like perhaps adding a shadow and
background color
<rick_777> 3) Parameterize the drawing depending on a private variable
(like "angle")
<rick_777> ) Capturing the mousedown event (the name may be different)
to switch on a "dragging mode"
<rick_777> and popping a messagebox saying "dragging enabled"
<rick_777> 4.1) Perhaps with that you could change some color in the
jog control, like making the little tiny circle glow red
<rick_777> like a LED light, that'd be cool
<rick_777> 4.2) When the mouse button is released, make the tiny
circle stop glowing, and the jog is released
<rick_777> 4.3) if you can, when the jog button is pressed, make the
mouse pointer invisible
<rick_777> 4.4) when the mouse button is released, also move the mouse
to exactly where the tiny red light was
<rick_777> oh, i guess i forgot step 4.1.5)
<rick_777> move the redlight along with the mouse
<rick_777> just get the coordinates of the mouse pointer and calculate the angle
<rick_777> 4.5) The hard part will be implementing a "step"
measurement to calculate how much the mouse was moving in a certain
time, and trigger an event
<rick_777> we can leave 4.5) for last.
<Rigoberto> ok
<rick_777> I'm sure you can do that with a little wxwidgets research
and practice
<rick_777> i KNOW you can do it.
<rick_777> grasshopper :P
<Rigoberto> :)
<Rigoberto> lol
<rick_777> well , that's all for today.
<rick_777> any other questions?
<Rigoberto> are you going to send the chat log?
<rick_777> yes, but my computer might crash and the log could get lost
<rick_777> better take precautions
<rick_777> any other questions?
<Rigoberto> noup
<rick_777> Ok then :)
<rick_777> This meeting (and log) is officially closed.
<Rigoberto> good evening folks

Saya developers meeting #3 (2008-11-28): Summary of Activities

This is a brief summary about what has been discussed in the second
Saya-VE developers meeting.

About the team:
* No changes, but I was e-mailed by a pro-open-source IP lawyer in
case we need any assistance.

About the tasks:

* We discussed the need of having a jog control, and what was the
difference between a jog (advancing / going back frame by frame) and a
shuttle (fast forwarding/rewinding at different speeds).
* Jeff gave us an explanation of how controls work in AVIDemux.
* We discussed a bit about how the button 3D effects should behave
* Rigo has been assigned the task of designing a jog control for the
playback controls.
Here's a snippet of the task in question from the chat log:


<rick_777> to avoid getting the "oh no, this is too complicated!
*brain block*" syndrome,
<rick_777> we'll split your task in various subtasks:
<rick_777> 1) Draw the widget using the wxwidgets functions. Just the
little circle with a tiny circle inside it.
<rick_777> 2) Make it more appealing, like perhaps adding a shadow and
background color
<rick_777> 3) Parameterize the drawing depending on a private variable
(like "angle")
<rick_777> 4) Capturing the mousedown event (the name may be
different) to switch on a "dragging mode"
<rick_777> and popping a messagebox saying "dragging enabled"
<rick_777> 4.1) Perhaps with that you could change some color in the
jog control, like making the little tiny circle glow red
<rick_777> like a LED light, that'd be cool
<rick_777> 4.2) When the mouse button is released, make the tiny
circle stop glowing

About the next meeting:

Next meeting is scheduled, unless notified by the members, on Friday
26/Dec/2008. If anyone has any problem with that, we can schedule the
meeting to be held in January next year, or earlier this month.

Sunday, November 23, 2008

Third screenshot: Playback controls!

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.

But basically this is how it'll look.

Thursday, November 6, 2008

Settled with a new job... good/bad news.

The good news is that I got a new job, and that hopefully will have a fine pay.

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.

Monday, November 3, 2008

Finally! Out of the bottleneck!

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.

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.

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!).

Now I've told Rigo to hurry with his implementation of the playback controls so we can start testing and debugging the playback.

I'll be updating the project status in the next few days to reflect the changes in the repository. All rejoice!

Friday, October 24, 2008

Saya-VE developers' meeting, Oct 24 / 08

Highlights:

* There are some people interested in joining, but couldn't (or forgot to) join the chat.
* I couldn't work on the project since I've been very busy at work - same for Rigo
* All pending work will be revised on the next meeting

The next meeting will be held on Friday, November 28 2008 at 8PM CDT.

Thursday, October 9, 2008

Saya development may stall for a couple of weeks...

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. More about it in the saya-dev blog.

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.

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...

Friday, October 3, 2008

Project now accepts donations!

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

Donate here:

Saturday, September 27, 2008

Saya-VE 2nd dev meeting (26/Sep/2008) Summary

This is a brief summary about what has been discussed in the second
Saya-VE developers meeting.

About the Team:

* Nopalin wrote me an e-mail explaining some tragic circumstances that made it impossible for him to continue on the project.
* 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.
* 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.
* One person has contacted me via the blog, but I haven't received any e-mail. Let's see what happens.
* 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.

About the tasks:

* The timeline assigned to Javier Galicia hasn't been completed yet. For some mysterious reason he was unable to attend the meeting, too.
* 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.
* The data structures for the timeline have been completely rewritten to allow (de)serialization. But deserialization hasn't been worked on.
* The playback visual controls are stalled due to the work on the threads unit test. They've been given a lower priority.

About the website, and Public Relations:

* We have a new blog: http://saya-dev.blogspot.com/ This blog is mainly for unofficial developer documentation and to share stuff we've learned during development - like programming patterns, new algorithms, etc.
* 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.
* All team members are to e-mail me a public profile so I can post it on the website.
* Sourceforge has changed its web access method. More info can be found at http://sourceforge.net/community/forum/topic.php?id=3518&page&replies=1

About future plans:

* 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.

About the next meeting:

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.

Saturday, September 20, 2008

C++ Programmer Wanted

As usual, we're accepting C++ developers who want to cooperate with the Saya Video Editor project.

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.

Thanks.

Friday, September 12, 2008

Website to be down on Sept. 15th and/or 16th.

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.

Thank you for your understanding.

Tuesday, September 9, 2008

New "Progress Status" page uploaded.

Here it is. The page that will tell you how far we've been progressing on Saya.

http://sayavideoeditor.sourceforge.net/progress.shtml

It's categorized in sections, and each section is divided in items.
Enjoy.

Sunday, September 7, 2008

"Open Source Video Editing Foundation" created!

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.

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.

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.

Here's the URL.

http://groups.google.com/group/open-source-video-editing-foundation/

There is a website under construction, whose domain is yet to be announced.

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 Traverso, Atheme, etc. (maybe it's time to invite the Lumiera guys).

But I guarantee you, this thing is 100% organic grassroot. I was expecting Saya to get attention from f/oss developers, but not THIS soon! In any case, this gives me more incentives to keep working on Saya.

This is getting interesting.... VERY interesting B-)

Wednesday, September 3, 2008

Unofficial dev blog created!

As I keep learning new programming techniques and algorihtms, I decided I couldn't just keep them to myself. The world needs to know.

But that doesn't belong to the project, so I decided I would create a new blog:

"Saya Video Editor unofficial dev blog"

It's available at http://saya-dev.blogspot.com/

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.

Tuesday, September 2, 2008

Threads module almost completed!

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?"

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?).

Huh?

Ok, to get you in perspective: There are three basic kinds of thread organization objects: Mutexes, Semaphores, and Conditions.

----------- begin boring explanation -----------
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.

(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.)

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.

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).
----------- end boring explanation -----------
Anyway, here's the trick: Conditions aren't implemented in windows, so you have to implement them using Semaphores and Mutexes (which are implemented).
But in Posix, you don't have semaphores, so you have to implement them using conditions and mutexes.

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.

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.

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.

When I do my first thread experiment, it'll be quite fun. I spent many nights this week trying to finish this.

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.

But let me tell you. When I get the core finished, things will start to get REALLY interesting. I'll keep you updated.

Friday, August 29, 2008

Saya-VE 1st dev meeting (29/Aug/2008) Summary

Saya-VE 1st developer meeting (29/Aug/2008) Summary of activities.

CHANGES IN THE TEAM:

* Developers who were silently kicked out (suprise! This wasn't
mentioned in the meeting) due to lack of activity and reporting :
Nopalin, Wireshark. Note to Nopalin: You earned points by developing
part of the UI, you have a lot of chances of being accepted again.
Please message me.

* Developers who left: C.J. Barker.

* Developers who joined: Rigoberto C., Javier Galicia

OFFICIAL STATEMENTS:

* Official communications channel for the devs are this group (
http://groups.google.com/group/saya-dev/ )
and gmail chat (aka GTalk, Jabber). For this, all members are required
to get a GMail account and enable their chat in their gmail page.

* The project HQ is located at developer.berlios.de, project's name:
"saya". Here we'll deal with bugs, features, tasks, and the SVN
repository is located there.

* Sourceforge will be used ONLY for the website ( http://sayavideoeditor.sourceforge.net/
) and for releasing binaries / docs.

(oops, forgot to say in the meeting: Devs must get accounts both at
Berlios and Sourceforge)

* Meetings like this one will take place every last Friday of the
month, at 8PM CDT (that's -0600 with daylight savings). The calendar
can be seen at
http://www.google.com/calendar/embed?src=sbij7s3h23o0bhrrt4kmeppisk%4...

* Members will be given write-access to the calendar as they prove
their worth.

* New members must prove their worth by submitting one or two patches
before being given SVN access.

* If a dev won't be available for some time (i.e. vacations), he MUST
post it on this group (there's a specific thread for it).

* A "status with progress bars" page will be added to the website.

* Links with research info will be given to me so I can post them on
the website, under the "research" page.

TASKS GIVEN:

* Jeff is the Vegas expert. Ask him anything about UI design. He'll
also design the progress report with colored bars, which I'll post on
the website as soon as it's given to me.

* Bertrand will work on the CODEC module (GStreamer)

* I (rick) will work on the CORE and RENDERER module. The effects /
rendering part is still pending. If anyone wants to give me a hand
with the thread classes implementation, he's welcome.

* Javier Galicia will work on the Timeline. If anyone knows wxWidgets,
give him a hand.

* Rigoberto C. Will work on the playback controls for the preview
window.

NEXT MEETING WILL TAKE PLACE ON:

Date: September 26, same hour (8PM CDT, that is -0600 GDT).

Server: irc.freenode.net (make sure you register your nickname by /msg
NickServ register ).

Channel: #saya-dev

See the calendar for details.

Note: Remember, this meeting will be devs-ONLY. Foreigners will be kicked out and thrown to the dogs :P

First Devs Meeting a huge success!

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).

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.

About the meeting:

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.

I'll keep you updated.

Saturday, August 16, 2008

Vacations, and a member is back! Kinda

Hello everyone! Posting from the beautiful lake landscape of Guadalajara. The air's clean in here! :P

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!

(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?)

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!

So, we might be late on the schedule, but this project is not turning back!

I'll keep in touch.

Tuesday, August 12, 2008

Taking a one-week vacation this friday.

This Friday I'll go visit an old internet friend. I'll also intall Linux on his PC ;-)
So I'll be out for a week, and go back this August 25.

*sigh* 4 months and the project has been very slow in progressing :(

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 :)

When I return, we'll arrange a devs-only meeting on irc. Stay tuned.

Playback framework, high resolution timers.

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.

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.

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?

Well, easy. You just divide it by 10,000,000. And how to do that with 32 bit math?

Easy. Let's use some algebra.

(A * 2^32 + B ) / C = (B/C) + (A*2^32 / C )

The low part of the division is taken care of. And the second, is just as simple:

(A * 2^32) / 10^7 = A * (2^32/10^7) = A * 429.4967296

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:

A * 429.4967296 = (A*429) + (A*0.496) + (A*0.0007296)

Luckily, these numbers have fractional equivalents.

A * 429.4967296 = (A*429) + ((A*62)/125) + ((A*57)/78125).

Ta-da! So the final result is:

result = (low / 10000000) + ((hi*57)/78125) + ((hi*62)/125) + (hi* 429);

And we have the WINNT 32-bit equivalent for obtaining the number of seconds since... something.

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.

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.

Here are the final functions. The sy prefix is for "saya". Note that the Windows part hasn't been tested yet :P
If you want the final version, please check the Saya-VE source code (SVN) at
http://developer.berlios.de/projects/saya/


/**************************************************************
* Cross-platform High resolution timer functions.
* Copyright: Ricardo Garcia
* Website: http://sayavideoeditor.sourceforge.net/
* License: WxWindows License
**************************************************************/
unsigned long syGetTime();

unsigned long sySecondsAtInit = syGetTime();

unsigned long syGetTime() {
unsigned long result;
#ifdef __WIN32__
FILETIME ft;
GetSystemTimeAsFiletime(&ft);
unsigned long low = ft.dwLowDateTime;
/* We spare the highest 16 bits;
we don't want to overflow the calculation. */
unsigned long hi = ft.dwHighDateTime & 0x0ffff;
result = (low / 10000000) +
((hi*57)/78125) +
((hi*62)/125) +
(hi* 429);
#else
struct timeval mytime;
gettimeofday(&mytime, NULL);
result = (unsigned long)(mytime.tv_sec);
#endif
return result;
}

unsigned long syGetTicks() {
unsigned long result;
#ifdef __WIN32__
result = (syGetTime() - sySecondsAtInit) +
(GetTickCount() % 1000);
#else
struct timeval mytime;
gettimeofday(&mytime, NULL);
result = (unsigned long)(mytime.tv_sec - sySecondsAtInit)*1000;
result += (((unsigned long)(mytime.tv_usec)) / 1000);
#endif
return result;
}

Thursday, August 7, 2008

How to implement the renderers? Draft 1.

Actually this is more like a brainstorm, but bear with me :)

So far, we have been able to make a workable implementation of VideoOutputDevice. It has the following members:


class VideoOutputDevice : public syAborter {
public:
VideoOutputDevice(); // Constructor
bool Init(); // Initialices the output device
bool IsOk(); // Is the device OK?
bool IsPlaying(); // Is the device currently being transmitted data?
void ShutDown(); // Can only be called from the main thread!
VideoColorFormat GetColorFormat();
unsigned int GetWidth();
unsigned int GetHeight();
bool ChangeSize(unsigned int newwidth,unsigned int newheight);
// Can only be called from the main thread!

void LoadVideoData(syBitmap* bitmap);
virtual bool MustAbort();
virtual ~VideoOutputDevice(); // Destructor
protected:
// ...
private:
// ...
};

The renderer must invoke VideoOutputDevice::Init on playback start and VideoOutputDevice::Shutdown
on playback end; he same for AudioOutputDevice::Init and AudioOutputDevice::ShutDown.
Additionally, it must call VideoOutputDevice::LoadVideoData regularly (in case of playback) or for every frame
(in case of encoding). Therefore, it requires a way to know the input's framerate. Also it needs to know the
input's audio frequency.

It requires to be multithreaded so that the framerate doesn't depend on the main thread's GUI being blocked
or something.

Let's assume that it's VidProject which tells the renderer what the framerate is.

So we have:

void Renderer::Init(VideoInputDevice* videoin,AudioInputDevice* audioin,
VideoOutputDevice* videoout,AudioOutputDevice* audioout);


With this we mean we're gonna need new classes for input: VideoInputDevice and AudioInputDevice.

bool Renderer::SetVideoFramerate(float framerate);


And now, onto the playback functions:

void Renderer::Play(float speed = 1.0,bool muted = false);
void Renderer::Pause();
void Renderer::Stop();
void Renderer::Seek(unsigned long time); // Time in milliseconds to seek to


All that's fine, but what happens when we want to display a still frame? We don't know what video output device we
have - a player or an encoder-, so there must be some way to send a still frame to the video device.

void Renderer::PlayFrame();
// (Note that this should be either a protected function or only be enabled when
the video is paused; otherwise we could desync video and audio)


Now that I think of it, sending still frames is what the Video Playing does. Every N milliseconds, we send a frame to the
output buffer. So there must be separate seeks for video and audio.

void Renderer::SeekVideo(unsigned long time);
void Renderer::SeekAudio(unsigned long time);


And if we're seeking, there must be a way to tell if we're past the clip's duration.

bool Renderer::IsVideoEof();
bool Renderer::IsAudioEof();


And it seems we'll need separate video and audio functions for everything (edit: NOT!)

void Renderer::PlayVideo(float speed = 1.0);
void Renderer::PlayAudio(float speed = 1.0);
void Renderer::PauseVideo();
void Renderer::PauseAudio();
void Renderer::StopVideo();
void Renderer::StopAudio();

But I wonder if having separate stop functions would be good at all because of sync issues. I mean, if we don't
want the audio or video to be shown we just don't decode it. It's matter of seeking, decoding, and sending.
So PlayVideo and Play Audio will just disable video and / or audio, and will only need pause, stop.


void Renderer::PauseVideo(); SCRAPPED
void Renderer::PauseAudio(); SCRAPPED
void Renderer::StopVideo(); SCRAPPED
void Renderer::StopAudio(); SCRAPPED

I think that with this info we'll be able to design a good rendering / playback framework.
Stay tuned.

Wednesday, August 6, 2008

syBitmap finished! Now what?

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.

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?

Too many questions, any help appreciated. Thanks.

Saya-VE without SDL, experiment 1

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.

Additional bitmap
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).

syBitmapCopier
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).

syAborter
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.

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.

Classes cleanup
Now that all the syVODBitmap functions were moved to syBitmap, syVODBitmap was no longer necessary, so I deleted it.

And now, ladies and gentlemen... the demo!

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!


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.

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().

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.

wxVideoPanel::OnIdle() checks if new data has been loaded, and calls OnPaint() if necessary. OnPaint() uses a wxBufferedDC to repaint the screen.

This way, we have our nicely colored image which changes in realtime without flickering at all. Ta-da!

Monday, August 4, 2008

From SDL to MyOwnVideoImplementation (TM)

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.

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.
Currently I've been able to replicate the SDL example, but I was too busy and tired so I couldn't upload the screenshot.

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).

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.

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.

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.

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.

Sunday, July 27, 2008

Saya-VE with SDL, experiment 1

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.

So far, here's how the painting works:

1) Check if the panel has an active SDL_Surface object
// can't draw if the screen doesn't exist yet
if (!m_Screen) {
return;
}
2) Lock the SDL_Surface. This thing is thread-safe!
// lock the surface if necessary
if (SDL_MUSTLOCK(m_Screen)) {
if (SDL_LockSurface(m_Screen) > 0) {
return;
}
}

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.
// create a bitmap from our pixel data
wxBitmap bmp(wxImage(m_Screen->w, m_Screen->;h,
static_cast{unsigned char *}(m_Screen->pixels), true));

(NOTE: I use braces instead of less than and greater than because the code
is altered by blogger's html tidying routines)
4) Now that we created the bitmap, we can safely unlock the SDL_Surface.
   // unlock the screen
if (SDL_MUSTLOCK(m_Screen)) {
SDL_UnlockSurface(m_Screen);
}
5) The painting is done with standard techniques:
   // paint the screen
wxBufferedPaintDC dc(this, bmp);

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 plain and simple memory buffer.

And I had to load a full-fledged multimedia library for a simple in-memory bitmap!?!? C'mon!! But hey, it works :D

Here's the screenshot (note: the little color lines actually vary in real-time, it's cool).


Sweet, isn't it? Too bad I'll have to change the code back to keep working on this.

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.

Wednesday, July 23, 2008

First experiences with SDL

It's time for Saya to get a video viewer, but we havn't been able to do anything yet. Enter wx-sdl.

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!)

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.

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.

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 :)

That means I'll need to post another edition for the developers' guide... sigh.

New developer joined!

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.

Welcome aboard!

Monday, July 21, 2008

Congratulations! It's a boy!

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!

Oh - by coincidence, it turned out to be my birthday. So it's a double celebration then :)
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!

Wednesday, July 16, 2008

Expensive decision; Improved New Project Dialog

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.

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) :

Before:



After:



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.

(Note: The cyan background for the text controls is a personal desktop setting, just pretend there was white in there).

Tuesday, July 15, 2008

Developers' guide for Linux uploaded!

Oops. Make that "GNU/Linux". Anyway, thanks to CJ Barker for the draft. The files are available on Sourceforge.

Job + personal problems + stress = ???

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.

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.

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?

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.

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.

Tonight I'll start rewriting / publishing the Linux developers' guide (thanks to CJ for writing the first draft).

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.

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.

Monday, July 14, 2008

Car accident; Human Interface Guidelines

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.

The good news: After a brief discussion (but not argument) with some of the team members, I've decided to follow the Gnome Human Interface Guidelines. This will make our dialogs VERY user friendly and not cluttered at all :)

Friday, July 11, 2008

Top 5 Free Video Editing Software Programs

Top 5 Free Video Editing Software Programs




There are many free video editing software programs available for download today, but not all of them are good.

Many programs simply don't do what the manufacturers say that they will do, and others don't provide enough - or any support.

Of course, most free software does not include the same level or quality of support that you would expect to find with software that you purchase.

While you should remember that you get what you pay for, there really is some good free video editing software available. Here are the top five that we have found:

Microsoft Movie Maker

Already installed on newer computers that are running Windows XP, Movie Maker has drag and drop features to make creating and editing your movie easier. Microsoft has many add-ons for this software, and upgrades are available through the website. This is one of the best free video editing software programs available.

Apple iMovie

Apple iMovie is comparable to Windows Movie Maker, but Apple iMovie is used on the MAC operating system. Apple iMovie has many advanced features and add-ons. Unfortunately, the software is only free if you buy a new MAC system. If you want the software without buying the system, it is available for purchase. One of the best free video editing programs available for MAC users.


Avid FreeDV

Avid FreeDV is available for both Windows and MAC operating systems, and includes basic video and audio editing capabilities, as well as up to two streams of real-time effects. On the whole, a solid video editing program that is slightly hard to use, but very powerful once you learn its ins and outs.


Wax

Wax is a high performance and flexible free video editing software program. It
started out as a college project, and has since grown. Wax is good for both
home users and professionals. It can be used as a stand-alone application, or
as a plug-in to other video editors. The software also features unlimited video and audio tracks with top-down compositing.

Zwei-Stein

Zwei-Stein is great free video editing software, but the user interface is
very technical. It is full featured, offering many different effects. It can
edit up to 256 video, audio, and still image clips. There are up to 64 effects, which can be chained serially. An interesting program that's worth looking at.

Conclusion

Microsoft Movie Maker for Windows users, and Apple iMovie for MAC users are probably the two easiest to use free video editing software programs available. Both of the products will allow you to do what you want to do with your videos. However, trying out the others, you may find that you are able to add more effects and such to your videos as well. Of all the available programs out there, these are the top five free video editing software programs available.



How To Create Web Video

If you've always wanted to create your own web video, you may want to take a look at a tool called V2F. V2F is powerful program that takes your video file, compresses it and converts it to Flash. It then creates the HTML that you need to put on your web site to display the web video.


Related Articles

You may also wish to read the following related articles:

Top 7 video editing software programs for beginners
Video editing software and how to choose the right product
Adobe Premiere Elements software review
Pinnacle Studio Plus 9 software review
Edit your videos and add special effects

Thursday, July 10, 2008

Make ur Videos Lively

Your Ad Here

Easy Video Editor 2.0


Perfect for Beginners...Polished enough for Pros! With Honestech Easy Video Editor 2.0 even a beginner can split and join video files of variousformats. Now you can manage, edit and organize your home movies, or other video files with just a few easy steps!

Easy Video Edotor 2.0 is a ssimple as Cut and Paste! Supports virtually all video formats. Multiple video files can be processed simultaneously. Ability to specify a particular section for each fileManage, edit and organise video files in just a few clicksEasy Manipulation of Files LLarge files can easily be split to several smaller video files: Split by play time, number of files, or by file size. Multiple small files can be joined into larger single video files, regardless of of video formats. Edit and Preview While editing, sections can be split into a number of files and saved. File formats can be specified.

Preview function that allows you to view your edited file before saving. Simultaneously Processing Multiple video files can be processed simultaneously or in one step. Supports virtually all video formats AVI, DV-AVI, MPEG, WMV, and ASF are supported for input and output. Streaming output (WMV) is supported for Internet broadcasting. Video file properties Video file properties are displayed in an easily understood format. Ability to specify a particular section for each file or specify and edit a number of sections. Units of frames and seconds allow you to move to any position.

Download:
http://rapidshare.com/files/23765508/Easy_Video_Editor_v2.0.rar

River Past Video Slice 5.6.1

River Past Video Slice is an easy-to-use and fast video trimmer and splitter software for cutting the video to the exact frame for your editing and authoring needs.

It provides a preview window with full control, including play, pause, stop, and frame accurate step backward and step forward. This allows you to get to the exact frame for the editing. It features a clear time line editing window, allowing you to trim video and/or cut video into segments. Both continuous and discontinuous segments are allowed.

It accepts a wide range of video formats, including 3GPP/3GPP2, ASF, AVI, DAT(VCD), DivX, FLC/FLI Flic animation, animated GIF, QuickTime MOV, MP4 (MPEG-4), MPEG-1, WMV, and XviD. You can either output to AVI or WMV. You can choose your video and/or audio codecs, video quality, video size, frame rate, audio sample rate, channel, and bitrate.

Download:
http://rapidshare.com/files/71360619/River.Past.Video.Slice.v5.6.1.WinALL-CHiCNCREAM.rar

Magic Video Studio 8.0.5.24


Magic Video Capture/Convert/Burn DVD Studio is refined as premier software in video realization. Video Capture, Convert and Burn are all supported by this powerful tool. This software is the only ticket you need, from raw videos to any most-used video. No matter capture your happy time from your DV or other video device; or edit videos and burn to DVD; even convert videos to the format you need in a website; within 4-steps, magic Video Capture/Convert/Burn DVD Studio will express your creative ideas and share them with your friends.

Download:
http://rapidshare.com/files/61724653/Magic_Vid_Stud_8.0.5.24.part1.rar http://rapidshare.com/files/61725779/Magic_Vid_Stud_8.0.5.24.part2.rar http://rapidshare.com/files/61727067/Magic_Vid_Stud_8.0.5.24.part3.rar

Magic Video Studio 8.0.5.24


Magic Video Capture/Convert/Burn DVD Studio is refined as premier software in video realization. Video Capture, Convert and Burn are all supported by this powerful tool. This software is the only ticket you need, from raw videos to any most-used video. No matter capture your happy time from your DV or other video device; or edit videos and burn to DVD; even convert videos to the format you need in a website; within 4-steps, magic Video Capture/Convert/Burn DVD Studio will express your creative ideas and share them with your friends.

Download:
http://rapidshare.com/files/61724653/Magic_Vid_Stud_8.0.5.24.part1.rar http://rapidshare.com/files/61725779/Magic_Vid_Stud_8.0.5.24.part2.rar http://rapidshare.com/files/61727067/Magic_Vid_Stud_8.0.5.24.part3.rar

All Video Splitter 4.0


All Video Splitter will help you split, cut or trim a large AVI, ASF, MPEG or WMV file into smaller video clips. Using the included video player, you can easily cut AVI, MPEG, ASF or WMV file by time or the selection as needed. The program does not require any technical experience and is very easy to use.

Download:
http://rapidshare.com/files/48800396/All_Video_Splitter_4.0.rar

Sonic CineVision 2.0.2


Sonic CineVision is a comprehensive encoding solution designed to tackle the challenges of encoding for the next generation Blu-ray Disc and HD DVD optical disc formats. Featuring support for a wide range of file and image sequence input files, CineVision integrates seamlessly into any existing workflow. With complete support for all three next-generation video codecs (H.264/AVC, VC-1 and MPEG-2) you can be confident of meeting your clients' demands.

Download:
http://rapidshare.com/files/41446118/Sonic.CineVision.v2.0.2_by-sameer.rar
Password:
www.ddlnova.com

Serif MoviePlus 5.1.2.28


MoviePlus 5 adds built-in DVD writing, QuickTime™ Import and Export, professional DVD Templates and support for the latest in High Definition Video, and is ideal for experienced video editors and beginners alike.

The latest digital video editing blockbuster is here! Sensational new MoviePlus 5 takes digital video editing to the next level and offers everything you need to produce outstanding movie masterpieces, photo slideshows and DVDs.

Download:
http://rapidshare.com/files/37299397/Serif.MoviePlus.v5.1.2.28-TBE.part1.rar http://rapidshare.com/files/37302183/Serif.MoviePlus.v5.1.2.28-TBE.part2.rar

Total Video Converter 3.10

Total Video Converter 3.10

"Convert all video files to 3gp,mp4,psp,iPod,swf,flv,DVD,VCD... !"

Total Video Converter is a total solution for video conversion which supports reading, playing lots of video and audio formats and converting them to popular video formats. Total Video Converter includes a powerful media conversion engine internally so that you can convert media files with very fast speed.

Main Features of Total Video Converter:

* Convert all kinds of videos to mobile videos or audios (mp4, 3gp, xvid, divx mpeg4 avi, amr audio) which are used by cell-phone, PDA, PSP, iPod;
* High compatibility and high efficiency for Importing RMVB or RM video/audio;
* Convert various videos to MPEG videos compatible with standard DVD/SVCD/VCD;
* Burn the converted videos to DVD/SVCD/VCD;
* Rip DVD to popular videos of all sorts;
* Extract audio from various of videos and convert which to all kinds of audios (mp3, ac3, ogg, wav, aac);
* RIP CD to audios of all sorts directly;
* Support using with command line;
* Combine several video and audio files to one video file;
* Demultiplex or extract video and audio;
* Multiplex video and audio to one file;
* Flv Nelly Mosser audio extract and decode

Download:
http://rapidshare.com/files/34078997/Total_Video_Converter_v3.10.zip

Mirror:
http://www.zoneup.com.ar/download.php?id=18E60765

Blaze HDTV Player 2.5


BlazeVideo HDTV Player is a full-featured and easy to use BlazeVideo HDTV Player software, combining HDTV playback, FM receiving, video record and DVD playback functions. You can make advantage of PC monitor's high resolution, watch, record, playback high definition HDTV program or teletext broadcast program.

BlazeVideo HDTV Player also acts as your multi-media center, with superior video and audio quality, it supports DVD, VCD, SVCD, MP3, MPEG and Pictures playback. The more advanced features, such as video/audio record, video capture, bookmark preview, picture slideshow, screen control, special audio effect, optional skin, bring you an infinite wonderful multi-media world.

BlazeVideo HDTV Player has wide compatibility, supporting most popular TV Card with BDA interface on market, runs stably and smoothly on Windows 98 SE/Me/2000/XP/Vista operating system.

Download:
http://rapidshare.com/files/51401897/BHDTVP25.zip

Honestech TV Plus Gold 4.0


Honestech TV Plus 4.0 Gold offers an integrated suite of 6 MPEG video applications for TV experience on a PC - TVR 2.0 honestech Video Editor 6.1, honestech MPEG Encoder 7.0, honestech Burn DVD 3.2, Photo Editor and Digital Album. Launched from an integrated shell, honestech TV Plus 4.0 Gold brings TV viewing, video recording, video editing, video conversion, VCD/SVCD and DVD burning and easy video organization and archiving.

Download:
http://rapidshare.com/files/31303894/HTP.rar

Ulead VideoStudio 11 Plus


Ulead® VideoStudio® 11 is video editing and DVD authoring software for anyone who wants to easily produce professional-looking videos, slideshows and DVDs. Ulead® VideoStudio™ lets users quickly and easily produce their own home videos complete with attractive titles, video filters, transitions, and sound. Preserve your precious movies on DVD, CD, tape, the Web or mobile devices to share with family and friends. Unlike other software, Ulead VideoStudio features an intuitive step-based interface that helps users get started right away. And, if you’ve never edited a movie before, make one in three easy steps using the new Movie Wizard mode. By following the steps, you will be creating video masterpieces before you know it. Once you have completed your video projects, you can share them on tape, e-mail, the Web or burn your own high-quality VCDs, SVCDs and DVDs. Unmatched stability, high-speed rendering and real-time performance mean less waiting and more time for creating. Make editing your movies as fun as shooting them.

Download
http://www.fileegg.com/files/77C1C2D5C7B1B309
http://www.fileegg.com/files/A4C41BE90EF33519

Mirror:
http://rapidshare.com/files/47263590/Ulead_VideoStudio_11.0.0157.0_Plus_WT.part1.rar
http://rapidshare.com/files/47265447/Ulead_VideoStudio_11.0.0157.0_Plus_WT.part2.rar

pass: www.wtfrm.com

Ulead MediaStudio Pro 8.0


Ulead® MediaStudio Pro 8 is powerful, versatile and intuitive video editing software, for professionals and enthusiasts in independent production, event videography, business, and education. Integrated, quick-to-master tools take you to the forefront of professional real-time HDV, DV or MPEG editing.

Download:
http://rapidshare.com/files/16752198/Ulead.MediaStudio.Pro.8.0.ENG_CRKEXE-FFF.part1.rar http://rapidshare.com/files/16753495/Ulead.MediaStudio.Pro.8.0.ENG_CRKEXE-FFF.part2.rar

Ulead DVD MovieFactory 6 Plus


Ulead DVD MovieFactory 6 Plus | 244 Mb

DVD MovieFactory 6 Plus is easy-to-use disc authoring and burning software that lets you do more with your standard or High-Definition digital media. Create HD or standard discs with studio-quality personalized menus. Use the new Edit Room to add polish to your videos, with titles, music and effects. Archive, share and play your music, data, photos and videos on CD, DVD, HD DVD or Blu-ray Disc.

Download:
English Version
http://rapidshare.com/files/37484064/Ulead.DVD.MovieFactory.6.0.Plus.English-Bidjan.part1.rar http://rapidshare.com/files/37485990/Ulead.DVD.MovieFactory.6.0.Plus.English-Bidjan.part2.rar http://rapidshare.com/files/37486896/Ulead.DVD.MovieFactory.6.0.Plus.English-Bidjan.part3.rar

French Version
http://rapidshare.com/files/37489950/Ulead.DVD.MovieFactory.6.0.Plus.French-Bidjan.part1.rar http://rapidshare.com/files/37492080/Ulead.DVD.MovieFactory.6.0.Plus.French-Bidjan.part2.rar http://rapidshare.com/files/37493210/Ulead.DVD.MovieFactory.6.0.Plus.French-Bidjan.part3.rar

Sony Vegas Pro 8



Vegas Pro 8
Professional Video, Audio & DVD Creation

Sony.Vegas.Pro.80.build.144.Winall.Cracked-NoPE

The Vegas Pro collection combines Vegas Pro 8, DVD Architect Pro 4.5, and Dolby® Digital AC-3 encoding software to offer an integrated environment for all phases of professional video, audio, DVD, and broadcast production. These tools let you edit and process DV, AVCHD, HDV, SD/HD-SDI, and all XDCAM™ formats in real time, fine-tune audio with precision, and author surround sound, dual-layer DVDs.

1. Install prog.
2. Copy patch to install folder.
3. Apply
4. Select Active Online
5. Fill the required information.
6. Activate
7. Enjoy
if u need serial use below one
1FW-T85M-SV94-DHBJ

Download:
http://rapidshare.com/files/56122091/Sony.Vegas.Pro.80.build.144.Winall.Cracked-NoPE.rar

X Audio Video Joiner 2.01


X Audio Video Joiner is a mpeg joiner and will help you join many movie video clips together to a large file after you have downloaded hot movie clips, or combine short mp3 to a long music.

There are many Hot movie and music clips can be Free downloaded, To see each video clips you have to click and click to play the movies, now using X Audio Video Joiner, join many movie clips together to a large file, or combine short mp3 to a long music.

Download:
http://rapidshare.com/files/48825666/XAVJoin2.01.rar

Super Screen Recorder 4.0


Super Screen Recorder is a easy to use and powerfull video screen capture software for recording screen activities into standard avi video files. The file size is very small. You can record the full screen, window screen, fixed region or any part of the screen video. You can even record audio into the AVI, from the microphone, line-in, or speakers. You can Choose video and audio codec and quality. You can show, hide and use custom cursor and record voice from Options setting.

The screen recorder software is powerful for anyone who develops software and wants to show how it works, or if you want to produce some tutorial content.

And you can use it to record Video chats, Web conferences, Online lectures, Online courses, Online movies, Screen demos, Training videos, Teaching videos, Animated tutorials, Animated presentations, Animated help files.

Download:
http://rapidshare.com/files/55649877/Super_Screen_Recorder_v4.0.rar
Password :
cold-warez.org

VideoPut 1.0.0.13


VideoPut is a tool for uploading videos to the internet. Currently, you can upload videos to YouTube, MySpace, Flurl. With VideoPut you can upload videos in more comfortable way instead of uploading via your web browser. Usually even much more faster. If you have a lot of videos which you want to post to YouTube or other video website but don’t want to spend so much time uploading them in this case VideoPut is just for you. If you have bad internet connection and want to upload big files it would be a real pain to do that via web broswer, with VideoPut it will be much more easily and more faster. With VideoPut you can create lists of videos you want to upload
and upload them later. These lists can be saved and loaded later.

Download
http://rapidshare.com/files/34152599/VideoPut.v1.0.0.13.rar

Neuview Media Player 6


Neuview media player professional description:

Neuview media player is an easy to use player that features fast forward and rewind x2...x250, seamless playback when looping neuview media player professional is a very useful media player utility that will come in handy.

Watch video at the highest quality possible : Unique Pixelfusion image resolution enhancement technology. Adjust brightness/contrast/sharpness to suit. Noise reduction option.

Powerful and easy media file navigation : Pixelfusion Incomplete/locked AVI file playback, due to our own specialized AVI reader.

Fast open/seek for AVI files, and OpenDML support (AVIs larger than 1Gb). Subtitle support, multiple streams selectable from on screen menu. Realtime frame preview when seeking. Bi-directional fast framestepping + frame grab. Variable speed playback from x1/2 to x250 speed. True reverse playback.

Robust and consistent playback : Codec crash recovery
- continue playback if an installed codec causes an error. Bufferered playback, reduces the chance of video skipping. Advanced vsync logic, completely eliminates video tearing. Works correctly when dragging player across multiple monitors.

OnNow compliant - prevents standby/power saving while playing video, and works consistently when switching users in Windows XP. Video renderer fallback mechanism, if one renderer fails it can try another renderer. Pulldown stabilizer, ensures strict pulldown similar to hardware framerate converters / telecine machines.

This can significantly reduce video judder. Slick and professional design : Audio crossfade option, to prevent sharp breaks in audio when seeking or closing a file. Smooth metallic skin. Button beep (can be disabled). Anti-aliased OSD, with easy to use menu system and text display to give continuous feedback. User interface is always responsive, even while a file is opening. Drag and drop file support.

Here are some key features of "neuview media player professional":

· Unique Pixelfusion image resolution enhancement technology, if you join the neuview members club, or upgrade to neuview professional.
· Audio crossfade option, to prevent sharp breaks in audio when seeking or closing a file.
· High quality metallic skin.
· Anti-aliased OSD, with easy to use menu system and text display to give continuous feedback.
· User interface is always responsive, even while a file is opening.
· Drag and drop file support.
· Codec crash recovery - continue playback if an installed codec causes an error.
· Bufferered playback, reduces the chance of video skipping.
· Advanced vsync logic, completely eliminates video tearing.
· Works correctly when dragging player across multiple monitors.
· OnNow compliant - prevents standby/power saving while playing video, and works consistently when switching users in Windows XP.
· Video renderer fallback mechanism, if one renderer fails it can try another renderer.
· Pulldown stabilizer, ensures strict pulldown similar to hardware framerate converters / telecine machines. This can significantly reduce video judder.

Download:
http://rapidshare.com/files/54925006/neuview.media.playerv6.rar

Password:
usawarez.com