We’re experiencing higher than usual traffic…
A warm welcome to the new visitors! Please come visit the forums, which are hosted on a more beefy machine (which lives in someone’s bathroom, but that’s another story).
12 commentsAnnouncing Plex
As most of you know, we’ve been searching for a new identity since we split from XBMC. Names aren’t easy to come by, and domain names are even harder. We received some great suggestions from our user base (Meteor Center, Media Hugger, etc.). Ultimately though, we wanted a name that was easy to communicate, a bit more abstract, and less tied to media or center.
The one name that stuck was Plex. I like it because it evokes “cineplex” and the suffix means “comprising a number of parts” which the application certain does. In mathematics, you use the suffix to mean “ten to the power of the number” (e.g. oneplex = 10).
Because there are no four-letter domain names left (seriously, try to find one!) we decided to square the plex, so to speak. Think of either plex^2 or plex squared (the beta logo below tries to connote the word “plex” inside a square that might represent a TV screen). The domain names are plex2.com, plexsquared.com, and plexsquare.com for good measure. They are not active yet.
In the coming days, we’ll be working on the rebranding process, including the application packaging, logo, web domains, etc. In the longer term, we have some exciting things in the skin department as well. Stay tuned, and thanks for all your support; we really are lucky to have such an great community.

Release 0.5.0b10: Happy Forth!
The Forth of July, at least for most Americans, conveys visions of charred flesh on a grill, alcohol poisoning, and finger-amputating pyrotechnics. I do plan on partaking in every one of these cherished institutions, but first, a new release (HTTP, BitTorrent, Source)!
Please read through these notes carefully, as there are certain things that have changed and you’ll want to know about them.
- FIX: Fixed an annoying regression which caused some videos to play too quickly. Hopefully it helped you cruise through wife-selected gems such as “So You Think You Can Dance”.
- NEW: There is now support for “watered down” full-screen mode, and it’s enabled by default. This should provide compatibility with Exposé, Dashboard, Spaces, Cmd-Tab, Cmd-Control-Esc, etc. Plus all three of you who use Remote Desktop to control it will be happy that the annoying tearing is gone. Also in this new mode, screen blanking has been improved, you can modify your settings on the fly without restarting. If you’d like to use the old mode, you’ll need to edit ~/Library/Application Support/XBMC/userdata/AdvancedSettings.xml like this:

- NEW: Don’t allow disabling caches, as this could lead to problems.
- NEW: Enrique added support for Smart Crash Reports. This means that whenever you get a crash, you have the option of sending us the crash report. Simply click on the “Report…” button, and then in the bottom right, you’ll see a button for “Send to OSXBMC & Apple…” (which is enabled after the system configuration is gathered). Please, please, please, use this, we’ll get the crash reports, your bugs will get fixed, and then we’ll all drink beer and watch fireworks. Note also that the first time you run it, you’ll get a dialog asking if it can install Smart Crash Reports. (Note: I’ve heard this doesn’t appear on all machines, not sure why that is yet.)

