Bluish Coder

Programming Languages, Martials Arts and Computers. The Weblog of Chris Double.

Posts tagged “mozilla”

117 posts

Contributing to Servo

Servo is a web browser engine written in the Rust programming language. It is being developed by Mozilla. Servo is open source and the project is developed on github. I was looking for a small project to do some Rust programming and Servo being written in Rust seemed likely to have tasks that were small enough to do in my... more →

Firefox Media Source Extensions Update

This is an update on some recent work on the Media Source Extensions API in Firefox. There has been a lot of work done on MSE and the underlying media framework by Gecko developers and this update just covers some of the telemetry and exposed debug data that I've been involved with implementing. # Telemetry Mozilla has a telemetry system... more →

Decentralized Websites with ZeroNet

ZeroNet is a new project that aims to deliver a decentralized web. It uses a combination of bittorrent, a custom file server and a web based user interface to do this and manages to provide a pretty useable experience. Users run a ZeroNet node and do their web browsing via the local proxy it provides. Website addresses are public keys,... more →

Update on Tor on Firefox Proof of Concept

Yesterday I wrote about Tor on Firefox OS. Further testing showed an issue when switching networks - a common thing to happen when carrying a mobile device. The iptables rule I was using didn't exclude the tor process itself from having traffic redirected. When a network switch occurred tor would attempt to reestablish connections and this would fail. A fix... more →

Using Tor with Firefox OS

Update - Please read my followup post for some additional information and updated steps on building and installing tor on Firefox OS. Please read the disclaimer at the end of this article. This is a proof of concept. It's a manual process and you shouldn't depend on it. Make sure you understand what you are doing. I'm a fan of... more →

Dual Booting Android and Firefox OS on the Nexus 5

I've gone through periods of using a Firefox OS phone as my main device but I've usually fallen back to Android due to needing to use some Android only programs and I don't like carrying two phones around. Today I decided to investigate how to get dual boot Android with custom Firefox OS builds. Thankfully it was actually pretty easy.... more →

Firefox Development on NixOS

Now that I've got NixOS installed I needed a way to build and make changes to Firefox and Firefox OS. This post goes through the approach I've taken to work on the Firefox codebase. In a later post I'll build on this to do Firefox OS development. Building Firefox isn't difficult as NixOS has definitions for standard Firefox builds to... more →

Preventing heartbleed bugs with safe programming languages

The Heartbleed bug in OpenSSL has resulted in a fair amount of damage across the internet. The bug itself was quite simple and is a textbook case for why programming in unsafe languages like C can be problematic. As an experiment to see if a safer systems programming language could have prevented the bug I tried rewriting the problematic function... more →

HTML Media support in Firefox

Some time ago I wrote a dev-media post outlining the media formats we support and requesting discussion on future formats. This post summarizes the results of that and changes that have occurred since then. In general Mozilla is trying to limit the proliferation of media formats on the web. One reason for doing this is to make it easier for... more →

Progress Towards Media Source Extensions in Firefox

Update 2014-05-12: Matthew Gregan has a more recent post on Media Source Extensions support in Firefox Nightly. There is a W3C editors draft for Media Source Extensions that provides a way for web applications to generate media streams for playback from JavaScript. This allows a number of new use cases on the web. A couple of examples might be: more →

Phantom Types in Rust

Update 2013-08-16, I've updated the first example based on feedback from the hacker news, /r/rust, and /r/programming threads. I attended an overview of how the Servo browser engine, written in the Rust programming language, implements the task of laying out of elements on a web page. Patrick Walton gave the talk and highlighted some of the implementation idioms in Servo.... more →

Linking and calling Rust functions from C

At a recent functional programming meetup I was discussing with a colleague about how nice it would be to be able to use Rust in Gecko. This made me curious if it was possible to implement libraries in Rust and call them from C. After the meeting I asked in #rust and got pointed to some projects that showed the... more →

Ranged integer types and bounds checking

There's a discussion going on in the Rust mailing list about ranged integer types and whether they're useful for safety. Some of the points raised have been about the performance costs of dynamic bounds checks and the overhead of code for static bounds checks. I thought I'd write a post with my experiences with overfow checking in Gecko and with... more →

