One mutex short

05.Jul.2005

GStreamer rocks in terms of design, but this an uncharted territory yet. It seems I’m slowly moving forward, but along the way I bump all the time on strange issues and (perhaps?) bugs. I decided to skip them right now and not waste time on things I that can be (temporarily) driven around. Ronald gives a helping hand, but I can’t bug him all the time ;)

I did some “proof-of-concepts” recently and now I’m wrapping that into a decent libGdv code. It looks like I managed to achieve a nice, not-a-single-frame-dropped timeline interface. Actually it’s somewhat better than the Totem thing in terms of playback:

  • If you do a short play/pause/play sequence, it doesn’t “skip” anything. Totem tends to skip a few frames of video (or some audio) to re-synchronize the playback. This is so even for the interleaved frame-based codecs like DV or MJPEG.
  • It supports a cool seeking with preview (paused mode). That’s very smooth. You can move the slider (or anything for that purpose) and the video is dynamically updated. It works so fast that you can (by moving the slider at the proper rate) “play” the movie/composition/timeline. In Totem 1.0.3 that I have here that’s not possible (the clip display is updated only when you start the movie).
  • Playback is buffered – not only on the file-reading side but also on the display side. The pipeline can process things ahead of the playback.

All this comes at the cost of a certain start/stop latency. Play to pause is instant. But pause to play has a small latency (around 1/5th of a second). That’s noticable. It’s partially my implementation, and partially GStreamer itself. Anyways, I think that for a video editor that’s acceptable.

Note: It’s a shame but the SoC photo gallery triggers the infamous nvidia bug on my box (it happens very rarely on my machine). Perhaps something can be done about that? I suppose I’m not the only one that suffers.

11 Comments

You have Render extension enabled ?

Joys of using closed source drivers.

Yes, I have render extension enabled. I don’t have composite though. I think render is required to have “direct rendering”. Without dr there is no decent acceleration. And without the acceleration it’s too slugish (for me) to work with the desktop.

Zdzichu: The open-source nv driver is too slow. Actually, I want to buy a G550 Matrox card and use the open-source MGA driver that AFAIK is one of the best accelerated drivers for X (as long as you do only 2D). I blame the day I invested in nvidia.

I saw your comment on my blog about mono and gstreamer-based video editing. What you’re doing is extremely valuable, and I’d be happy to try out the application and help however I can. You are a perfect candidate for this type of project – a coder who’s actually familiar with editing software. There’s very few such people around.

I can totally understand starting with an imovie-style program before trying to move onto something more complicated. Keeping things simple will be important in this early stage when gstreamer is still evolving and maturing.

For my own part, I’m going to be working on coding a timeline widget that could be used in an editing application. I’m not a professional developer and I’m not a student, so it’s hard for me to dedicate a lot of time to coding, but I think this is a place where I can do some work that might be useful.

I look forward to seeing what you come up with, and good luck!

Hi Owen. I understand that you have an interest to assist in the development of DIVA. I am really looking forwards a good, free, cross-platform video editor, and this one seems to be it. As an experianced (though busy) developer, I think of assisting this project myself. You wrote you want to develop a timeline widget. Since this is a project for the mono environment, I understand you would probably be using GTK# for this mission. Am I correct?

Hi Michael. I would also like to assist as I can, however, development time might be a problem for me. I think I’ll drop some ideas and some pieces of code once things will start moving towards a product. For this I’ll be glad if you could post detaild development information, tasks list, architectural design ideas, code tarballs and so on, so I and others who would like to help could come in handy.

Keep up the great work. Itai.

Hello,

thanks for your encouraging comments. The thing is - DIVA is currently being worked on as a Google’s SoC assignment. The SoC requirements are, that till 1st September I have to work alone on the project. By that time I’m supposed to achieve a basic level of app usability, what I hope to make.

Due to this fact (of working alone) I’m not focusing much on documenting my work/etc. what obviously will be necessary at some point. You can take a loot at the SVN repository, but it’s unlikely you’ll get anything “working” right now ;) (examples are hard-codely dependent on the media outside of the SVN). But stay tuned - in the next week I hope to release a “technology preview” demo showing some cool mixing/playing/timeline constructing capabilities.

Though, the best “help” now would be to actually investigate/check/fix some GStreamer bugs I run into. Gstreamer is pretty well documented but DIVA is (will be) actually the first app to use the full potential of GST (the GST pipelines I have now are REALLY complex). The bugs/issues I’m talking about here are in the GStreamer opt scheduler - a kind of “blackbox” for me.

Another thing I need badly now - some sample NTSC material. I mean - some sample AVI DV-encoded files captured from the camera through the firewire. It would be cool if someone owning a mac (or windows) could send me this. I’m ready to provide FTP server for that (although I just need 20sec’s in two files, full resolution, NTSC format).

I know I can use transcode (or any other tool) to “create” these files, but I’d like some genuine NTSC stuff to test some colorspace code, etc.

About the timeline thing you’re writing Owen - I can’t promise I’ll use it. I suppose the timeline will be strictly integrated with the libGdv thing and the visual display is just the top of the ice berg (though I’m greatly focused on the HIG). You can see a mockup of my first idea here . I know this is totaly ugly, but it’s just an idea.

Good choice :) $ lspci | grep 02:00 02:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G550 AGP (rev 01)

Anyway, 3D on this card is sufficient to play Quake3 even. It’s only downside is cost - about 500 PLN :(

About problems with gst scheduler - did you look at gstreamer 0.10. IIRC there are no schedulers in 0.10, as everything is threaded.

I’ve seen some G550 on Allegro for a lower price… (150 - 300zl). I’ll get one as soon as I get some of the SoC money.

BTW, one important question - how is the TV out on G550 working under X? That’s very important for me, I often record some movie/DivX stuff to VHS. Solely for this purpose I keep an old PII 400 with an Ati All-in-Wonder Pro running Windows98… It would be good to get rid of it at last.

Please, please don’t use MDI for this. Other than that it looks great.

Yes, I realized MDI sucks after doing the mockup. It’s a pain most of the time unless you have two displays or a very large, high-res screen.

Sorry, comments are closed for this article.

back to top

Powered by Mephisto with a micro theme mod