View Full Version : New Ogg Theora/Vorbis/FLAC/Speex Directshow Filter Set
bond
27th March 2004, 13:34
found a new site which is offering an as good as complete implementation of the xiph ogg format family:
http://www.illiminable.com/ogg/
the filters arent able to interact with exisiting ogg stuff (corevorbis, oggds) and when using it with .ogm files it detects only a speex stream, which isnt there of course
still for ogg vorbis and speex decoding it seems to work fine
edit: updated filter list:
this filter set is already very powerful and includes:
- ogg parser filter
- ogg muxer filter
- theora enc/decoder
- vorbis enc/decoder
- speex enc/decoder
- flac enc/decoder
bond
31st March 2004, 11:34
these filters are supporting flac too now (tough seems to be little bit buggy atm)
Phanton_13
2nd April 2004, 15:02
they are very good codecs and the suport od flac and speex are the best of all for me , the only problem is the lak of the seeking a file capabilities , but the lack of suport of OGM is not a problem for me.
Sorry for my english.
illiminable
5th April 2004, 09:47
Just a note on these codecs...
I've just comlpeted a theora filter... it will be available in the next day or two, time permitting... still a few things to clean up.
Agreed the missing seeking and position information is a major thing that is lacking now... that is the next on the agenda... A rough breakdown of future milestones is;
1) Theora Decoder completion
2) Position information
3) Seeking
4) Encoders for speex and vorbis
5) Muiltiplexer
6) Encoder for theora
7) Encoder for FLAC
8) Overall polishing, properties pages, packaging etc.
9) Testing and enabling integration with other filter packages.
I'm not very familiar with .ogm files... so i'll have to track a few down to see how they are formatted. But i do plan on supporting this, but getting core codec support is highest priority.
For the moment it was deliberate to not let these filters talk with others just to avoid compatability problems in the testing phase. Both other filters interfering with mine and mine interfering with others.
Enjoy.
Zen.
bond
5th April 2004, 10:43
great you are working on theora too :)
ChristianHJW
5th April 2004, 15:44
Originally posted by illiminable
I'm not very familiar with .ogm files... so i'll have to track a few down to see how they are formatted. But i do plan on supporting this, but getting core codec support is highest priority. ... you can find Mosu and Cyrius on #matroska, irc.corecodec.com, in case you need help with OGM.
For the moment it was deliberate to not let these filters talk with others just to avoid compatability problems in the testing phase. Both other filters interfering with mine and mine interfering with others. Enjoy. Zen.
Did you think about standardizing on certain MEDIATYPES and MEDIASUBTYPES for the Xiph codecs and the Ogg container ? As Xiph are not that interested in standardizing this, maybe we should care about it ?
Latexxx
5th April 2004, 16:04
Nice to see somebody working on Theora for DS. Keep it going!
illiminable
5th April 2004, 17:46
Originally posted by ChristianHJW
[BDid you think about standardizing on certain MEDIATYPES and MEDIASUBTYPES for the Xiph codecs and the Ogg container ? As Xiph are not that interested in standardizing this, maybe we should care about it ? [/B]
Seems strange that they aren't interested in standardising... i haven't talked to them about it though... It's as important to directshow as mime types are to general internet type recognition.
MEDIATYPES are pretty much decided already by MS ie Audio/Video... probably shouldn't go changing these.
SUBTYPES... definately a good idea... i haven't really tried to see what happens if i change my subtypes and just try and let it connect to one of the other groups filters. If we do this... we definately need some kind of agreement/"Expected behaviour" to ensure it doesn't just cause problems... ie to ensure that if we use the same GUIDS then we gaurantee to reject connections that we can't properly process.
And conversely gaurantee to accept and be able to process filters that conform to the expected behaviour.
It's definately something i want to do... but i've still got a lot more testing before i can make any gaurantees about my filters behaviour.
illiminable
8th April 2004, 15:09
Well... the first cut at a theora filter is done... so that completes the basic functionality of the decoders (minus all the bugs)... ie vorbis/speex/flac/theora.
Theora is not very well tested yet... so let me know if you have troubles with it(besides the bugs i already know about)... I'm pretty sure theora will need DX9 for mediaplayer to run it. And only theora files encoded with the alpha 3 release (ie the one that is only about a month old) will work... it will probably crash if you try to play older bitstream versions.
FLAC is still pretty buggy... and theora has a few bugs too... you can see the ones i've already found on the webpage www.illiminable.com/ogg/
Any feedback appreciated... also if you know a good source of theora alpha3 encoded vids... please let me know... they are a pain to encode under windows at the moment.
Next on the agenda is sorting out position and seeking... i have a few weeks off coming up... so hopefully some fast progress can be expected (fingers crossed).
Enjoy
Zen.
jcsston
8th April 2004, 19:50
I thought this might happen. :angry:
Instead of anyone ever updating the Ogg Splitter for FLAC, so that it does it's job (SPLITTING Ogg files!). Someone goes makes a splitter+decoder for OggFLAC files. :devil:
No one updated the Ogg Muxer either. :p
And to think I wondered why peope use Ogg...
illiminable
9th April 2004, 04:41
Originally posted by jcsston
I thought this might happen. :angry:
Instead of anyone ever updating the Ogg Splitter for FLAC, so that it does it's job (SPLITTING Ogg files!). Someone goes makes a splitter+decoder for OggFLAC files. :devil:
No one updated the Ogg Muxer either. :p
And to think I wondered why peope use Ogg...
I'm not sure i follow :) Which ogg splitter are you talking abot ?
The splitter and decoder are not one filter ? There are 5 filters in this package... a demuxer(splitter) and four decoders.
A new ogg muxer is not far away either hopefully.
I don't see how someone creating a complete codec set + associated tools can be a bad thing :)
Latexxx
9th April 2004, 08:25
Originally posted by illiminable
Any feedback appreciated... also if you know a good source of theora alpha3 encoded vids... please let me know... they are a pain to encode under windows at the moment.
It appears that your only option is to program an encoding filter Theora. :D The other option is to use the ffmpeg method:
ffmpeg -i test_th.avi -f yuv4mpegpipe - | encoderwin -a 5 -V 1000 -o test_th.ogg test_th.wav -
bond
9th April 2004, 09:22
Originally posted by illiminable
also if you know a good source of theora alpha3 encoded vids...a page offering theora encodes can be found here (http://www.xiph.org/~volsung/cc/mixtape.html), but i dunno if it they are a3?
hellfred
9th April 2004, 10:10
Originally posted by Latexxx
It appears that your only option is to program an encoding filter Theora. :D The other option is to use the ffmpeg method:
ffmpeg -i test_th.avi -f yuv4mpegpipe - | encoderwin -a 5 -V 1000 -o test_th.ogg test_th.wav -
I encoded a theora video using latest ffdshow from http://www.ligh.de/software/mirrors.phtml
together with VirtualDubMod.
It worked like a charm (even two pass), though i am not 100 per cent sure the theora codec is actually a Theora1.0-alpha3, but i think so, because i can decode the resulting file with the win32 realplayer plugin, which is supposed to only decode Theora1.0-alpha3.
https://helixcommunity.org/project/shownotes.php?release_id=129
Hellfred
Phanton_13
9th April 2004, 10:32
FFdshow+virtualdubmod d'ont make theora bitstream, it make OGM with theora encapsulated bitstream, and it is played as standart OGM file not like theora file.
Latexxx
9th April 2004, 10:45
Originally posted by bond
a page offering theora encodes can be found here (http://www.xiph.org/~volsung/cc/mixtape.html), but i dunno if it they are a3?
These were created using the Theora encoder from CVS and won't play using the Theora alpha 2 player.
They appear to be alpha 3 (or at least alpha 2+).
hellfred
10th April 2004, 09:58
Originally posted by Phanton_13
FFdshow+virtualdubmod d'ont make theora bitstream, it make OGM with theora encapsulated bitstream, and it is played as standart OGM file not like theora file.
I have placed the video into a avi container. What exactly do you mean with the term "bitstream" or theora file? Can't the bitstream be extracted from the avi?
Another way to get a theora encoded video is encoderwin.exe from
theora_tools-1.0alpha3-release_build.rar
(See http://forum.doom9.org/showthread.php?threadid=73148)
Using this i got a file with the ending .yuv.
Maybe that will help.
Hellfred
bond
10th April 2004, 10:13
Originally posted by hellfred
I have placed the video into a avi container. What exactly do you mean with the term "bitstream" or theora file? Can't the bitstream be extracted from the avi?from what i read the video bitstream is somehow connected with the .ogg container and therefore cant be extracted that easily
Phanton_13
10th April 2004, 22:10
In reality de theora bitstream format in the Ogg container is quite diferente than the hacked bitstream format for genearal A/V put in the OGM, this second is very similar to the format used in AVI, if yoy like to transform an AVi whith a theora stream in to a Ogg Theora compliant file, you ned to extract a Raw video an then with a especial parser conect to the muxer for the throra container.
----
Theora file is a theora compliant bitstream put in a ogg file whith Vorvis, Speex , Flac or whitout audio, this cam be change in a near future ading writ... and other features developep in xiph.
I like to tell de video or audio streams whith bitstream when i tell about de Ogg container, in this container dont exist a audio or video stream type, only exist one general stream type and is the codec who know wat is contained in the stream, in this contex i think that is more correct to tell de stream bitstream, In teh other hand the theora bitstream is the format of the stream type maked for the theora codec and only it know it... the ogg format is more simpler than other but is very high flexible and powerfull, and the remainder complexity for equals other container is moved to de codecs.
----
Sorry for my english
illiminable
12th April 2004, 15:10
Originally posted by Latexxx
They appear to be alpha 3 (or at least alpha 2+).
They don't appear to be A3...
A3 have this string
Xiph.Org libTheora I 20040317 3 2 0
These ones have...
Xiph.Org libTheora I 20031026 3 2 0
illiminable
18th April 2004, 10:02
Just to let people know there is now an update to these filters... www.illiminable.com/ogg/
I've added encoders for speex and vorbis, and a single stream mux (doesn't interleave yet)...
Some example filter graphs for encoding/transcoding are shown here www.illiminable.com/ogg/graphedit.html
Also added support for OGM style video encapsulation (only handles OGM video)(examples are vorbis + divx in ogg) to connect to ffdshow. This still is not working quite right. It connects and plays, but the video is clumpy... haven't quite figured that out yet.
Still haven't got around to seeking yet... been doing the easy stuff first :)
Enjoy,
Zen.
savage747
18th April 2004, 11:55
Great work illiminable!
BTW: Did you get any help on that "Granule pos bug" (theora-dev@xiph.org)? Have you tried contacting a developer in IRC?
illiminable
18th April 2004, 12:28
Thanks, yeah i sorted part of teh granule pos issue out... the part where it increases really fast... there is some weird method of marking keyframes.
But i haven't really got a conclusive answer for the -1 / no packtes end on this page case.
Just an aside... if anyone is using the encoders... don't distribute the files it creates... they are currently not to spec (no checksums and invalid paging of the first few packets)... even though my decoders play them... most others won't... i'm just working on that now... i've got the paging issue fixed... now i'm just trying to figure out why my checksums don't match !
Hopefully the source will be ready for release by the end of the week.
savage747
18th April 2004, 12:40
Originally posted by illiminable
Just an aside... if anyone is using the encoders... don't distribute the files it creates... they are currently not to spec (no checksums and invalid paging of the first few packets)
Distributing alpha-3 encoded files isnīt a good idea even when using the official encoder: The bitstream is not yet frozen (although changes will only happen when absolutely necessary AFAIK).
slavickas
18th April 2004, 12:56
i think he meant vorbis/speex only encoding, if i correctly understood
savage747
18th April 2004, 13:15
Originally posted by slavickas
i think he meant vorbis/speex only encoding, if i correctly understood
Argh... yes, of course... must have been confused...
illiminable
18th April 2004, 13:27
Yep... that is what i meant !
I've fixed the checksum and paging issues... a new version just went up then 0.52.0093. But i think there is a slight problem with the granule pos which causes some other players (though not mine) to experience a slight time-stretching distortion in a few places.
I still wouldn't recommend using these codecs to create files you intend to distribute just yet.
bond
25th April 2004, 00:02
illiminable,
i saw that you are also working on an ogg muxer! are planning to support ogm-style muxing of a/v tracks or only the official xiph formats in the ogg way (+ remuxing of theora stored in the ogm way to the ogg way?)
keep up the good work :)
illiminable
26th April 2004, 16:29
Originally posted by bond
illiminable,
i saw that you are also working on an ogg muxer! are planning to support ogm-style muxing of a/v tracks or only the official xiph formats in the ogg way (+ remuxing of theora stored in the ogm way to the ogg way?)
keep up the good work :)
Yes... the single stream muxer... suitable for muxing vorbis or speex only ogg files is almost done... it's in the last release though it still has some defects in it's paging and timestamping.
As for ogm... i'll be supporting the playback of ogm files (anyone know where i can download some from :) with moderate priority... the demux already supports ogm video + ogg vorbis mixed streams(such as the lego man movies (divx + vorbis) i link to on my website)... adding support for the audio also won't be very hard.
As for muxing of ogm... unfortunately that's a fairly low priority at the moment... once i can mux proper theora + vorbis ogg files properly to spec i'll start looking at that.
But i am also going to start adding annodex(www.annodex.net) support... which is another project i'm working on... i guess it could be interesting to the fansubbers, if they want to check it out ! This may take precedence over doing ogm muxing, depends how much spare time i get. Though you never know... ogm muxing is not all that complicated.
There will be a new release tomorrow, that includes seeking and position info for speex and vorbis... though still not for theora or flac. I just finished it then... but i think i'll sleep on it, and then package it tomorrow.
Also source will be available within the next 2-3 days. Basicly once i stop trying to do "just one more feature" and start tidying it up. Which should hopefully be about now !
illiminable
27th April 2004, 11:28
New version with seeking for speex and vorbis is available and a few other fixes...
www.illiminable.com/ogg/
illiminable
21st May 2004, 12:49
Another update to these filters. Now you can seek in theora as well as vorbis and speex.
Theora still has the odd sporadic crash when seeking, but it seeks succesfully most of the time and stays in synch, though there is still more issues to sort out. It doesn't seek to keyframes so you get blockiness until the next keyframe arrives.
New versions available here...
www.illiminable.com/ogg/
good to see that things are evolving :)
illiminable
21st May 2004, 13:34
Yep... moving along again now... had to do some major changes to sort out the sync problems... and i've been quite busy with other things the last few weeks.
Hopefully not too much longer until they are all fully functional.
now as ogg theora has been finalized i had again a deeper look at your filter set :)
somehow everytime i try to use your ogg muxer, it creates a "name.ogg.asf" file :confused:
also its funny to see that its possible in dshow to combine file writer and muxer into 1 filter :)
are you planning to add a theora encoder filter too btw?
illiminable
2nd June 2004, 21:03
If you are using graphedit... to avoid the asf thing, choose in the drop box "All files"... i dunno why it does that !
You think it's bad to mix writer and muxer in one ?
I will probably create a filter with an output in the future because you may want to output that over a network instead of a file for example.
The skeleton of the theora encoder went into xiph svn tonight... but i haven't filled it in yet... there's still a problem with wmp9 and the theora decoder... it needs a bit of a rewrite to fix :(
The version in svn... has fixed most of the muxing bugs, and accepts multiply input streams.
I have exams starting... so it may or may not get done soon !
Originally posted by illiminable
[B]If you are using graphedit... to avoid the asf thing, choose in the drop box "All files"... i dunno why it does that !hm the muxer says " output.ogg.* ", but i think it doesnt matter anyways
You think it's bad to mix writer and muxer in one ?no, i only never saw this before :eek:
I will probably create a filter with an output in the future because you may want to output that over a network instead of a file for example.sounds powerful :D
The skeleton of the theora encoder went into xiph svn tonight... but i haven't filled it in yet... there's still a problem with wmp9 and the theora decoder... it needs a bit of a rewrite to fix :(
The version in svn... has fixed most of the muxing bugs, and accepts multiply input streams.nice :)
I have exams starting... so it may or may not get done soonkeep up the good work!
illiminable
7th July 2004, 20:45
Well... after a brief break... a new update is ready... quite a few new things added.
Most notably the ability to stream files from a http source.. the buffering is pretty much straight through at the moment... so you need to make sure you haev enough bandwidth to stream the desired file. Theres a few other limitations that are listed in known issues on my site.
The other major feature added is the theora encoder filter... i have also put together a brief how-to for how to transcode using graphedit to theora. www.illiminable.com/ogg/enc_theora_graphedit.html and as before you can still encode/transcode speex or vorbis from any format you can play in windows, see www.illiminable.com/ogg/graphedit.html
Also a lot of stuff to properly have file masks show up in media player and to let you put files in the new Media Library in WMP 9+... theora still won't play in WMP9+ unfortunately... i need to spend a good solid day debugging that... but it will play in graphedit or something like bsplayer.
You can download the binaries here (0.60.7043) www.illiminable.com/ogg/ or the source can be checked out of svn at http://svn.xiph.org/trunk/oggdsf/ Check out revision 7043 for the source that built those binaries... no doubt the head branch will be different soon enough.
Enjoy, and send me feedback if you have any problems.
Zen.
Atamido
9th July 2004, 19:23
Congradulations on making the encode/decode filters seperate. Very much appreciated. Once you get them to work with the Matroska filters and things like CoreVorbis, perhaps you could help out to make the Matroska Splitter accept streaming connections?
Atamido
9th July 2004, 20:39
Two small items.
1. I could not connect the Theora Encoder to the FFDshow filter until I disabled all outputs other than the YV12 output in the filter properties.
2. FFDshow tried to play the Theora file and would decode only the first frame, corrupt the second, and then freeze. Had to disable decoding Theora in FFDshow.
Using 20040418 and 20040629 version of FFDShow.
illiminable
10th July 2004, 09:59
perhaps you could help out to make the Matroska Splitter accept streaming connections?
The ability to use streaming is mainly based around an abstraction of source, i have a filter source interface, and it is implemented both as a file source or a network source.
Another thing i did from the outset after painful experiences in the past is to make the splitter a source filter, with an interface to change the source, rather than using the supplied "File Source" and "URL source" filters which i found to be really restrictive.
1. I could not connect the Theora Encoder to the FFDshow filter until I disabled all outputs other than the YV12 output in the filter properties.
Yeah... libtheora can only sucessfully encode 4:2:0 YUV (YV12), there is some support for 4:2:2 (YUY2) and 4:4:4, but encoding using these formats at the moment is not very successful.
So what the filter does is downsample any YUY2 to YV12, but i haven't written any way to translate any other formats.
So that's not really a bug, it just hasn't been written yet !
2. FFDshow tried to play the Theora file and would decode only the first frame, corrupt the second, and then freeze. Had to disable decoding Theora in FFDshow.
I'm not sure what happened there... when ffdshow first added support for theora it worked, but i supsect since then i've made some changes which ffdshow hasn't propagated yet. You should let the ffdshow folks know, so that they can check it out... When they first did it i hadn't released the source so they had to do some guesswork for some things... but the source is now available so they should be able to figure out what is different now.
Cheers,
Zen.
BoNz1
10th July 2004, 19:50
illuminable, any chance you could release a directshow encoder build using the experimental theora encoder? http://svn.xiph.org/experimental/derf/theora-exp/ there were some people who were quite excited about it and I sort of want to see what it can do :).
illiminable
10th July 2004, 20:15
illuminable, any chance you could release a directshow encoder build using the experimental theora encoder?
I'm getting stuck into a few other things at the moment... but i'll have a look at it soon, i'm not really sure if that's ready though !
So long as it uses the same public api, it shouldn't be too much trouble... to be honest, i haven't even looked at the code.
BTW illiminable as in subliminal rather than illuminable as in illuminate ! :)
Cheers,
Zen.
savage747
10th July 2004, 20:21
Originally posted by BoNz1
there were some people who were quite excited about it and I sort of want to see what it can do :).
The encoder is broken. Although it produces valid files, quality is really horrible. The exciting thing about this codebase is that itīs a build from scratch starting point for future quality enhancements.
BoNz1
10th July 2004, 22:42
Originally posted by savage747
The encoder is broken. Although it produces valid files, quality is really horrible. The exciting thing about this codebase is that itīs a build from scratch starting point for future quality enhancements.
Dunno about that because honestly I haven't tried it. But this is what was said when it first was checked into the xiph subversion. That was a couple months ago already. There have been some changes to the code since.
savage747
10th July 2004, 22:46
Originally posted by BoNz1
Dunno about that because honestly I haven't tried it. But this is what was said when it first was checked into the xiph subversion. That was a couple months ago already. There have been some changes to the code since.
I have tried :)
Those changes were fixes for the decoder (the first decoder for Theora supporting the whole spec - the libtheora alpha3 decoder is not complete and therefore wonīt be able to play all future Theora-streams).
Atamido
11th July 2004, 18:10
Originally posted by illiminable
Yeah... libtheora can only sucessfully encode 4:2:0 YUV (YV12), there is some support for 4:2:2 (YUY2) and 4:4:4, but encoding using these formats at the moment is not very successful.
So what the filter does is downsample any YUY2 to YV12, but i haven't written any way to translate any other formats. Because one of the options exposed on the ffdshow pin in YV12, and it still won't connect, I would consider it a bug. As long as there is at least one compatible type between the two connections, it should work. But in this case, it fails.
illiminable
11th July 2004, 18:34
Because one of the options exposed on the ffdshow pin in YV12, and it still won't connect, I would consider it a bug. As long as there is at least one compatible type between the two connections, it should work. But in this case, it fails.
Ok... i didn't understand you properly... can you give me some more details about the input format/file to ffdshow ? And a copy of the text on the ffdshow input and output pin property page, with all the video information, size etc.
I haven't seen this happen before with ffdshow, the only time i have seen it happen is with a dvd, trying to put the theora encoder where the overlay mixing filter should be, and the dvd filter output pin is querying for an interface during the connection process and even though the video types are the same it still rejects the connection because it doesn't offer the interface it wants.
I suspect this is what is happening.
EDIT: Oh and if anyone is trying to get to my site right now, the servers are in the process of moving data centres so it's down at the moment :( Was only supposed to be down for 4-6 hours, but it's been over 12 now... so hopefully not too much longer !
Atamido
11th July 2004, 18:52
From the ffdshow raw video filter output pin:Major Type: Video - Sub Type: YV12 - Format: YV12 320x240, 12 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: YUY2 - Format: YUY2 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: YVYU - Format: YVYU 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: UYVY - Format: UYVY 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB32 - Format: RGB 320x240, 32 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB24 - Format: RGB 320x240, 24 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB555 - Format: RGB 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB565 - Format: RGB 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Here (http://img45.exs.cx/my.php?loc=img45&image=ffdshow-theora-fail.png) is an image of the graph.
illiminable
11th July 2004, 19:01
Thanks,
I actually haven't seen that filter before ! So i haven't tested with it... where did that come from ?
There's so many different builds scattered about in various places... but none of those i've seen had anything other than the decoder filter in them !
Which is the official download site now ? The stuff on source forge is like years old now !
Bogalvator
11th July 2004, 20:15
ffdshow builds by athos:
http://athos.leffe.dnsalias.com/
Builds by Andy2222:
http://mitglied.lycos.de/ieggei2/ffdshow/
Thread where I found the links:
http://forum.doom9.org/showthread.php?threadid=48511
(good luck!)
By the way, your website is down at the mo' :(
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.