Social Engineering Attempt Warning

This morning when I checked my email I got a nice email from my server hosting provider titled "Root password reset". That's not usually a good sign when you haven't done any password resets recently. The email was a service request response from the provider asking for confirmation to reset the root account on my server. I responded that this... more →

Backing up Gmail messages with offlineimap

A while back I realised I had a ton of email archived on Gmail which I would be sad to lose if I lost access to my Google account or couldn't access the internet for some reason. I also wanted a backup in case I decided to migrate away from Gmail to use another service. The approach I took was... more →

Running Firefox OS on Nexus S

Update: 2013-05-07: Minor changes to deal with new and rebased patches. Last year I posted about how to build and run B2G on the Nexus S. Much has changed since then and this post attempts to provide up to date instructions on building Firefox OS and installing the latest Gaia version. I wrote 'attempts' because the support for the Nexus... more →

Safer handling of C memory in ATS

In previous ATS posts I've written about how ATS can make using C functions safer by detecting violations of the C API's requirements at compile time. This post is a walkthrough of a simple example which involves a C api that copies data from a buffer of memory to one allocated by the caller. I'll start with an initial attempt... more →

My mozilla-central git clone is stopping

For quite a while I've been maintaining a git mirror of the mercurial mozilla-central repository. My mirror has the history from the mercurial repository but they both lack the original CVS history as this was not converted when the change was made to use mercurial. Recently a new git mirror containing the project history, including CVS, has become available in... more →

Visiting the Pitcairn Island Petroglyphs

The night before my last day on Pitcairn Island I was asked what areas of the island I hadn't seen that I'd like to before I left. I mentioned "Down Rope" where the petroglyphs can be seen. The petroglyphs are markings at the base of a rockface at an enclosed beach. The markings are thought to be made by pre-european... more →

Building Inferno OS for Android Phones

Updated 2014-12-29 - I've moved the patch files to github and provided updated build instructions there. Other than those build instruction updates most of this post is still valid. Inferno is a small operating system that can be built to run on Host operating systems as a user process or natively on bare hardware. Inferno uses ideas from the Plan... more →

H.264/AAC/MP3 decoding support for Boot To Gecko

Bug 714408 landed on mozilla-central today. This adds the ability to decode video and audio that uses the H.264, AAC and MP3 codecs on B2G. This support is exposed through the standard HTML video and audio elements. If you're running B2G built from the latest mozilla-central then the following video MP4 video should work: Sorry, your browser doesn't support HTML... more →

Pitcairn Island and Slow Internet

While I was visiting Pitcairn Island I got to experience what the internet is like for areas where fast broadband speeds aren't available. I wrote about the internet setup on the island in my post about leaving for the island. I found while I was there that many modern websites just failed to work. I was unable to use Gmail's... more →

Back from Pitcairn Island

I'm back from my Pitcairn Island trip. Originally I was going to be on the island itself for two days but I ended up staying there for almost three weeks. It was a fantastic trip. The island was beautiful and the people living there were very welcoming and friendly. Pitcairn Travel did a great job organising each step of the... more →

Travelling to Pitcairn Island

From Sunday 15th April through to 29th April I'll be mostly offline as I take some leave to visit Pitcairn Island, one of the remotest inhabited islands with a population of about 50 people. My first stop is flying from New Zealand to Tahiti where I spend a couple of days, then I fly to Mangareva on the 17th to... more →

Building and Running Boot To Gecko on the Nexus S

Update 2012-03-29 - The Nexus S port has moved to an ICS base system and the existing Gingerbread base no longer works correctly. I’ve adjusted the instructions below to build the ICS based system. It just involves using ‘config-nexuss-ics’ instead of ‘config-nexus’. Last year Mozilla announced the Boot to Gecko project - a mobile OS based on web technologies. Recently... more →

Performing Compatible Updates of Mozilla Central Git Forks

Earlier this year I posted about how I created my git mirror of the mozilla-central mercurial repository. I've been keeping a fork on github updated regularly since then that a number of people have started using. Users of my mirror have wanted to be able to keep up to date with the mercurial mozilla-central repository themselves, or add updates from... more →

