Archive for the 'Release' Category
Release 0.5.0b2: Duct tape
I am back from hiking 20 miles in two days down into the Haleakala volcano crater. I wish I could say I missed Internet access (I did try to check my email on Anna’s iPhone in a moment of weakness, but there was no service), but in reality it felt great to get out and explore the island.
This is another in a series of betas in which we’re focusing on fixing bugs. Here are the fixes that made it into this release:
- FIX: Scott updated the XBox360 controller keymap, mapping the white and black buttons to the two buttons above the triggers and made some other improvements and fixes. NOTE: You will have to remove your existing keymap.xml in ~/Library/Application Support/XBMC/UserData. As before, failure to do so may result in your having fairly unpleasant interactions with carnivorous dinosaurs.
- FIX: The screensaver kicked in after 10 seconds no matter what the time was set to.
- FIX: Our European friends will be happy to know that accented characters now show up correctly when browsing files and directories. Thanks to Roman for pointing me in the right direction. Total amount of time spent tracking this down including the time I invested last time (in which I gave up) was probably about 10 hours, so it feels really good to nail this one.
- FIX: Timezone selection has been removed, and we now use the OS X timezone. This fixes the DST problem people reported, and allows the timezone selection to be handled in a single place.
- FIX: Weather is fixed.
- FIX: Scripts are fixed (silly release building error).
- FIX: Red and blue were swapped in SSA subtitles.
- FIX: Allow selecting any available audio device as a passthrough device. This should enable people with external USB interfaces with digital output to use them. NOTE: You may have to reselect your audio output device if you’re doing passthrough.
- FIX: Much improved bold-ing and italic-ing thanks to jmarshall.
- FIX: Mediasources.xml and profiles and plugins were incorrectly read from and written to application bundle.
- FIX: Potential fix for the XBMC helper losing exclusive access to the Apple Remote (and thus holding down play putting the machine to sleep). Please test, and if you still run into the problem, let me know if you’re running in full-screen mode, windowed, or both, along with any other details that may help track the problem down.
As we all know, making a release is just another excuse to post yet another picture of Barkley, who turned three on Saturday. The release is available here as a torrent, or here as an HTTP download. Enjoy!

Release 0.5.0b1: Mo betta beta
I have been coerced into going camping for the next two days, up behind the volcano. It’s apparently freezing at night, full of sharp rocks, is reminiscent of Mars, and there’s always the chance of waking up in a pool of lava. Why anyone would voluntarily subject themselves to such abuse is really beyond me, but I agreed go before hearing many of the specifics.
So while I’m freezing my ass off and probably getting devoured by dinosaurs that have survived the last 65 millions years on a strict diet of hikers, I thought it would be only fair to leave you with a beta release of what we’ve been working on for the last month. This is, to quote Scott, the “throw out your XBox” release.
NOTE NOTE NOTE: You MUST delete your Keymap.xml file, and probably should delete your entire Application Support/XBMC folder before upgrading. If you don’t and then file a bug I will feed you to the dinos myself. This is also a beta and so does still have some glitches.
This release is based on very nearly the latest “linuxport” code, which means you have a month full of bugfixes and new goodies and hard work by the rest of the XBMC team. Our motley OS X crew have mainly been drinking tequila, but in between bouts of body shots, we had a bit of time to bring you some new stuff:

- NEW: Apple Remote support. This is a big one. There’s now a helper that runs and communicates with XBMC. Among other things, this allows you to use the Apple Remote to start XBMC, a highly requested feature. The code has also been rewritten to handle the buttons much faster, so you should notice none of the pesky delay that’s been present up until now. There are preferences for the Apple Remote in Settings -> System -> Apple Remote which let you specify three modes. Disable the Apple Remote support if you want to use a third party application (e.g. Remote Buddy, Sofa Control). Isaac has been working relentlessly with both companies to ensure that you have great behavior with those apps, and he is the one who did all the Apple Remote keymap programming. Very nice work! Standard mode is what is enabled by default, and is intended for those using, well, an standard Apple Remote. The other mode is Universal Remote, which I’ll explain in the next bullet item. The Always Running option instructs the helper to start on login and always run, so that you can use it to start XBMC. If you hit the menu button when in the home screen, XBMC will exit, and another press of the menu button starts it back up again, so it works just like Front Row but without sucking.
- NEW: Universal Remote support. This is totally awesome, and the brainchild of Cayce and Scott who are both Universal Remote-aholics. When I met them in person for the first time, they had each independently brought their universal remotes along to try to convince me that their model was the best. I cannot make this stuff up. Scott sports a Harmony 550, and Cayce has an URC-MX900. Cayce’s remote could definitely best Scott’s in a fight, but Scott’s remote is sexier. Anyway, they came up with this cool scheme that I coded in the XBMC helper to allow sequences of Apple Remote buttons to allow for many more commands than the standard Apple Remote could support, even with holding down buttons. Check out this page for details on the mappings and you should be able to program your Universal Remote. You can change the sequence delay time to work best with your specific remote. Thanks to Scott for testing the crap out of this with his Harmony, and really making sure it works well.
- NEW: XBox360 controller support. Rounding out our controller portfolio is the XBox 360 controller. Good for those MAME games, when we get them working. This controller worked with SDL, but the code was buggy and once the controller shut down, you were screwed. I moved the code into the XBMC helper and tweaked d4rk’s awesome event client stuff a bit to support what we needed with analog sticks. The controller will fall asleep and wake up fine, and you can use the big X button to start XBMC if it isn’t started. You’ll need these drivers, and you may want to replace one of the kexts with the one here since it fixes a bug when plugging and unplugging the USB receiver. Again, thanks to Scott who tirelessly worked away to create a keymap for this controller.
- NEW: SSA Subtitles. This was a oft-requested feature, especially by the infamous Bad Mr Frosty. Luckily for him, a new XBMC team member named Rudd integrated support for libass (used by mplayer). We took his code, started with the default libass, integrated some fixes and enhancements from mplayer, and enabled enca support (which can detect languages in subtitle streams using some cool techniques). Fontconfig support has also been enabled and so SSA subtitles should work perfectly now, except in the case of fonts embedded in MKV files, which Rudd is working on.
- NEW: Sleep displays and computer. Cayce added two killer features for this release. There are new options in Settings -> System -> Hardware that allow you to have XBMC turn off your monitor after a specified time, and also sleep your Mac after a specified time. Great stuff! Since the Apple Remote can wake the Mac from sleep, this ends up being really nice.
- NEW/FIX: Unified upscaling, fixed problems with interlacing. The initial software upscaling code was pretty hastily thrown together. I cleaned it up for this release and the software and hardware upscaling options are all available from the on screen video settings menu when viewing a video. This is nice because you can flip through the available settings to compare them. NOTE: There is a known issue with a single frame of solid green when moving from software to hardware modes, and vice versa. My OpenGL fu is weak. We also enabled a new algorithm available in ffmpeg called “sinc” which is supposedly quite good, but also very computationally expensive. A mini is not usually enough to use sinc upscaling, but feel free to give it a try.
- NEW: Skip to next/previous chapter in DVDs. If you’re watching a DVD, hitting up/down on the Apple Remote (or keyboard) skips by chapters.
- FIX: Shoutcast crashes. The guy working on the Windows port (charlydoes) fixed the memory corruption issue with Shoutcast streams, and they should now work perfectly. Awesome work!
- FIX: Skip to next/previous video doesn’t work. I’m pretty sure d4rk fixed this one.
- FIX: Subtitles look squashed in 720p/1080p. The infamous Jmarshall fixed this one. I’ll buy him a beer or five when we visit New Zealand.
- FIX: Add “Get Album Information” back to context menu when not in library mode. I was very sad when this option didn’t work anymore so I put it back in. It doesn’t save the information to the database, but it’s useful for reading an album review or getting a thumbnail.
- FIX: Navigation through menus with Apple Remote might leave you stuck. Navigation should work perfectly now in all skins.
Remember, this is a beta release, so there are likely still little issues lurking. Python is still known to be unstable, unfortunately. Seeking using the analog triggers is still a bit strange. Weather appears to be broken. We’ll likely be making a few more tweaks to the 360 keymap. Please post issues you have with the beta either here or on the XBMC forums, and help each other out. Hopefully we’ll make the final 0.5 release within a week or two, possible with a few more beta iterations.
In terms of controller options, we realize there are many more out there, but the three described above (Apple Remote, Universal Remote, and XBox 360 controller) are the only ones we will support or write code for, as we believe they provide a complete gamut of options, and frankly we’d rather work on getting PacMan to work than on getting every last controller to work.
The new release is available here as a torrent, or here by regular HTTP download.
And now, your moment of Barkley. Yes, he’s hoarding three raquetballs, which he believes will eventually hatch into little blue squeaky smurfs.
Release 0.1.3: Tasty Kibbles
This new release still only works on Leopard and Intel. No plans at all, present or future, to move to PPC or Tiger. (Note that I’m linking to another page with another big Leopard/Intel warning, and the new release is at the bottom of the page).
NOTE: You will almost definitely want to move Sources.xml aside and then whack the “Application Support/XBMC” folder, as lots of related things have changed, and it’s best to get a fresh start. If you report a problem, and I find that you didn’t start over from scratch before reporting it, I will be very upset with you.
- NEW: Fixed up the virtual keyboard. No more assertions, and you can type with a real keyboard (even backspace works). Since Enter is used to “hit” a virtual key, you will need to navigate to the Done key.
- NEW: Fullscreen support has been enhanced to support other-than-primary screens without setting environment variables (now that everyone’s figured out how to do that). I also renamed “desktop” mode “full screen” mode to clarify a bit. Some people will probably hate this. Others will love it. Can’t win ‘em all. Basically if you have multiple screens, and you scroll through the resolution settings, you’ll see multiple “full screen” settings, one for each screen. The thing about that resolution list that confuses me is that some are windowed modes (720p, 1080i), and some are intended to be full-screen video modes (where XBMC would actually set the mode for you). Right now, all you have to know is that the full screen modes labeled as such DON’T change the video mode, so you’ll do that in OS X, get it how you like it, and XBMC will use it.
- FIX: Updated the scrapers to the correct versions, you should now have much better luck scraping. I took all but the latest and best maintained TV scraper out of the release. Also, I made a network fix to avoid timeouts that probably would have otherwise occurred. I also tried to track down a library problem someone reported with multiple sources of which XBMC would allegedly forget all but one upon restart, but no luck reproducing the problem.
- FIX: The release now comes with a much better Keymap.xml file, which includes a mapping for the context menu (the C key). This sort of thing is why you want to whack the application support files.
- FIX: There was a serious race condition in some of the audio code (PortAudio specific) that could lead to a crash when playing videos.
- FIX: The RSS feed file was added back in, and reset to default to something a bit more interesting for Apple users.
- NEW: Some progress playing IFO/VOBs. I built some needed modules (e.g. MPEG2 decoder, dvdnav, etc.) and although I don’t own a single DVD I was able to get some VOB files to play. Sort of. If you’re still watching DVDs, isn’t it time you moved into the 21st century?
- FIX: A serious problem that prevented lots of audio streams from playing at all (and thus resulting in fast video), notably ones with strange sample rates (with strange being anything other than 48KHz/44KHz, I think).
- FIX: I applied the XBMC subtitles fix to the ffmpeg library, which means that one person who was complaining about ugly subtitles might be happier now. And buy me some beer.
- NEW: D4rk made some enhancements to the way we interact with SDL, to the effect that we no longer need a custom SDL build. He also got full-screen toggling working (the ‘\’ key). Very tasty.
- NEW: Shoutcast audio sources seems to work. YMMV. I was grooving to some rap earlier today that made me wish I hadn’t gotten it working.
- NEW: The SMB client is now included, although I haven’t done much with it. Lots of people wanted this one.
This release brought to you by our very own Barkley.