- NEW: The XBMCHelper is now installed into ~/Library/Application Support/XBMC, so that people don’t have that problem upgrading the application because the file is in use. The helper is automatically upgraded if needed as well.
- FIX: The helper settings section has been renamed “Remote Helper” since it handles more than the Apple Remote.
- FIX: We no longer prevent you from using the helper if you’ve installed Remote Buddy. There should be no problem using the two together, although to be honest, I don’t use it myself. Many thanks to the developer for working with us on this one.
- FIX: That annoying problem where the Apple Remote brings up both Front Row and OSXBMC *should* be fixed. More like “worked around” actually, because it’s a bug in OS X. The side effect is that when the helper is running, it’s possible that applications like Quicksilver (who capture keys) won’t completely work. I say “possible” because (a) I haven’t tried it and (b) I don’t use Quicksilver while watching movies.
- FIX: Crash on startup for case-sensitive partitions. Thanks to Brent for helping me track this one down.
- FIX: A regression that prevented images from loading over SMB (does nobody use the app to view photos anymore?)
- FIX: Removed all the broken resolutions from the screen settings. We’ll get back into changing screen modes at some point, probably at the same time as we switch refresh rates for different media.
- NEW: Apple Movie Trailers script was updated to the latest version (thanks, Nuka!)
- FIX: The default port for the web server has been changed to 3000.
- NEW: Latest version of ofdb scraper was included.
- FIX: The keymap has a new entry for switching between audio languages in full-screen (the ‘a’ key). Also, the ‘c’ key works to obtain a context menu in the file manager view (which is needed to eject optical media). To obtain these new settings, you’ll need to whack your old Keymap.xml file.
- NEW: When starting from scratch, a default sources.xml is installed which provides people with some basic sources for photos, music and video. Many thanks to Isaac for these last four items!
- FIX: The smart folder code has been reworked a bit. It’s *possible* that some of the scanning issues that Jeremy was running into will be fixed. If not, it’s probably not the fault of smart folders.
- FIX: I’ve increased the latency by a few milliseconds in the Portaudio code to hopefully reduce or get rid of underflows entirely (resulting in audio dropouts). Please see if you notice any improvement, and check the log if you’d like to see what latency it’s using. N.B. The change will be subliminal (e.g. on my system the latency went from 1.5ms to around 9ms.)
- FIX: Who says we don’t save the best for last? That annoying bug where the app hangs when canceling a video that’s buffering (e.g. YouTube or AMT or FTP)? Fixed!
Some good stuff cherry-picked as well:
- Vulkanr got DVD playing working. So you should be able to insert a DVD into the drive and watch it play. To eject, go to the file manager and use the context menu. If it doesn’t eject right away, try again. Brilliant stuff, vulkanr! He also fixed another Python crash.
- Jmarshall fixed the <blackbarcolour> setting, and lots of other little things.
- Charleydoes fixed a crash on exit and a slow query.
- Spiff added .ogv/.oga file extensions.
We’ve had some really hot days, and not a lot of rain. Barkley’s favorite place has been our friend’s pool.
Coming in the next beta: Full-screen “lite”
Among some of the cool things coming in the next beta is an (optional) different method for entering full-screen. Many of you have requested compatibility with Growl, Exposé, Spaces, Cmd+Tab, and Cmd+Ctrl+Esc. I’ve resisted doing this because, among other reasons, supposedly there is an OpenGL performance hit in windowed mode (makes sense, right, because in “real” full-screen mode the driver is free to do whatever it likes to optimize for OpenGL output). However, OpenGL is not our bottleneck, and well, the people have voted. It will be optional, of course, for those of us who prefer to watch their movies without an OS update or new mail notification blocking out gratuitous nudity.
Among the people who may appreciate this change is Erik O., who has had trouble for quite a while with vsync not working in full-screen mode (while it works fine in windowed mode).
The next beta should be wrapped in the next week. Lots of tasty bug-fixes and improvements…

