|
|
|
I couldn't get to sleep, so I got up again and did some hacking. I've been working on reviving our Flumotion RTSP code the last few weeks in my spare time. This is code that was written more than a year ago, at the time when cell phone streaming was supposedly the Next Big Thing. I felt it was a waste to leave that code (which is in beta quality) to rot in our private repository.
The actual impulse for getting back to this is the work we've sponsored with Fluendo on RTP specs for Vorbis and Theora. They're close to finished, and the payloaders and depayloaders have already been implemented in GStreamer.
Anyway, back to the point - I hacked in a quick UI not too different from the http-streamer UI tabs:

And that screenshot is the actual result of starting up the Flumotion stream, actually clicking on the URL and having Totem start up and start playing this stream. No cheating besides the hacks in the code :)
Some notes:
- As you can see on the right, there's also an HTTP streamer running. It serves the same stream as the RTSP streamer, but (obviously) muxed. Producers and encoders can be reused for both types of streaming.
- Totem and Flumotion need HEAD of core, base and good for various tweaks and fixes to a bunch of elements to get RTSP running reliably.
- The RTSP code is not public yet, but will be soon after some cleanup and stabilizing of the RTP specs.
- GStreamer isn't yet sending any signs of life to the RTSP server - no RTCP, or RTSP channel pings. Wim is planning to work on that, so the stream keeps running for half a minute (until the RTCP server times the client out)
- The page says there are two clients connected, even though it's just me - in RTSP-land each substream is separate, and thus right now watching audio and video is counted as two clients. To be cleaned up in the future.
- The mime type is a hard-coded lie - again, there are two substreams, and not muxed, so it should probably show audio/x-vorbis, video/x-theora
- The code can still handle H263, AMR, MPEG-4, ... and still works with cell phones. Too bad there are no phones out there with Theora/Vorbis support (yet ?)
Anyways - let's see if this puts me to sleep ...
I couldn't get to sleep, so I got up again and did some hacking. I've been working on reviving our Flumotion RTSP code the last few weeks in my spare...
I find it highly ironic that Ronald still complains about DVD menu support in GStreamer. I remember going out on a limb discussing with the release team the state of DVD playback at the end of the 0.8 cycle when Ronald did a lot of work to get it somewhat working. In retrospect I think that was a huge mistake - DVD support was only in its infancy, it wasn't very synchronized, it only ever worked on one out of five DVD's. Live and learn. Also, it was at the same time as Ronald was moving to the US for his studies, and it wasn't clear at the time if he was going to maintain and improve support. It was both the release team's and my worry that we would be announcing support for DVD playback in Totem with no clear maintenance path. Today it is obvious that this worry was justified - Ronald never touched DVD code in GStreamer since then.
I still have a huge amount of respect for Ronald as a coder. But not finishing a feature you introduced in, 0.8, and not porting it to 0.10, and then complaining about the team you have left not cleaning up your dirty work, takes chutzpah. Meanwhile, my hope is on Tim Philipp-Müller (author of Thoggen and GStreamer bugmaster) and Martin Soto (author of seamless) to work on the open-but-patent-encumbered version of DVD playback.
We'd love to have Ronald back on the team, picking up the thread where he left it in 0.8, and finish DVD support in the "free-but-not-free" version of the GStreamer stack. He'd have a much easier time doing it too, compared to the monstrous 0.8 hacks we needed to get it even somewhat working. As I'm writing this Jan is showing off his DVD player to Christian. It's already heaps better than the 0.8 DVD support was - it follows menu items immediately, without hanging on still frames, or taking five seconds to know that it has entered a new path on the DVD. It's not ready yet for release but it's progressing at a steady pace now that we're keeping Jan on-task. I'm sure a hacker like Ronald would have no problems implementing the necessary support for menu's in the 0.10 version of GStreamer. How's about it, Ronald ? Do us all a favour, yourself included, and finish the work you started before you left to the US.
I find it highly ironic that Ronald still complains about DVD menu support in GStreamer. I remember going out on a limb discussing with the release team the state of...
Couldn't sleep so I got up and hacked for an hour.
I added Darcs support to moap. Considering this was my first ever experience with darcs and this being sleepy-level code, not bad for an hour of hacking. I'd appreciate someone well-versed in the intricacies of Darcs to give this a look-over and tell me if I'm not doing anything stupid yet. I'm not going to dist it by default until I get some verification from someone or, add the tests.
I picked Darcs because I'm going to hack on Buildbot again in the near future and, as Brian Warner, buildbot author, seems to also use Buildbot as a way to learn about version control systems, I am forced to again learn a new one. The previous two were CVS and arch. And I learnt arch solely to, you guessed it, hack on Buildbot. (And the guy was nice enough to set up syncing mirrors to arch and CVS from Darcs. Total migration!)
Anyone up for either contributing a simple unit test for this (like the tests for CVS and SVN right now) ? Or anyone up for adding git support ?
Nighty night.
Couldn't sleep so I got up and hacked for an hour. I added Darcs support to moap. Considering this was my first ever experience with darcs and this being sleepy-level...
By now we have three platforms we're managing - one internally for development, and two external ones. It gets a little tedious always typing the right commands to log in to them, and it gets a little dangerous because the hostnames are named relatively consistently across the platforms, and a terminal prompt only shows the first part. So, "myimportantserver" would exist in all three platforms, and it's just no fun at all to discover that you typed "reboot" in the wrong window.
Here's how I set up a gnome-terminal launch icon on my desktop for each platform:
- Create a new profile in gnome-terminal (Edit>Profiles, New)
- Give it the name of your platform/group of hosts, for example my.platform
- Edit the profile, go to the "Title and Command" tab, and select "Run a custom command instead of my shell"
- As the custom command,enter "ssh firsthost.my.platform"
- In the Colors tab, deactivate "Use colors from system theme"
- Pick a background color that will remind you of this platform
- Right-click on a panel, add a custom launcher
- Give it a name like "Terminal my.platform"
- As the command, use "gnome-terminal --window-with-profile=my.platform"
- Pick an icon (Would it not be nice to have nautilus's emblems for this ?)
Now, clicking the icon should give you:
- a terminal window
- with a login on that machine
- in a different color than your normal terminals, so you really know what platform you are on
Make sure you make log-ins very easy by using ssh keys, and using a desktop running under ssh-agent, so you can ssh-add your key once and then log in to these machines with a single click. You should make it easy to jump from this entry point host to the other hosts on your platform, by using authentication forwarding for this first host. This makes going to the next one as easy as typing "ssh nexthost"
Now, for the dessert: open a new tab in this terminal and see what happens!
By now we have three platforms we're managing - one internally for development, and two external ones. It gets a little tedious always typing the right commands to log in...
This release has been sitting on my hard drive for the last week, waiting for me to find some time to finish it off and send it out.
I'm happy with this release because I finally got to hack on a feature that was in my sights for a while now - replacement of the prepare-ChangeLog.pl script. Not only because it is named terribly or because it is in perl, but also because I think this is a useful feature for us non-emacs users that should be correctly maintained and extended to support other VCS systems.
From the RELEASE notes:
In the days of yore, grandpa used to communicate his hacking results
to other greyed hackers using GNOME's prepare-ChangeLog.pl script.
But grandpa was a lazy typist so he named his copy cl.pl
And grandpa was a Subversion user, so he hacked in some ugly SVN support
in his copy of cl.pl.
And a friend of grandpa was a TLA user, so the friend hacked in some uglier
TLA support in their copy of cl.pl.
And grandpa was a sharer, so all grandpa's hacker friends in the old age
retirement home had a copy of cl.pl, either the one with or without TLA
support, depending on when they befriended grandpa.
And grandpa was a Perl hater, so he muttered in his beard every time he
had to look at the code.
And grandpa had Alzheimer's, so he never could remember to send patches
upstream.
But now grandpa has a grandson, who is still young and naive, and full of
energy, and he decided to carry on grandpa's work. And he implemented
moap changelog prepare, and all was well.
And he added "mcp" as an alias to "moap changelog prepare", in his .bashrc,
and "mcc" as an alias to "moap changelog checkin", and lo! did he go forth
and hack and communicate.
And the young hacker removed grandpa's old cl.pl script from his $HOME/bin
directory, printed the script, folded the papers into a bouquet of flowers
and put it on his grandfather's grave.
More info on the project page.
This release is also the first release to receive an outside patch - from none other than GStreamer's bug master, Tim Philipp-Müller. He earns eternal moap "first patch" bragging rights.
On my wish list: support for other VCS systems, and distro packagers packaging this and putting this in their distros.
This release has been sitting on my hard drive for the last week, waiting for me to find some time to finish it off and send it out. I'm happy...
« Previous Page — Next Page »
|