Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > (HD) DVD, Blu-ray & (S)VCD > One click suites for DVD backup and DVD creation

Reply
 
Thread Tools Search this Thread Display Modes
Old 18th November 2002, 16:37   #1  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Idea (and a solution) for Speedup of Encoding (up to 20%)

First of all: many thanks to dvd2svcd for this great piece of software!

Now I will sketch my idea, which I already implemented in my own DVD->SVCD scripts some time ago, before using (the much more sophisticated) DVD2SVCD. Since I already tested it, I can report, that it works great. Up to 20% of speedup during encoding which is essential if you are using a slow computer like mine :-)

1) When clicking on "Rip & Convert", DVD2SVCD should show the preview window just like after clicking Preview.

2) There the user can mark the top and bottom boundaries of the black bars (if any).

3) The first thing in the AVS-Script is to cut away the black bars. All other transformations (like scale) on the video will act faster, because of the smaller input.

4) The last thing after scaling and anything else is to add appropriate borders. The image now just looks like it would look without that "trick".

I know, this does not really speed up encoding, because the encoder has to encode the complete image, but the frameserving is much faster. What do you think of this idea? Of course, you can add some additional features like cutting away some pixels on the left and the right, scale the picture to a height being a multiple of 8, add borders being a multiple of 8. After that, the macro-blocks will either be completely black or completely part of the picture which leads to a better image quality using the same bitrate. If someone is interested in this idea, I would like to publish my formulas which I developed for my scripts.

As this is just an idea, I would like to know what you all think about this procedure.

Cheers,

neopholus

Last edited by neopholus; 24th November 2002 at 18:08.
neopholus is offline   Reply With Quote
Old 18th November 2002, 19:45   #2  |  Link
RB
Retired
 
Join Date: Nov 2002
Posts: 1,349
Well, you know that this screws up the aspect ratio of the movie, do you? To keep the original aspect ratio, you'd also have to crop an appropriate number of pixels from the left and right. You should notice a slight "egghead" effect in the encoded movie.

What I am doing for 2.35:1 movies (where black bars are already part of the original frames) is something similar that should also save a little encoding time by having only "one kind of black" for the black bars but preserves the correct aspect ratio:

In the AVISynth script, after the Resize and AddBorders, I've added a Letterbox command that entirely "covers" the original and added borders. So for 2.35:1 PAL movies I've added the following custom AVISynth script to dvd2svcd.ini:

[AVISYNTH_BicubicResize PAL 2.35:1]
0=BicubicResize(^TargetWidth,^TargetHeight,^b_value,^c_value)
1=AddBorders(0,^BorderTop,0,^BorderBottom)
2=Letterbox(^Top,^Bottom)
^b_value=0.0
^c_value=0.6
^Top=128
^Bottom=128

(requires latest DVD2SVCD version, you can select such custom scripts on the Frameserver tab, see readme)

I haven't run any speed comparisons but you could try that to see if it provides a similar performance gain.
RB is offline   Reply With Quote
Old 18th November 2002, 22:14   #3  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Quote:
Originally posted by RB
Well, you know that this screws up the aspect ratio of the movie, do you? To keep the original aspect ratio, you'd also have to crop an appropriate number of pixels from the left and right. You should notice a slight "egghead" effect in the encoded movie.
@RB: I think, my post was too imprecise the first time, sorry!

Mmm, no, I don't think that it screws up the aspect ratio (and I don't see eggheads in my videos ). But maybe I should explain this more detailed.

Let's use an example:

With cropping black bars:
  • DVD-Picture is 720x576 pixels, 16:9 anamorphic, 43 black lines on top and 42 lines on bottom.
  • Size of cropped picture: 720x491 (no crop from left and right - only black bars!)
  • We scale this picture to 480x368, because: 1) width squeezed from 720 to 480 (SVCD-Format is squeezed this way) 2) height is sqeezed from 476 to 357 because we have to convert 16:9 anamorphic format to 4:3 format (use factor 3/4 and you get 491 * 3/4 = 357)
  • After that, we add borders on top and bottom with 104 lines each (or we add 112 on top and 96 on bottom because of the macro-blocks)
  • Our final picture now has 480x576 pixels with 104 lines of black each on top and on bottom

