A while back it was announced that Daily Motion, an online video site, had opened an OLPC channel for sharing videos encoded using Theora for playback on OLPC's.
The channel, http://olpc.dailymotion.com, contains theora videos aimed at the OLPC audience. What's nice is that the videos playback in Firefox 3.1 using the native Theora support and don't require a plugin, for example this video.
Looking at the Daily Motion page it seems they use the <object> element to playback the Ogg Theora file, which uses the internal decoder and player user interface. This is a nice result from the adding of support for direct loading of Ogg files that Robert worked on.
I made a tweak to tinyvid.tv yesterday to transcode youtube high definition videos if the HD version is available. This results in bigger videos and therefore stresses the performance of the video implementation in Firefox.
I'm not tweaking any parameters when transcoding so it's possible that I could produce a Theora file with better playback characteristics. In particular I don't have the bandwidth to stream a file of this size. Instead I have to wait until a large portion is downloaded before playing it back. But even then playback performance is terrible.
With the file fully buffered on my dual core multi-gigabyte, multi-gigahertz laptop the sound stutters and the playback is slow. Not a great experience.
I tried playback of the ogg file with the example player from liboggplay. The playback performance is exactly the same as within Firefox. No surprise there since I use liboggplay in the implementation.
It's not a limitation with libtheora as the playback using libtheora's example player is very good. Low CPU usage, full framerate, great sound. So it looks to me like it's either a liboggplay issue, or an issue with the way I'm using liboggplay. I've raised a trac ticket with the liboggplay developers to see if they can offer any advice.
I've also raised bug 474540 in the Mozilla bugtracking system to track the fix to apply for Firefox.
Non-HD videos play fine for me, it's when they get to about 720p that things fall apart. The fact that libtheora plays these well makes me confident that we can get the performance for these files much much better.
Rob Glidden posts that a draft of the open media stack video specification is now available for comment. The specification defines a video decoder and associated bitstream syntax for decoding and playing video streams. From the specification:
The OMS video compression specification is based on legacy royalty-free
technology and avoids the recently patented technology.
While this approach sacrifices the performance gains of recently patented
techniques, the OMS video compression specification includes innovations of
its own that at least partially compensate for these losses.
In addition, the OMS video compression specification takes advantage of
contemporary semiconductor technology both to avoid the patented technology
that was directed toward specific implementations, and to allow more
sophisticated processing.
Where appropriate, patenting the innovations associated with the OMS video
compression specification will provide a defensive portfolio of IPR to help
maintain OMS as a mainstream royalty-free compression solution.
The specification can be downloaded here.
I've updated the Not a HAppS Tutorial cookbook with an example of how to handle file uploads using file input types in forms.
Next step is to take a look at how sessions and session data is handled.
A long time ago I took a look at HAppS, a Haskell web application framework.
I recently got the excellent book Real World Haskell and have been working through the book. I wanted something to explore while doing this so I revisited HAppS to play around with web programming in Haskell.
There's some documentation out there on HAppS, compared to last time I looked at it. Some pointers:
I found these very useful resources to learn about HAppS.
I'm documenting what I learn as I go, writing Not a HAppS Tutorial, but a cookbook of examples doing small things as I learnt them.
Not a HAppS Tutorial is hosted on a wiki written in HAppS called Gitit. It's a nice piece of work and it also proved very useful in learning HAppS, looking at the code for a working piece of software.