WDCNZ HTML Media Presentation

Last month I went down to Wellington to give a joint talk at the WDCNZ conference. The topic was "HTML Media: Where we are and where we need to go". The talk was shared between Nigel Parker, Mobile and Developer Evangelist for Microsoft, and myself. The conference was excellent with some great speakers and talks. Nigel and I covered using... more →

Temporal Media Fragment Support in Firefox

The W3C has a Media Fragments Working Group whose mission is to specify temporal and media fragments in the Web using URI's. The draft specification goes through in detail how these fragments work. I recently became a member of the working group and I've been working on adding support for the temporal dimension portion of the specification to Firefox. In... more →

My Git Workflow for Mozilla Development

Since my post on converting mozilla-central to git I've had a few requests about what my git workflow is for Mozilla Development. When working on bugs I'll create a git branch for development. The workflow in this branch looks like: git fetch origin git checkout -b bug/123456 origin/master ...make changes... git commit ...make more changes... git commit more →

New Wave Audio Backend Landed

Yesterday I landed bug 635649 on mozilla-central. This is a refactoring of the wave backend for the HTML audio element. The initial work on this bug was done by Matthew Gregan with me completing the patch. Prior to this landing the wave backend implemented the HTML audio API itself, sharing very little implementation details with the other audio backends. This... more →

A Quick Look at the Rust Programming Language

The Rust Programming Language is a systems programming language being developed by Mozilla. It was announced last year and has seen quite a bit of development since then. I've only been lightly following the development over the past year but recently decided to spend a bit more time looking at it. The following is a look at the language and... more →

Git Conversion of Mozilla Central

The Mozilla repository for Firefox development, mozilla-central, is a mercurial repository. I prefer using git for version control so I usually do my Firefox development using a git mirror of the mozilla-central repository. To convert the repository into git I used hg-fast-export. This has worked well over the last couple of years. Unfortunately I've noticed that my git mirror and... more →

WebM Decoder in Flash using Alchemy

Ralph Hauwert has been posting on twitter about work he's done on getting WebM decoding to work in Flash by compiling the libvpx source code using Adobe's Alchemy technology. Alchemy is a research project that allows compilation of C and C++ libraries into code that runs on the ActionScript virtual machine used by Flash. Ralph originally tweeted: more →

Firefox video scaling during YCbCr to RGB conversion

When I changed to using the Chromium YCbCr color conversion code I didn't use the code that scales the video during the conversion as there was no infrastructure in place to do this at the time. What this meant was we'd do the YCbCr conversion on the original image size and then later, during rendering, scale this using the browser's... more →

A Short Introduction to Bitcoin - A Peer to Peer Cryptocurrency

I recently added the ability to donate to TinyVid using bitcoins. The bitcoin website describes bitcoin as 'a peer-to-peer network based digital currency'. Bitcoins are a 'virtual' currency. There are no physical coins involved. It's very similar to virtual currency in online games where people outside the game trade it for physical money. The endpoints of a bitcoin transaction are... more →

Changes to Firefox Video Implementation

I mentioned in my previous post about the Firefox video implementation that some changes were going to be made to make our implementation more spec compliant. These have now landed and will be in Firefox 4. The relevant bugs are: more →

Experimental Playback Statistics for HTML Video and Audio

Now that HTML video is getting more usage there have been requests for statistics during playback so performance can be measured from JavaScript. This has come up a few times on the WHATWG mailing list. I raised bug 580531 to add some additional data to media and video DOM elements to provide this information. The patch in that bug adds... more →

Safer C Code Using ATS

When developing the original Ogg backend for Firefox we had to integrate and use a number of C libraries. Over the months after landing a number of bugs were raised for various issues in the backend. A fair number of these were the result of common coding errors. Things like not checking return values of the C API calls and... more →

VP8, WebM and Firefox

For all the details on the recent announcing of VP8 video code support in Firefox, the WebM container and playing YouTube videos with Firefox, read Firefox, YouTube and WebM on hacks.mozilla.org. More links: more →