Without cropping black bars, it looks like that:
  • Original 720x576, 16:9 anamorphic, 43 black lines on top and 42 lines on bottom
  • We scale to 480x432 because of the anamorphic format and add 72 black lines on top and 72 lines on bottom (as always)
  • So we get a picture with the dimensions 480x576. There are 72 + 43 * 3/4 = 104 black lines on top and 72 + 42 * 3/4 = 104 black lines on bottom. Just like above.

Advantages of cropping and adding borders afterwards:
  • we have real black borders, as you said
  • we only have to scale 720x491 (= 85%) instead of 720x576 pixels so we scale 1.2 times as fast as normal. Of course, all other filters can be applied to the cropped picture (like smoothing). Then the savings of time is even bigger. (I think, the black lines are perfectly smooth anyway, aren't they ? So we do not have to smooth them)

You see, we scale the picture just as normal, but we know, how squeezed black bars look like: they look like black bars with 3/4 the height of the original bar. So we crop them, scale the rest and add the normal borders (as always) plus the cropped borders afterwards. This works with 4:3 movies as well, as long as there are black bars, but of course we must not scale the picture vertically, just horizontally. If there are no black bars, just work as always.

I think, this can't be integrated in DVD2SVCD using a cusom AVISynth filter, can it? The formulas for height and width of the scaled cropped borders and the formulas for the height of the black bars to add after scaling depend on whether it is a 4:3 or it is a 16:9 anamorphic video. O.K., I could add two cusom filter, and depending on the format of the source, I could choose the right one. But, of course, I still have to know the height of the original black bars... I would like to use the preview windows to determine these heights.

@RB: Where do you get the values for ^Top and ^Bottom for your script from?

I hope, this text is comprehensible...

Cheers,

neopholus

Last edited by neopholus; 18th November 2002 at 22:17.
neopholus is offline   Reply With Quote
Old 19th November 2002, 12:56   #4  |  Link
RB
Retired
 
Join Date: Nov 2002
Posts: 1,349
OK, I see it now, you are correct. I thought you were resizing the cropped picture to 480x432. I'll try this out. Thanks!

Quote:
@RB: Where do you get the values for ^Top and ^Bottom for your script from?
I was using the preview window, made a screenshot of that, pasted into PaintShop Pro and looked at the height of the black bars. There were 128 pixels on top and bottom. Remember, the preview window shows a preview of the encoded video (480x576) as it will appear after passing the AVISynth script.

Also, I think your assumption that there are 42/43 lines of black bars in 2.35:1 anamorphic videos is not correct. I just verified with The Matrix: took a still picture from the DVD with WinDVD and there are 77 lines of black bars. Some movies even have slightly different black bars (Gladiator RC2 PAL: 73 top/67 bottom).

So it doesn't seem to be a good idea to use a common crop/resize/addborders script for those movies. Maybe the best thing to do is use "Edit the AVISynth Script File" on the Frameserver tab, check "Use frame selection" on the Conversion tab. Then start encoding, go to a frame where the bars are well visible in Frame Selection, take a screenshot of the Frame Selection window, determine the area to crop to, cancel frame selection and finally edit the AVISynth script accordingly.
RB is offline   Reply With Quote
Old 19th November 2002, 14:07   #5  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Quote:
Originally posted by RB
I was using the preview window, made a screenshot of that, pasted into PaintShop Pro and looked at the height of the black bars. There were 128 pixels on top and bottom. Remember, the preview window shows a preview of the encoded video (480x576) as it will appear after passing the AVISynth script.
Oh, it seemed like a good idea to me to use the preview window for getting the height of the borders on top and on bottom. But of course, you are right, it is the picture after passing the AVISynth-Script. Good luck, that I always used the on-screen-cropping-method of DVD2AVI to get these values. But I think, it would not be a problem to add a new border-detection window using the existing code, would it?

Quote:
Originally posted by RB
Also, I think your assumption that there are 42/43 lines of black bars in 2.35:1 anamorphic videos is not correct. I just verified with The Matrix: took a still picture from the DVD with WinDVD and there are 77 lines of black bars. Some movies even have slightly different black bars (Gladiator RC2 PAL: 73 top/67 bottom).

So it doesn't seem to be a good idea to use a common crop/resize/addborders script for those movies. Maybe the best thing to do is use "Edit the AVISynth Script File" on the Frameserver tab, check "Use frame selection" on the Conversion tab. Then start encoding, go to a frame where the bars are well visible in Frame Selection, take a screenshot of the Frame Selection window, determine the area to crop to, cancel frame selection and finally edit the AVISynth script accordingly.
It was just an example. I noted these values down some time ago while dvd2svcd-ing an anamorphic video. I don't know, if it was a 2.35:1 anamorphic video, but there are a lot of other formats out there, aren't they? The same algorithm will work with 77/77 lines or 73/67 lines of black bars.... My idea was to use two scripts: one for 4:3 movies (no vertical factor 3/4) and one for 16:9 anamorphic movies with two variables ^Top and ^Bottom (like in your script). Depending on the format, you would have to choose the correct script, enter the values for top and bottom and start ripping and converting. But without some built-in help from DVD2SVCD only few people will be able to use such a script, because they won't be able to get the height of the borders... Or am I wrong?

@RB: Thank you for the trick with the Frame Selection window. I will try this one. Its faster than using dvd2avi, I think.
Cheers,

neopholus
neopholus is offline   Reply With Quote
Old 19th November 2002, 14:10   #6  |  Link
Abond
Registered User
 
Join Date: Jun 2002
Posts: 416
The easiest way is to load DVD2AVI project file in GKnot to crop and after that to recalculate the resizing "manualy". You can set the Hresize to 480, and recalculate the Vresize (and borders) folowing Question 62 from Q&A.
P.S. I'm doing it from some time, but didn't found speed increase.

Last edited by Abond; 19th November 2002 at 14:26.
Abond is offline   Reply With Quote
Old 19th November 2002, 14:21   #7  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Quote:
Originally posted by Abond
The easiest way is to load DVD2AVI project file in GKnot to crop and after that to recalculate the resizing "manualy". You can set the Hresize to 480, and recalculate the Vresize (and borders) folowing Question 62 from Q&A.
Why should I use GKnot (I don't know the program...), if DVD2AVI has a possibility to crop movies (menu: Video->clip & resize)? If the checkbox there is marked, you can use the sliders to adjust the borders and the picture is cropped in real-time. Knowing these values, you can use the formulas of my sooner postings to calculate all values for resizing and the AddBorder command.

Cheers,

neopholus
neopholus is offline   Reply With Quote
Old 19th November 2002, 14:49   #8  |  Link
Abond
Registered User
 
Join Date: Jun 2002
Posts: 416
E-eh, well, sorry, I didn't say you should. I think it is very easy, but may be I should add "for me". In fact Gordian Knot is the same frontend program as DVD2SVCD, but for encoding DivX movies (.avi). I think it is easy because it has what you ask for DVD2SVCD - preview even with autocrop (or manual if you like), if you want for example to convert 2.35 to 1.85 it will crop automatically from left-right and so on. The program generates avs files and there is option for SVCD resolution - you can use directly the generated avs script. Well, it is up to you...
Greetings.
Abond is offline   Reply With Quote
Old 19th November 2002, 14:58   #9  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Quote:
Originally posted by Abond
E-eh, well, sorry, I didn't say you should. I think it is very easy, but may be I should add "for me". In fact Gordian Knot is the same frontend program as DVD2SVCD, but for encoding DivX movies (.avi). I think it is easy because it has what you ask for DVD2SVCD - preview even with autocrop (or manual if you like), if you want for example to convert 2.35 to 1.85 it will crop automatically from left-right and so on. The program generates avs files and there is option for SVCD resolution - you can use directly the generated avs script. Well, it is up to you...
Greetings.
Uuups, soory, I didn't mean to blame you. If you think so, it was a missunderstanding. Sorry.

And, I see now, you are right, Gordian Knot might have some functionality which is helpful...

I think, I will download this program and give it a try.

Cheers,

neopholus
neopholus is offline   Reply With Quote
Old 19th November 2002, 15:05   #10  |  Link
Abond
Registered User
 
Join Date: Jun 2002
Posts: 416
It's OK
Good luck.
Abond is offline   Reply With Quote
Old 21st November 2002, 15:11   #11  |  Link
RB
Retired
 
Join Date: Nov 2002
Posts: 1,349
Quote:
Originally posted by RB
OK, I see it now, you are correct. I thought you were resizing the cropped picture to 480x432. I'll try this out. Thanks!
OK, CCE speed went up from 1.37 to 1.43 using this method. Not too exciting, but still faster Plus it should also provide a little bit more bitrate for the "real video" because the black bars are now a solid color.
RB is offline   Reply With Quote
Old 21st November 2002, 16:35   #12  |  Link
mordant
Registered User
 
Join Date: Nov 2001
Posts: 123
Is there a chance for an auto cropping feature such as that in FairUse?
mordant is offline   Reply With Quote
Old 21st November 2002, 17:04   #13  |  Link
RB
Retired
 
Join Date: Nov 2002
Posts: 1,349
What's FairUse?

Anyway, I think implementing an automatic cropping feature is almost impossible.

What would be a nice future enhancement though is a check box like "Use manual crop" on the Conversion tab. It would work similar to "Use frame selection" in that it pops up a (selectable) frame from the movie where we can drag a selection box around the actual movie content. D2S would then modify it's default AVISynth script accordingly to first crop, then resize/addborders, taking into account the movies aspect ratio.

DVD2SVCD, are you listening?
RB is offline   Reply With Quote
Old 21st November 2002, 17:52   #14  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Quote:
Originally posted by RB
OK, CCE speed went up from 1.37 to 1.43 using this method. Not too exciting, but still faster Plus it should also provide a little bit more bitrate for the "real video" because the black bars are now a solid color.
Hi RB,

thanks for these facts. What aspect ratio was that movie? I think a lot of current movies are 2.35:1 with about 256 black lines altogether. So 44% of the original picture need not to be scaled, so there should be much more speed-up. (I had more speed-up with such movies, but this was one year ago...). I'll try a movie myself, because I used this trick before using DVD2SVCD with some older versions of avisynth, so it might be, that scaling is now much faster then before so that encoding is now the real hard part of the work. But when using some sophisticated filters on a movie (like DVD2SVCD and others seem to do on comic material?) the speed up should be more relevant.

Some questions:
  • Is the real aspect ratio of a movie available from the informations on a DVD? Or is there only 16:9 or 4:3? If the real aspect ratio like 2.35:1 is available, the borders could be estimated, e.g. 128 lines of black on top and on bottom. These values could be verified using some still pictures of the movie. If there is no black->picture transition on a pic somewhere about we estimated it should be, it can be assumed, that the picture is too dark to find border boundaries and another picture can be used.
  • Another idea for integrating this into DVD2SVCD: Using the code of e.g. BicubicResize, the functionality could be integrated into this filter: 1) search for black lines 2) scale the not-black part 3) add borders to obtain a given picture size. The drawbacks are: 1) every scale-algorithm must be modified (or: not every scale algorithm available for this feature...), 2) other filters can only be applied to full 480x576 pictures and 3) search for black lines will consume time. This is no problem, because the algorithm could do the search for black lines very often at the beginning of a film and could stop scanning for black lines after it can be sure, that it has detected the black bars correctly. This is, I think, the only way to implement this feature without having DVD2SVCD to do it himself (I think, there is enough work for him, isn't it?).
    Then the call of the filter could look like this:
    Code:
    [AVISYNTH_BicubicResizeWithBlackBarDetection]
    0=LoadPlugin(!BicubicResizeWBBD.dll)
    1=BicubicResizeWBBD(^TargetWidth,^TargetHeight,^b_value,^c_value,480,576)
    !BicubicResizeWithBlackBarDetection.dll=C:\Programme\DVD2SVCD\...
    ^b_value=0.0
    ^c_value=0.6
    This has to be read like "Scale the given picture to size ^TargetWidth,^TargetHeight using the parameters ^b_value,^c_value. After scaling, add borders, so that the resulting picture is of size 480x576. This is a little bit against the idea behind avisynth, I think, because such sophisticated filters should be built from simpler filters using scripts, but I don't see a solution for that.

    Comment: On rereading this, I think, that is no clean solution... so another try:
  • Following the idea behind DVD2SVCD (packing lots of available applications to an easy-to-use one), a new application could be programmed displaying a picture and giving the user the possibility to mark the black bars or do a autodetection of black bars with or without a verification of the user.
    I think, this program could easily be integrated into DVD2SVCD, couldn't it? Just start the program giving the original avisynth-script as command line parameter and the program adds a crop before the resize command, modifies the parameters of resize and modifies the parameters of addborder.
  • Ah, a new post from RB... I think, you are right, the most comfortable way would be a "Use manual crop"-checkbox in dvd2svcd If DVD2SVCD is listening: if you want do program this feature, I could do some of the non-gui wouk for you and send you some code (your program is Visual C++, I think???) for:
    1) checking if the current selection of cropping parameters (top, left, bottom, right) in the GUI is macroblock optimized
    2) if not optimal, which nearby values for (top, left, bottom, right) would be better that the current ones
    3) calculation of the new resize parameters
    4) calculation of the new border parameters
    ...
    I have all these formulas already used as Excel sheet for some time and I think, you need not to reinvent the wheel, if someone can help you. But if you don't like foreign code in your project, I could just send the excel sheet or the plain formulas. (This does not mean, you have to do this, DVD2SVCD... but if you would like to do it, I would help you, if you want. Since I am no native speaker, I don't always know exactly how others react upon reading my post...)