Release 0.5.0b9: Surrounded by Sound
I dropped Anna off at the airport this morning; she’s on a two week trip to the mainland to visit family. Plus, it’s been raining all day. These two things conspired to keep me inside all day wrapping up the release. (That’s not entirely true, a couple of friends came over with a lot of beer and I spent the better part of the afternoon in an alcohol-induced stupor. But I digress.)
Here are the changes in this release (HTTP, torrent, source). I’m hoping that we can get this 0.5 release wrapped up and move on to the new and interesting things coming in 0.6. (Translation: please don’t report any more damn bugs for this version!) The next beta will be a release candidate.
- NEW: AC3 encoding. This is a killer new feature that allows your receiver to play full surround sound from “unsupported” formats, like AAC and FLAC. My hat is off to Ryan Walklin who got it working in record time. I know, we’re supposed to be stabilizing things for 0.5 final, but this was just too damn cool not to work in. Go play some Apple Trailers and then throw your Apple TV out the window.
- FIX: The infamous and incredibly annoying “CAPETag” bug, manifested by a crash in the middle of music playlists (randomly, of course).
- FIX: GIF image loading was kind of broken. I’m surprised nobody noticed. I guess everyone’s pr0n collection has moved to JPEG? Boobs do look better in 24 bit color.
- FIX: A crash with keyboard layouts (thanks to Enrique and Roman).
- FIX: Text subtitles with more than two lines would have missing lines.
- FIX and FIX: Lots of fixes to smart folders. We now run asynchronously and timeout after a while if nothing has been returned. Memory handling has been fixed (thanks, Enrique!) so it doesn’t crash when scanning a smart-folder-source to the library. And we respect the folders scope when executing the query.
- FIX: Switching between full-screen and windowed mode has been fixed to return to the same windowed resolution.
- FIX: Hugely reduced latency with controllers (XBox360/Apple Remote). The difference is unbelievable with the XBox360 controller, it should be indistinguishable from a wired controller at this point.
- FIX: Crash when displaying SSA subtitles in some cases. Thanks to Bad Mr Frosty and Parag for helping me track this down!
- FIX: Minor changes to the way we do vsync, not sure if it will improve things for people having trouble, but it won’t make things worse.
- FIX: Revert the logarithmic volume change. Not sure if it’s a Mac thing or not, but it just made things really quiet for the majority of the volume range.
- FIX: Crash on exit when exiting when a script is running.
- FIX: Some erroneous references to /opt/local in the libraries we ship in Resources.
- FIX: 187.avi was getting stacked with 300.mkv, and I can assure you that the latter really doesn’t play well after the former. Although, come to think of it, Samuel L Jackson yelling “This is motherfucking Sparta!” would be pretty awesome.
- FIX: The XBMCHelper is now killed again when you disable it in the settings.
- NEW: Enrique added support for CoreFoundation’s exception handling, so that we better log those sorts of errors.
- FIX: Enrique fixed a few more memory leaks and built the latest libcdio to fix a crash.
- NEW: (Bonus subtitle-lover’s feature) Rather than just being able to select the lowly Arial font (or whatever you tossed in the media/Fonts directory in your application package (and come on, who does that?) you can now pick from a large number of Apple-supplied fonts. Seen below is Georgia Bold. Please let me know if you have an answer to the question posed.

I also cherry-picked some fixes from the linuxport branch, most notably:
- A crash opening context menus (yuvalt).
- Crash in Python selecting list items (nice one, vulkanr!)
- Better thread-safety in DLL trackers (charleydoes)
- Fixes to AC3/DTS buffering (elupus)
With these changes plus the crash on exit from the list above, Python support should actually be pretty solid, or at least getting there!
My sincere thanks to our community, you are all awesome. Almost 450 users on the forum, over 2000 posts, simply brilliant. We’re getting top-notch bug reports, and people are being really helpful and friendly.
Without further ado, your Barkley.

Release 0.5.0b8: It’s Greek to me!
Family in town, not much time, but I wanted to get a new release out there. Here are the changes in this release (HTTP, Bittorrent, source):
- REG: Switching between windowed and full-screen mode when watching a video now works again.
- NEW: The genius known as bmfrosty realized that all Leopard installations come with Arial Unicode, so I’ve put some code in to intercept requests to Arial and redirect to the system-installed Unicode version. This means no more need to download and install the font for all you international folk, it should work out of the box! Simply select Arial as the skin font, and it should work. We’ll be putting more work in here shortly, including allowing you to pick more system-provided fonts.
- FIX: You can now add Smart Folders as sources.
- FIX: Some memory leaks playing sounds and loading images (thanks to riquedafreak!)
- NEW: We’ve upped the minimum cache size in a few cases to be more realistic for HD media. Still lots of improvements to be made in this area, but if you’re having trouble with frames dropping or jerky playback, make *sure* your cache settings are high enough.
- FIX: I’ve included a patch by crocodile that apparently fixes streaming from a Dreambox.
- FIX: The default on-screen time for the song information has been raised from 2 seconds to 10.
- FIX: New ffmpeg libraries to include a fix by elupus relating to seeking in MKV files.
- FIX: A patch by Roman Sokolov has been included which apparently helps out with Cyrillic input, switching keyboard layouts, and allowing hot-keys to work. I’m not completely clear on the fixes because, frankly, I don’t type in Cyrillic, but the patch was clean.
- NEW: Another part of the same patch, we now allow the desired URL encoding to be specified in a scraper. We default to UTF-8, and the new KinoPoisk scraper that’s been included in this release specifies CP1251.
Areas to test:
- Cyrillic/international keyboard input, Russian movie scraping.
- Smart folders.
Here’s a screenshot with Greek language enabled, using the system-supplied Arial font.
And finally, your moment of Barkley:
Release 0.5.0b7: Lucky Seven?
Assisted by the lovely Stella Artois, I worked a while this evening fixing some bugs. The result can be found here (HTTP, torrent, source):
- FIX: For ages now we’ve had trouble with large subtitles and the lovely Aeon skin (cases with fonts having point sizes great than 50). Well, no longer. Thanks to jmarshall for pointing me in the right direction on this one.
- REG: Amazingly nobody noticed, but playing movie trailers with the AMT plugin caused a crash. Luckily, before anyone complained, it’s now working again.
- FIX: Better behavior with switching between full-screen and windowed mode in terms of fonts and skins resizing correctly.
- REG: Caching A/V ratios tweaked, fixes frame dropping problem introduced last version. I tried a bunch of HD trailers and got frame dropping only when my pathetic connection couldn’t keep up.
- NEW: Bumped up maximum allowable cache size in certain cases.
- FIX: TIFF loading crash reported by superpea, fixed by upgrading to the latest version of libtiff.
- FIX: ProjectM was updated to 1.1 by malloc64 (nice work, mate!), and I recompiled for OS X. I ran into some problems on GMA950 (go figure), but worked around them. It *should* now work and not display garbage on the lower third of the screen. More tweaks may be needed, but I think it’s much better than the old one.
We’ve seen these racquetballs before, haven’t we?

Regressions, fixes
OK, I wanted to track down two issues quickly, and I didn’t feel like it was worth making a whole new release (yet, at least). This binary (please uncompress with “bzip2 -d” and replace OSXBMC.app/Contents/MacOS/XBMC) should fix the following two issues:
- FIX: Greek characters (and really any non-ASCII characters) in a file name in the results of a smart search made the file not show up. How excessively anglo-centric of me.
- REG: People reported that 720p MKV files showed excessive frame droppage and trouble skipping around. I *believe* I’ve fixed it, but I’d like confirmation.
You can find the new binary here and the source has been pushed to GitHub. Please let me know if these issues are fixed.
As an aside, I used the magic of “git bisect” to help me pinpoint when exactly the regression was introduced. It’s like a time machine that keeps cutting the search space in half and you simply recompile, test, and tell it if the problem exists or not. Simply magnificent.
I know this isn’t a formal release, but perhaps you’ll be quicker to forgive the regression if Barkley makes an appearance.
Release 0.5.0b6: The “Jeremy” release
OK, lots of good stuff. Nine people have forked the code on GitHub and started playing with it. We have some exciting things on the way. The forums are hopping, over 220 people have registered since they opened, and we just passed the thousand post mark. Enormous thanks to our moderating team, especially bmfrosty, ChoccyHobNob, phunkysai, and our very own iordonez. Really nice work making people feel welcome.
This release (HTTP, torrent, source) is named after jeremymc7 since he gets the honor of having two Trac issues closed out.
- NEW: Support for EAC3 audio. In theory, at least. I have to admit to not having any EAC3 content laying around, but I assume the guy who wrote the code for ffmpeg *did*. Thanks to Martin for pointing me to the patch. Also added .m2t/.m2ts to the list of recognized extensions.
- NEW : Support for Smart Folders. Pretty cool, actually.
- FIX: DVD playing over SMB (and other VFS protocols). I know I’ve lied repeatedly in the past about this working, but this time I’ve made sure of it. I hope. To be completely honest, I only tested VIDEO_TS folders and not .iso files.
- FIX: XBMSP support. I’ve also misled you about this one in the past, but this time I actually verified that it works. This combined with iTunesFS is now officially my favorite way of getting my iTunes libraries playing remotely.
- FIX: User’s skin folder wasn’t being created.
- FIX: Profiles are saved and loaded correctly now, to the Application Support area.
- FIX : Scraper/IMDB/filesystem bugs that prevented files named “Broken (2006/I).mkv” from looking up correctly.
- NEW: I have news for you. Those cache settings that you’ve been tweaking to get just perfect, don’t actually do anything. Pure placebo effect. Well, until today, at least. They’re now hooked up and actually work. Superpea will dig this.
I also updated to the latest linux XBMC and ffmpeg code. Some notable changes there:
- Allow opening .nrg images for DVD [wiso]
- Large 15MB memory leak after every song played [charleydoes]
- Python unicode string handling fixed [vulkanr]
- Some fixes to OpenGL renderer [elupus]
- Fix to framedropping for libmpeg2 [elupus]
- AC3/DTS resync fixes [elupus]
Areas to test:
- Cache settings.
- AC3 passthrough.
- IMDB.
- DVD playing over SMB.
- EAC3.
We have an avocado tree next door, and if Barkley finds a ripe one on the way home from a walk, he carries it over to the yard, and the only thing left within ten minutes is a pile of avocado peel and a happy pup.
Use the Source, Luke
OK, so you’d like to build from source and contribute to the project. Git (and GitHub) make this really easy, and give you powers far beyond what non-distributed version control systems like Subversion provide.
The problem with Subversion and CVS in open source projects is that they’re like a walled fortress, and you’re either on the inside or the outside. If you’re a “member” you’re given commit access, and then you can develop on your own branches, checkpoint your work, etc. However, life isn’t so good on the outside. You essentially work without a version control system! You can pull in updates as they get committed to the repository (hoping they merge cleanly with your code), but in terms of keeping order to your local changes and check-pointing them, you’re shit out of luck.
Distributed version control systems like Git essentially democratize the process, giving everyone first-class revision control capabilities. GitHub takes this a step further and puts the “official” people making releases of a project on the *exact* same footing as everyone else with an Internet connection. With a click of a button, you can fork an existing project, work on it with a bunch of your friends, and then request a pull from the parent project. Check out the fork tree for the Ruby on Rails source.
I’ve used quite a few revision control systems (CVS, Perforce, Subversion, and Clearcase — ick), and Git is the only one that both got me excited and fundamentally changed the way I work.
There are two basic ways to start. You can fork my repository on GitHub, or you can simply clone it. I recommend the former because that way you get instant offsite backup of your work.
First steps:
- Download and install MacPorts.
- Download and install XCode. I use the new 3.1 version that’s part of the iPhone SDK.
Now install Git (which pulls in quite a bit of stuff with it). Why you need to manually specify gawk is beyond me. If you’re uncomfortable with the Terminal, you probably want to do some calisthenics or a shot at this point.
$ sudo port install gawk git-core +svn
Let’s get your Git environment set up. Skip the “color” configuration if you don’t like color highlighting.
$ git config --global user.name "Barkley Dawg" $ git config --global user.email "barkley@woof.com" $ git config --global color.diff auto $ git config --global color.status auto $ git config --global color.branch auto $ git config --global core.excludesfile ~/.gitignore
Edit the ~/.gitignore file and add the following to it:
.DS_Store *.o *.lo .libs *.laNow we need to clone the repository. As I mentioned above, you can either clone mine, or fork on GitHub and clone that one. The example below clones mine; simply substitute your URL if you forked.
$ git clone git://github.com/elan/xbmc-fork.git
At this point you’ll need to wait a while, during which time you probably want to have MacPorts install the rest of the dependencies:
$ sudo port install libsdl libsdl_image libsdl_mixer glew fribidi
freetype python24 mysql5 lzo libmad samba3 pcre
fontconfig
Now sit back and relax, or do shots of tequila while your machine crunches away. When it’s done, you can make yourself a branch to work on. I’m currently working on the v0.5 branch for releases, so you can create yourself a tracking branch starting from there to work from, and check it out:
$ git branch --track my-branch origin/v0.5 $ git checkout my-branch
Now we’ll build the code and run it. You can also do this inside XCode, of course.
$ xcodebuild -parallelizeTargets -configuration Debug $ export XBMC_HOME=/Path/To/OSXBMC.app/Contents/Resources/XBMC $ ./build/Debug/XBMC
Time to write some code! If you want to merge in the latest changes to the branch, you can issue a pull:
$ git pull origin/v0.5
In order to push to the remote repository, you’ll need to tell it which local branch to push. This next operation will only work if you did fork my repository (in which case you would likely add my v0.5 branch as a remote).
$ git push origin my-branch # First time. $ git push origin # Subsequent times.
So now you’re set. You can do development on one or more branches locally, push them to GitHub, get updates from my branch (or other people’s branches!) and when the code is ready to be integrated, simply issue a pull request on the GitHub site.
I haven’t really even covered all the different cool things you can do with Git, but hopefully this will serve as a reasonable primer. Notice I never talked about “commit access” — why is that? Well, if you’re doing the occasional one-off patch or experiment, you really don’t need it, and you get all the benefits of version control and offsite backup without it. If you’re starting to get more involved and you want commit access because I’m slowing you down with my pokey pulls, just ask for it and I’ll give it to you, provided you’re not a raging psychopath. That’s the funny thing about Git; commit access doesn’t stand in the way of getting stuff done. And remember, using Git means you never have to say you’re sorry!
Some great Git resources:
- This is a brilliant video of Linus talking about Git at Google. Really hilarious, if only to watch him call lots of people stupid in a way only he can get away with.
- I can’t recommend this booklet on Git enough. The nine bucks is more than worth it.
- A nice cheat-sheet for the common commands and their usage.
Please let me know if any of the above doesn’t work for you. We’ll be moving these instructions somewhere more permanent once I know they’re correct. Also, I’ll post most Git tips over time. I’ve been especially loving the bash autocompletion.