Building Firefox with WebM support

All the patches to get Firefox built with WebM support have now been attached to their relevant bugs. These patches aren't ready for review yet but can be used to get a build that has the functionality of the special Firefox WebM builds. To build use Mozilla Central as the base with the patches from the following bugs applied: more →

HTML 5 Video Seeking and Redirects

Bug 560806 has landed on trunk. Seeking and duration works for videos hosted on some servers where it didn't before. Firefox's implementation of HTML 5 video allows seeking in unbuffered portions of the video as long as the server that hosts the video supports byte range requests. Firefox needs to know in advance if it can seek the video so... more →

Changes to Firefox YCbCr Color Conversion Code

I posted previously about colour conversion libraries. To replace the liboggplay conversion routines we decided to try the Chromium libraries. Bug 551277 adds the Chromium code and integrates it with the new video layer painting code. The Chromium code uses a C fallback if MMX is not available but this is done at compile time. I modified it do runtime... more →

Vorbis Player implemented in Pure

After writing the preforking echo server example in Pure I wanted to try something a bit more complex. I've written Ogg players in various languages before so I decided to do one in Pure to compare. Here's some of the ones I've written in the past: more →

HTML 5 Video Element for Internet Explorer

Cristian Adam has been working on a plugin for Internet Explorer that implements the HTML 5 video element. He has released a new version of the Xiph Ogg Codecs with a technical preview of the <video> element for IE. A screencast of it working is available at Cristian's website. more →

Comparing Colour Space Conversion Libraries

The libtheora api gives YCbCr data as the result of a decoded frame. The current method of displaying data through Firefox requires it to be converted to RGBA. The conversion of YCbCr to RGBA turns out to be a bottleneck. In current Firefox builds we use the conversion routines provided by liboggplay. The Ogg backend is being modified to reduce... more →

On2 Stockholders Approve Google Merger

Last year Google announced that they were going to acquire On2 Technologies. This is the company that produced (and open sourced) the VP3 video codec that Theora is based on. Google wrote on their blog: more →

Moving away from blogger