Release 0.1.2: Meep meep!
I’m actively working on support for the Apple Remote (and after that other remote control options), but we had quite a spectacularly good development over the weekend that I wanted to share earlier rather than later. It turns out that a fellow named Andreas Öman (bless his heart) made available an experimental patch to ffmpeg back in September 2007 that provides impressive speedups for multi-core decoding of H.264 content. We’ve applied it to the ffmpeg sources we’re using and the results are nothing short of stellar. The infamous 1080p Planet Earth encode plays back much better on a mini, without audio dropouts and with far fewer frames dropped. It’s not perfect, but it’s *much* better.
Additionally (and perhaps more importantly), all other 1080p content I tried played back virtually flawlessly on my Mac Mini 2.0 GHz. This includes Kill Bill Vol. I (tried the last third), a Lost episode at 1080p, and cullman even tried a crazy 5GB .ts/H.264 format Lost episode.
Whereas without the patch the CPU load is concentrated in a single core (with non-slice encoded H.264 content, at least), with the patch the load seems to be distributed much more evenly between cores. The author claims a speedup of 20-30%, which doesn’t sound like much, but it appears to push the envelope far enough to provide a much better experience.
So without further ado, give this new version a try and let us know how it works for you.
N.B. The author does mention a lack of support for the MBAFF subtype of H.264 encodings - which apparently isn’t used all that much - so it’s possible (but fairly unlikely) that content that played without the patch is now broken.
63 commentsRelease 0.1.1: Baby steps
This release is Intel/Leopard only.
Sorry it’s taken me so long to get this next release out; the weather here has been great, and the call of real life has been strong, with all of the nuances and commitments of paid work, dog walking, cooking, and socializing.
The new release can be found here. I’ve tried to focus on a few core areas:- Graphics quality: With the help of d4rk (him doing the hard stuff and me just filling in the bits and pieces), YUV to RGB conversion should now be perfect, both on low-end video hardware (GMA950) and higher end video hardware. In practical terms, this means blacks are really black, and whites are really white. No more washed out looking video. Next up is higher quality video upscaling.
- Also along these lines, I’ve improved the SDL video mode selection code to be a bit smarter about picking modes, and now I consistently get 1080p output from both my machines, whereas before I only got 1080i. I’m not sure whether to blame OS X or SDL.
- OS X experience: People running OS X applications expect certain things, and I’ve tried to move XBMC closer to those expectations. Notably, log files are written to /var/tmp, and user data and profiles are accessed at ~/Library/Application Support/XBMC. This means that you can upgrade by simply replacing the application, without worrying about overwriting files.
- N.B. For this release, before you overwrite the application, you may want to move your UserData folder and your guisettings.xml to ~/Library/Application Support/XBMC, and your Keymap.xml to ~/Library/Application Support/XBMC/UserData. Alternatively, you can simply let the first run of XBMC create reasonable defaults. This is what it should look like if you want to move things around:
- Similarly, I’ve tweaked a few of those reasonable defaults. Under OS X, thumbnails default to 512×512 pixels (thanks to Martin Blom for the tip), video resolution defaults to 720p, and audio settings have been subtly tweaked to help ensure people don’t get fast video and do get sound output when possible. (Downmixing has not been implemented!)
- Second Screen Support: If you’re running the second (or third, if you’re Al Gore) display to your HDTV, you’ll be happy to know that you can now run fullscreen to a display which is not the primary one. Unfortunately, you have to do it through setting some environment variables. Setting SDL_VIDEO_FULLSCREEN_DISPLAY=2 results in fullscreen video going to your second display. Also, if you set SDL_SINGLEDISPLAY=1, this means your primary display is not blanked, so you can see incoming email or whatever it is you do while XBMC is running. You’ll need to either start XBMC from the command line, or logout and then back in again having set those environment variables. I think.
- Bugfixes: A number of bugs have been fixed, both by myself and by the other XBMC team members. Playing consecutive videos after each other will work even if you haven’t stopped the first one. Thread safety issues have been addressed in background thumbnailing (solving various crashes). The first frame of video no longer displays before it’s ready.
- When adding sources, all mounted volumes will now be displayed for your convenience. This makes adding sources much easier.
- Videos with AAC audio should now play that audio.
A few other notes, unrelated to the release:
- I’ve retired my Xbox. That’s right, XBMC is solid enough on OS X that I packed up my loyal Xbox and carried it out to the garage. Not having it there will free up room and inspire me to work on getting MAME support in there.
- We’re looking for talented developers. Gamester17 wrote up a nice press release. If you’re interested in getting involved, please drop me an email, or come visit on IRC.
- We’re interested in keeping track of the Apple hardware purchases that have been made because of XBMC. We figure this might help keep us in good standing with Apple, and plus it’s cool to know. So if you’ve bought a piece of Apple hardware to run XBMC on, drop us a line. We’ll post statistics to the blog.
- Last, but not least, a big thank you to all who have donated. The money really helps us pay for the bandwidth, and bits of hardware to test with (i.e. controllers). We really appreciate it.
Oh, and for some reason RSS feeds seem to be broken in this release.
68 commentsRelease 0.1: Hundredths are for wimps
NOTE: This release is Leopard and Intel only.
Well, it rained straight through the weekend, so I got a chance to work for a few long stretches, interrupted only by kibble-hungry kitties and a tennis-ball obsessed pup. Is this a zoo or a House of Code?
Here are the changes that made it into this release (some of which were mentioned in the last post). If you’re really impatient, just drag XBMC over to your Applications folder and double click. If you’re lucky, it might actually work.
- The ffmpeg libraries have been updated to bleeding edge. For example, they incorporate some unusually unintelligible H.264 speedups (MMX assembly, anybody?) that were checked in yesterday. Most of the changes in the last week on that project have been removing compiler warnings, so hopefully living on the edge won’t be a bad thing.
- Video rendering should correctly track the FPS of the source video, as opposed to the last release, in which the frames per second jumped around between 50 and 60 occasionally.
- On-the-fly “resolution” switching. I put quotes in because it’s not actually changing the display resolution, just the size of the window. Access the feature via Settings -> Appearance -> Screen.
- Fullscreen support has been added. Video is displayed on the primary display, so those who want to use a secondary (or tertiary for Al Gore) display need to reconfigure their Display Settings for now. I’ll try to address this in a later release. If you set the environment variable SDL_SINGLEDISPLAY, it should only blank the primary display.
- Note that the video player resolution should always be set to “Best Available” (which it should be by default). Some mode switching works, but if you’re in full-screen mode and want to play video in windowed mode (or vice-versa) you’ll observe rendering glitches (for those who care, it’s because full-screen OpenGL contexts don’t work in windowed mode, and vice-versa). So please, unless you have a really good reason, just leave the video player settings at “Best Available”. I’m considering taking this option out of the OS X build, because I just don’t know any useful scenarios for it. Know of any? Let me know, but you’re going to have to be pretty convincing.
- The release is compiled in Release mode (fancy that) with some degree of optimization turned on.
- Subtitles should no longer cause an assertion (but rather will log an error). The problem seems to be that the converter is assuming a certain encoding for SRT files, and I can’t figure out (a) what the standard encoding is or (b) how to tell the encoding.
- I’ve constructed a standard OS X Application Bundle for XBMC. It’s not perfect, in that user preferences are still location inside the bundle (I’ll move them to ~/Library/Application Data/XBMC in the next release), but it does include all the dylibs, so installing MacPorts and playing command line games in the terminal should not be needed. You’ll need to move your sources.xml (and other preferences, if you’d like) into XBMC.app/Contents/Resources/XBMC/UserData. NOTE: If you have the XBMC_HOME environment variable set, it will prefer this environment. If you don’t set XBMC_HOME, it will use the environment from the application bundle.
- NOTE: There are a few regressions in this release. You may notice some video garbage when first starting a movie, and if you switch to GUI mode (with TAB), make sure you stop playing one video (the ‘x’ key) before starting another. Don’t say you weren’t warned.
The overall stability seems to be quite good. I’ve watched a decent amount of stuff with hardly any problems.
164 commentsRelease 0.0.7: Let there be Mini support!
A few changes in this release:
- Support for GMA950-based video hardware, like Mac Mini and some MacBooks. Until this point you’ve had to live vicariously through your larger-mac’d brethren. No longer. Scott kindly helped me out with a remote Screen Share session, and a few more OpenGL calls had to be changed to their ARB cousins.
- Multi-threaded decoding has been enabled in ffmpeg. This *may* provide a performance boost for H.264 and MPEG2 content. In practice, I haven’t noticed much difference, but feel free to prove me wrong.
- The postproc/swscale portions of ffmpeg have been hooked up.
- CPU ID has been partially written, you’ll at least see something on the home screen.
You can pick up the latest release here.
Oh, and my excuse for not getting this done sooner is shown below. We went whale (and dolphin) watching this weekend. Those humpback whales are some elusive bastards, and tended to jump out of the water right after my arm got tired holding the camera up to my eye. Jerks.
Shortest Release Cycle Ever: 0.0.6
OK, I figured out why DTS wasn’t working. I suppose it would help to actually build libDTS. Now passthrough works with both AC3 and DTS for me and Scott, who has a MacBook Pro.
The audio code isn’t perfect yet, but it’s now much more likely to work correctly, and of course, I’d love to hear how it works for you.
Pick up the 0.0.6 binary and also the libDCA binary. Put the latter in the system/players/dvdplayer directory. Yes, I know, it should update itself auto-magically, and tell stories to put your kids to sleep. One thing at a time.
18 commentsRelease 0.0.5: Better AC3 passthrough?
OK, my head is still spinning from all the CoreAudio reading and VLC/Portaudio source browsing I’ve been doing. I’ve made a few changes that seem to help out the passthrough situation for people with the combination analog/digital ports and AC3 audio streams. Check it out here.
Note: DTS is definitely broken, I need to look at this more.
No commentsRelease 0.0.4: Yummy!
Lots of good stuff in this release:
- Video thumbnails are auto-generated for stacked files.
- More OpenGL fixes for GMA950, it **might** work on Mac Mini and Mac Book now. If it doesn’t please paste a stack trace.
- Optimized, assembly-enabled version of ffmpeg now statically linked in, which means huge performance improvements.
- Subtitles appear to work for me better (although still haven’t fixed the assert).
- Fixed a few multi-threaded crashes, it played a Planet Earth last night the whole way without a single crash.
You can see in the picture that I dropped some frames, but this is the super-high bitrate 1080p version of Planet Earth that brings a grown computer to tears.
Have a try with this new release and let me know how it works. Please be sure to include the model of Mac you’re using, and especially what video hardware you have.
Oh, and reports of success with AC3/DTS passthrough would make my day.