Ideas, comments?

Cheers,

neopholus
neopholus is offline   Reply With Quote
Old 21st November 2002, 20:57   #15  |  Link
RB
Retired
 
Join Date: Nov 2002
Posts: 1,349
Quote:

thanks for these facts. What aspect ratio was that movie?
The aspect ratio of this DVD is 16:9, but the movie is 2.35:1 (black bars part of the movie).

Quote:

Is the real aspect ratio of a movie available from the informations on a DVD? Or is there only 16:9 or 4:3?
There is only 4:3 and 16:9. 2.35:1 movies are just 16:9 with black bars being part of the picture.

No, I don't think a "heuristic scan" for black bars is possible. Just think about very dark scenes. How would you know, programmatically, which frame to pick so you can safely "identify" the black bars? We need a manual crop.
RB is offline   Reply With Quote
Old 22nd November 2002, 07:58   #16  |  Link
mordant
Registered User
 
Join Date: Nov 2001
Posts: 123
FairUse is a Divx encoding package you can find in the download section. It is a similar in style to DVD2SVCD but for Divx of course. It has a preview function that pops up after the DVD is ripped that allows you to auto crop the video or to manually do the same, and select frame range as well.
mordant is offline   Reply With Quote
Old 22nd November 2002, 17:21   #17  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
I did some tests with my Lord of the Rings DVD (only one chapter):