Blogger are deprecating their ftp publishing support and are recommending users to switch to their custom domain feature where they host the blog files for you. I prefer to keep my posts on my own server so will be switching weblog systems in the near future. This will break existing links to Atom feeds for specific labels (eg. the feed... more →

LCA 2010 talk about implementing HTML 5 video in Firefox

Last month I attended linux.conf.au 2010 and gave a talk on the different paths we took implementing HTML 5 video in Firefox. I wrote the talk using Eric Meyer's S5 Slide system with the video demos embedded or linked from the slides themselves. You can view the slides here: http://www.bluishcoder.co.nz/lca2010. To see the videos you'll need to be running a... more →

Playing Ogg files with audio and video in sync

My last post in this series had Vorbis audio playing but with Theora video out of sync. This post will go through an approach to keeping the video in sync with the audio. To get video in sync with the audio we need a timer incrementing from when we start playback. We can't use the system clock for this as... more →

Decoding Vorbis files with libvorbis

Decoding Vorbis streams require a very similar approach to that used when decoding Theora streams. The public interface to the libvorbis library is very similar to that used by libtheora. Unfortunately the libvorbis documentation doesn't contain an API reference that I could find so I'm following the approached used by the example programs. Assuming we have already obtained an ogg_packet,... more →

Decoding Theora files using libtheora

My last post covered read Ogg files using libogg. The resulting program didn't do much but it covered the basic steps needed to get an ogg_packet which we need to decode the data in the stream. The thing step I want to cover is decoding Theora streams using libtheora. In the previous post I stored a count of the number... more →

Reading Ogg files using libogg

Reading data from an Ogg file is relatively simple. The file format is well documented in RFC 3533. I showed how to read the format using JavaScript in a previous post. For C and C++ programs it's easier to use the xiph.org libraries. There are libraries for decoding specific formats (libvorbis, libtheora) and there is a library for reading data... more →

Reading Ogg files with JavaScript

On tinyvid.tv I do quite a bit of server side reading of Ogg files to get things like duration and bitrate information when serving information about the media. I wondered if it would be possible to do this sort of thing using JavaScript running in the browser. The format of the Ogg container is defined in RFC 3533. The difficulty... more →

Video for Everybody - HTML 5 video fallback

Kroc Camen has made available Video for Everybody, an HTML snippet that uses HTML 5 video if it's available in the browser, otherwise falling back to different video playback options. What's interesting about 'Video for Everybody' is it doesn't use scripting at all. It uses the fallback mechanism built into HTML. The video playback mechanism used, in order of availability... more →

Third Party Comment Engines

I've been playing around with different commenting engines on tinyvid. Currently I use Intense Debate. An example of a video using this comment system is here. I like this service a lot. You can sign on with OpenId, the moderation tools are good and it seems to be generally reliable. Intense Debate has support for plugins that anyone can write.... more →

Theora encoder improvements

A lot of work has been going on improving the Theora video encoder. Given a better encoder we end up with better quality Theora videos without the need to change the decoder in existing players. The project name for the Theora encoder improvements is 'Thusnelda'. Periodic updates have been released by Xiph showing the progress of the new encoder. The... more →

Simple Nanojit Example

I've been playing around with Nanojit, thinking about using it in a toy project of mine. Nanojit is a library for generating machine code with backends for x86 and ARM. It's used by Tamarin and TraceMonkey for their just in time compilers. The Mozilla documentation contains some documentation which gives an overview of what's there: more →

Another tinyvid.tv update

I've made some more changes and fixes to tinyvid.tv since my last update. I've updated to the latest Factor version, picking up some bug fixes and improvements to the libraries that I use. The look and feel of the site has a new logo and banner thanks to Hans Schmucker. There have been some great contributions and bug reports in... more →

The Linux Link Tech Show on HTML 5 Audio and Video

Yesterday I was a guest on The Linux Link Tech Show talking about Firefox and HTML 5 audio/video support. It was a great show with lots of interesting questions and discussions about video in the browser, the choice of Theora for the video codec, and different ways video can be used on the web. The show is archived and you... more →

oggplayer - A simple Ogg player using liboggplay

To help track down performance issues, and fix some a/v synchronisation bugs, I wrote a simple Ogg player in C++ using the same libraries and a similar approach to what I use in the Firefox video implementation. The source to 'oggplayer' is available on github. I've setup the repository to facilitate my experimenting with different approaches and different library versions.... more →

Very nice web technology demo

This 'glimpse of future web technologies', all in one document is pretty nifty. Lots of different web stuff in there, including rotated videos, fancy CSS, and DFXP captions for videos. Thanks to Sam Ruby for pointing to Philippe Le Hegaret's work. more →

Replacing video controls using a bookmarklet

Update: Chris Blizzard has a neat screencast showing the bookmarklet and player replacement in action. There's been some interesting demo's of <video> usage and manipulation discussed in the TinyVid Feedback comments section. One user, hansschmucker, has done some nice demonstrations of what <video> can offer. For example, this bookmarklet can take a TinyVid video and replace the player using the... more →

tinyvid.tv updates

I did some minor tweaks to tinyvid.tv recently. I added the ability to add comments to video pages, and add feedback on the site. This uses Intense Debate, a third party commenting engine. On the video front I added a page to return a random video from those available. The video pages themselves show the duration, download progress and current... more →

User Authentication - OpenID and Facebook

I'm still looking at the different options for tinyid to handle registration and authentication of users. My recent change added logging in using your Facebook account using Facebook Connect. Another option I'm considering is OpenID. There's a good blog post comparing the Facebook vs the OpenID stack. The same weblog has a post on using OpenID in a popup without... more →

Fallback options for HTML5 video

The HTML5 <video> element only works on a few, often bleeding edge, browsers. For tinyvid I've been only supporting this subset of browsers. Recently I put in support for a simple fallback option for other browsers. In browsers that don't support <video> the element is ignored. The contents of the element are still processed however. This means any HTML elements... more →

Daily Motion, OLPC and Theora

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

liboggplay playback performance

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

Open Media Stack Video Specification

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: more →

Firefogg - an extension to encode and upload ogg videos

I got an email today about a great new extension that is being worked on to help with sites supporting Ogg Theora videos. Firefogg is a Firefox extension to allow selecting a video, encoding it into Ogg format, and uploading it to a server. Sites supporting this extension can receive videos transcoded to Ogg with all the work to do... more →

SRT Subtitles with HTML5 video

j^, the author of many cool open video related projects (including the Theora transcoder ffmpeg2theora) has written a jQuery based library to extract and show subtitles while a <video> is being played. The jquery.srt page has details and a demo. Embedding code looks like: <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.srt.js"></script> more →

Changes to git mirror of Firefox repository

I've made changes to the way I manage the git repository holding the import of the Firefox source. Since the bulk of the HTML 5 <video> implementation is now in the main Firefox source I no longer maintain the video branch. I'll be removing that and the Firefox mirror soon. The main Mozilla repositories have been split into two now.... more →

Video, Audio and Cross Domain Usage

Update 19/Nov/2008: This is currently under discussion in the WHATWG and the W3C bug has been marked "won't fix". For now, cross domain usage is fine. This is a heads up for a change to the HTML5 media elements that may break existing usage. If you use <video> or <audio> then you may need to make changes to the way... more →

tinyvid.tv updates

I did some minor tweaks to tinyvid.tv recently. I added the ability to add comments to video pages, and add feedback on the site. This uses Intense Debate, a third party commenting engine. On the video front I added a page to return a random video from those available. The video pages themselves show the duration, download progress and current... more →

HTML5 video and audio spec changes

Some changes have occurred in the HTML 5 specification related to video and audio (the media portion of the spec). These are nicely outlined on the WHATWG blog. After my blog post about cross domain restriction of audio and video there was a fairly lengthy discussion on the WHATWG mailing list about whether this should be done. The WHATWG blog... more →

Recent video updates

Over the last couple of weeks some fixes for video bugs have landed that should improve the playing experience. In particular playback and sound should work on Pulse Audio based Linux distributions. A quick summary of the changes are: more →

Video Element Update

Some updates to the video element have landed and are now in the Firefox nightly builds. Bug 449159 was landed which refactors the Ogg backend to improve stability and add seeking support. Some of the changes include: more →

HTML 5 Video Element Examples

If you're looking for some sites to play <video> and <audio> using the new elements, I've listed some below. Please add any you know of in the comments: more →

New Zealand Open Source Awards

The New Zealand Open Source Awards were held in Wellington on Wednesday night. Congratulations to Robert O'Callahan who was nominated as a finalist for the 'Open Source Contributor' category, and won the award on the night! Also winning an award was Radio New Zealand for 'Open Source use in Government'. Radio New Zealand are doing some great work distributing their... more →

Theora Video Backend for Firefox Landed

It was announced at the Firefix Plus summit today that Firefox will include native Theora and Vorbis support for the HTML 5 media elements. So <video> and <audio> will support those codecs built into Firefox itself. Chris Blizzard posted about this earlier. The backend has been committed to the main Mozilla source code and is enabled by default. You can... more →

Video Bling

Robert O'Callahan has been posting about his 'bling branch' which contains some very nice effects. See his blog posts for more detail: more →

The Video and Audio element patch has landed

The patches in bug 382267 to add support for the WHATWG video and audio elements have been applied to the Firefox mozilla-central repository. This means you can get the source for Firefox and build it with support for <video> and <audio> by using the configure flag '--enable-media'. Currently the media support is disabled by default so it won't appear in... more →

Firefox HTML5 video and audio update

A week or so ago I updated the linux build of the gstreamer based HTML5 video implemention with some fixes that make it work nicely with the public sites using <video>. This includes wikimedia and metavid. Video's on those sites with that build show a much better user experience than previous builds. Two new backends are in progress by other... more →

Firefox SVG Animation Patch

I wanted to try out an SVG Animation example that someone sent me but Firefox currently doesn't have support for this. Bug 216462 contains a patch with a work in progress implementation of SVG Animation so I looked into trying it out. Unfortunately it has suffered some bitrot recently so I made the changes to get it to apply on... more →

Seaside with XUL

Pavel Krivanek posted to the Seaside mailing list about generating XUL from Seaside. XUL is the user interface markup language that Firefox and applications based on XULRunner use for the user interface. Seaside is a continuation based web framework written in Smalltalk. Using this combination they get native look and feel for the platform for Smalltalk applications. more →

HTML5 Video on the N810

The Nokia Internet Tablet's use GStreamer for the multimedia functionality. Chris Blizzard built Mozilla on the Nokia N810 with the GStreamer video backend patch applied. He has a video on his weblog showing the N810 playing video inside Mozilla. Nice! If you have a <video> enabled browser you'll see the video here too. more →

Firefox HTML5 Video with GStreamer

I wrote earlier about refactoring the HTML5 video patch to allow different backends. I've now added a patch for GStreamer support to bug 422540. To build a Firefox with this support, get the latest trunk CVS source. Apply the patch from bug 382267, followed by the patch from bug 422540. Build with the --enable-gstreamer configure option. Or follow these steps... more →

Building the Firefox video element backends

The git repository has multiple branches which means a little more git usage is needed to get at the Ogg (and soon, GStreamer) backends. When you clone or pull from the repository you'll automatically pick up the commits for the new branches. You can see these branches with 'git branch -r': $ git clone git://double.co.nz/git/video.git $ cd video $ git... more →

Refactoring of Firefox HTML video element patch

I've making some changes to the patch implementing the HTML <video> element for Firefox. Previously the patch attached to the bug contained the implementation of the video element and a Theora backend implemented using liboggplay. This required pulling in a large amount of third party library code making it more difficult to get reviews for the patch and to get... more →

Linux support for video element patch updated

I've updated the git repository to improve the support for Linux. I've uploaded a new build, which can be obtained from the test page or downloaded here. This is the first build using the ALSA backend that I posted about previously. The sound playback is much improved over previous Linux builds, and so is the a/v sync - as long... more →

Video Element Progress

I thought it might be time for an update on the progress of the <video> element support for Firefox. Unfortunately on Christmas Eve my Macbook hard drive crashed losing everything on it. Fortunately I push my repository to a remote server regularly. Until I get a new drive and the Macbook set up again I'm using another laptop dual booting... more →

Building Firefox from the git repository

I've made a small change to the git repository containing the Firefox source that I've been maintaining. I've removed the 'configure' file from the git repository. This will need to be regenerated before you can build the source using autoconf2.13. The steps to build Firefox from git become something like: git clone git://double.co.nz/git/firefox.git cd firefox/mozilla ...create .mozconfig file... autoconf2.13 make... more →

Video Element and Ogg Theora

There has been a lot of attention lately around the WHATWG <video> specification recommending Theora and Vorbis as baseline codecs. The issue seems to have gained some attention since the position paper Nokia submitted to the W3C Video on the Web workshop which made it clear they didn't want Ogg included. The reference to Theora and Vorbis has since been... more →

Opera has a new Video enabled build

Opera is making a call for video on the web, releasing an experimental build with video support modelled on the latest WHATWG specification. Their post has some examples to try out and instructions on how to use the <video> element. Their examples work quite well in the latest video enabled build of Firefox too. Thanks to help from Robert O'Callahan... more →

Theora needs an MSVC compatible inline assembler expert

The Theora project needs someone knowledgeable in the inline assembler syntax used in the Microsoft Visual C++ toolset. Theora has some assembler portions written using the GNU assembler syntax. Some way of having these same optimizations working when building the library with the Microsoft toolset would be very useful. more →

SVG Video Demo

Update 2007-10-01: Patch 5 for the video element support can run this SVG demo. Binaries and SVG source available here. Vladimir Vukicevic ported a Silverlight demo to SVG. The photos.svg file runs in Firefox and you can move, resize and rotate the photo's using a nice interface. It demonstrates that the types of things that Silverlight is being used for... more →

Firefox Video Element Patch Version 5

Version 5 of the patch to add Video element support to Firefox is up. This version rewrites a lot of the code to match the pseudocode in the WHATWG specification. As well as bug fixes it contains support for the 'autoplay' attribute and loads the first frame of the video when the element is first displayed. This version also runs... more →

Git, Binary Files and Cherry Picking Patches

Steve Dekorte has some things he dislikes about git. This post is how I work around these issues in my own git repositories. Git has a heuristic for detecting binary files. You can force other file types to be binary by adding a .gitattributes file to your repository. This file contains a list of glob patterns, followed by attributes to... more →

Dave Winer Visits Mozilla

Dave Winer visited Mozilla yesterday to give a talk about RSS during the all hands meetings. I've been a reader of Dave's blog for awhile and was previously a Radio Userland user for a couple of years so it was good to meet him in person. He outlined his views on the 'river of news' format of aggregating feeds that... more →

Firefox Video Element Patch Version 4

Version 4 of the Firefox Video Element Patch is up. It has a number of bug fixes and contains changes suggested by the reviewers. Before applying the patch to the Mozilla Firefox CVS trunk, you should first apply the third party modules patch. Another option is to just use the git repository I've been maintaining. One major change is I'm... more →

Mozilla based browser for the N800

The N800 is a small tablet type device produced by Nokia. It has a 320Mhz ARM CPU, 128MB of RAM and 256MB of flash storage. While the latter sounds small it also has two card slots allowing plugging in lots of extra storage. The display is a nice 800x480 and about 4 inches. It has both 802.11b/g and Bluetooth 2.0.... more →

Building a Video element enabled Firefox

I've had a few comments and emails about problems encountered building Firefox with the video element patch, or from the git repository. Once you've applied the patch, or retrieved the git repository, you'll need to add a .mozconfig file in the 'mozilla' directory. The Mozilla Build Documentation has the details on what can go in this file. A simple .mozconfig... more →

Patch for Video element support in Firefox

I've uploaded a patch which is the first pass at implementing support for the <video> element in Firefox. The patch is attached to bug 382267. There are quite a few known issues with the patch at the moment, and I'm working through them, but I've made it available at this time so others can at least try it out. A... more →

Viewing Firefox CVS changes via gitweb

Following on from my previous post about using git to track the Firefox CVS repository, I've installed 'gitweb' to allow browsing the repository. The URL to access it is: http://www.double.co.nz/cgi-bin/gitweb.cgi This is quite a nice way to see diffs for what has changed recently in the CVS tree for the time period between when my git import script runs. Unfortunately... more →

Using Git to track the Firefox CVS repository

Git is a distributed version control system that was written for managing the Linux kernel. I've been using it recently to make it easier to manage my code changes against a CVS repository for which I don't have write access. The CVS repository is the codebase Firefox. Usually I'd check out a copy of the CVS repository, make my local... more →

HTML 5 Video Javascript Wrapper

The Metavid blog has a post about the HTML 5 Video element and how it can be supported in browsers that don't have native support for <video>. When their Javascript code, mv_embed, is included in a page it goes through the DOM and replaces all <video> elements with whatever playback method the client browser supports. If it supports HTML 5... more →

Support for HTML Video element in Firefox

The WHATWG HTML 5 working draft has a specification for a 'video' element. I briefly mentioned in a previous post that I was working on implementing this tag natively in Firefox. The intent is to display Ogg Theora encoded video without needing any plugins, similar to the recent demonstration of Theora playback using a video element by Opera. Opera have... more →

Offline Zimbra with Firefox

In my new job at Mozilla I've been working on adding offline support to Zimbra as a proof of concept of the new Firefox offline capabilities. Zimbra is heavily ajax based and gives a good idea of how difficult or easy it is to convert an existing application to use the offline support. For this first cut I made Zimbra... more →

More on Firefox Offline Web App Support

Robert O'Callahan posts with more details on the offline support in Firefox. In a later post I'll go into more technical detail on how I used the features to add the offline support to Zimbra, along with the issues I faced. At the moment I'm working on adding the ability to edit drafts and have it updated on the server... more →

Another Offline Web Application Example

Mark Finkle has put together a simple demonstration application that uses the offline APIs in Firefox, including source. In other offline application news, John Resig has written about how the offline/online notifications work. more →