Normal AVS-script:
Code:
LoadPlugin("C:\PROGRA~1\SVCD\DVD2SVCD\MPEG2Dec\mpeg2dec.dll")
LoadPlugin("C:\PROGRA~1\SVCD\DVD2SVCD\AVISYN~1.DLL")
mpeg2source("D:\svcd\DVD2AV~1.D2V")
BilinearResize(480,432)
AddBorders(0,72,0,72)
AvisynthSubtitler("D:\svcd\Subs\","permsubs.txt")
ResampleAudio(44100)
Speed: 0.479

Alternate script, macroblock-optimized :
Code:
LoadPlugin("C:\PROGRA~1\SVCD\DVD2SVCD\MPEG2Dec\mpeg2dec.dll")
LoadPlugin("C:\PROGRA~1\SVCD\DVD2SVCD\AVISYN~1.DLL")
mpeg2source("D:\svcd\DVD2AV~1.D2V")
Crop(6,78,709,420)
BilinearResize(480,320)
AddBorders(0,128,0,128)
AvisynthSubtitler("D:\svcd\Subs\","permsubs.txt")
ResampleAudio(44100)
Speed: 0.533

Speedup about 11%. With more sophisticated resize-filters and other filters, there could be even more speedup.
And: real black bars
And: More bitrate for the movie

Cheers,
neopholus
neopholus is offline   Reply With Quote
Old 24th November 2002, 18:03   #18  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Hello there,

I think I can give you an almost automated solutions to the problem:

Add these lines of codes to your dvd2svcd.ini (and modify it if you want another resizer or add temporal soften,...)
Code:
[AVISYNTH_DetectBorders]
0=LoadPlugin(!AutoCrop.dll)
1=AutoCrop(true,1,1,0,0,0,0,40,10)
2=BilinearResize(^TargetWidth,^TargetHeight)
3=AddBorders(0,^TopBorder,0,^BottomBorder)
!AutoCrop.dll=C:\Programme\SVCD\DVD2SVCD\Autocrop\AutoCrop.dll

[AVISYNTH_BilinearResizeWithoutBlackBorders]
0=Is_16_9_movie=?16_9
1=Crop(^Crop_Left, ^Crop_Top, ^Crop_Width, ^Crop_Height)
2=AutoResize(Is_16_9_movie)
3=AutoAddBorders()
4=function AutoAddBorders(Clip c) {
5=aab_top = (Floor(((576 - c.height) / 2) / 16))*16
6=aab_bottom = (576 - aab_top) - c.height 
7=return addBorders(c, 0, aab_top, 0, aab_bottom)
8=}
9=function AutoResize(Clip c, bool is_16_to_9) {
10=factor = (is_16_to_9 == true) ? 0.75 : 1.0
11=height = Round((720.0 / c.width) * c.height * factor)
12=return BilinearResize(c, 480, height)
13=}
?16_9=true
^Crop_Left=0
^Crop_Top=0
^Crop_Width=720
^Crop_Height=576
Now do the following:
1) Insert DVD into your drive
2) Start dvd2svcd
3) Press the DVD-icon on the Conversion tab
4) Notice the "Aspect ratio" of the movie (16:9 or 4:3)
5) Select Go->Preview Video (still picture)
6) Go to the frameserver-tab
7) Select the "DetectBorders" avisynth script
8) Note the autocrop info on the preview (if the borders are not detected very well, use "New Frame"-button!)
On my test DVD the autocrop-info was Crop(4,76,713,423)
9) Select the "BilinearResizeWithoutBlackBars" avisynth script
10) Set the variable Is_16_9_movie to true (16:9 movie) or false (4:3 movie)
11) Edit the parameters of the Crop-line to match the ones of the autocrop information
12) ready!! Even if you cropped some pixels from left and right, the script calculates the correct size of the video, adds borders and the movie is ready to be converted.

Some additional hints:
- the script calculates the top and bottom borders to align the top of the picture to a multiple of 16 (macroblock optimisation). Thus, there can be different large borders on top and on bottom. If you do not like this behaviour, modify the BilinearResizeWithoutBlackBorders script:
Code:
...
5=aab_top = Round((576 - c.height) / 2)
...
Now the borders are always the same size.
- The autocrop-filter can be found here: here.
- Some discussions on this filter can be found here.

Cheers,

neopholus

Last edited by neopholus; 25th November 2002 at 10:54.
neopholus is offline   Reply With Quote
Old 25th November 2002, 04:26   #19  |  Link
jorel
Guest
 
Posts: n/a

fantastic idea!
  Reply With Quote
Old 25th November 2002, 10:36   #20  |  Link
neopholus
Registered User
 
Join Date: Nov 2002
Posts: 24
Hi,

just a question to DVD2SVCD: would it be possible to pass some more information from the gui to the avisynth-Scripts? Example: Information about the aspect ratio of a movie.... would eliminate a potential source of errors... just a question

Cheers,

neopholus
neopholus is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 18:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.