VideoHelp Forum
+ Reply to Thread
Page 2 of 5
FirstFirst 1 2 3 4 ... LastLast
Results 31 to 60 of 149
Thread
  1. VDub should have given you the same error message. Anyway, do you have all the needed DLLs to make SRestore work? If they don't autoload, then stick them into the script the way you did the DGDecode.dll, with a 'LoadPlugin' line.

    http://avisynth.nl/index.php/Srestore

    See if the enclosed DLL gets it to work:
    Image Attached Files
    Quote Quote  
  2. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    I did just that but I am still getting this error message. take a look at my screenshot.

    I have also posted a screenshot of my plugins so you can see all the plugins I have.


    My script now looks like this


    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Srestore.avsi")
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    Image Attached Thumbnails Click image for larger version

Name:	screenshot1.jpg
Views:	332
Size:	338.0 KB
ID:	20204  

    Click image for larger version

Name:	plugins.jpg
Views:	352
Size:	270.4 KB
ID:	20205  

    Quote Quote  
  3. Code:
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll
    should be
    Code:
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll")
    just by the syntax, also I'm not sure if masktools really is a C-Plugin,...
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  4. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Corrected it, error message still there. this is my script now

    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Srestore.avsi")
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    Quote Quote  
  5. 1. mt_masktools normally isn't a C-Plugin, therefore you should use LoadPlugin not LoadCPlugin



    2. also the error message should have changed and you might still be missing plugins which sRestore is using, see: http://avisynth.nl/index.php/Srestore
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  6. Normal dll and AVSI filters that are in AviSynth's plugins folder are loaded automatically. CPlugins like Yadif need to be explicitly loaded with LoadCPlugin(). You shouldn't need to explicitly import dgdecode, mt_masktools, and srestore.

    A few people have complained that they had to manually import filters even though they were already in the plugins folder. There may have been some other configuration problems in those cases.
    Quote Quote  
  7. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Hey I finally did it! It works!

    I couldn't thank you guys enough. I just have some questions though.


    1. What is the best possible setting for 'video encoding' with xvid4psp? My intent would be to watch movies on my computer and television via my wd media player.


    2. What's the reason I have to put the file through DGIndex to create the d2v file? Will it not work if I replace the directory in the script where the movie is to the mpg file itself? As in point it straight to the root file?


    3. The file also opens in virtual dub, but virtual dub can only output to avi. Would you choose virtual dub and output the file to high quality xvid or is it better to stick with xvid4psp and out to mkv?


    4. here is what I created with xvid4psp, take a look have I hit it on the nailk or is there any other filters or settings that can improve it further? You can see the blur is totally gone, there are extremely faint artifacts around the edges, this doesn't bother me too much but I noticed on one of the samples attached by one of you guys these artifacts weren't there.
    Image Attached Files
    Last edited by Acehit; 26th Sep 2013 at 07:00. Reason: forgot something
    Quote Quote  
  8. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Acehit, usually you would load a .dll plugin with just LoadPlugin(...). There are a few .dll's (and I mean barely a few) that are a different type of C-language compilation; these are loaded with LoadCplugin(...).

    The masktools.dll's (there are several versions, with different names) should load automatically if they are in your plugins folder. The few "C" plugins that I mention don't have the code that loads automatically, which is why LoadCplugin is required for those few.

    Selur mentioned that sRestore might use some support plugins. Masktools is usually the only other nplugin used by sRestore, but 3 more are mentioned. Likely you won't need the other three for most deblending operations, but just in case this video is making sRestore doing extra work I've attached a .zip with the other 3 requirements below. The three dll's in the .zip are TIVTC.dll, RemoveGrainSSE2.dll, and Average.dll. Copy them into your plugins folder. If you do any work with vids that were originally mastered from film, you are likely to run into TIVTC.dll in the future anyway.

    At first, be patient. With Avisynth we've all been there, done that.

    When you first start using Avisynth, the biggest hassle isn't learning to write scripts. That gets pretty easy. The worst hassle is getting all the plugins straightened out. Best thing to do is to keep up with the documentation that comes with most (but not all) plugins. They always list those "extra's" that are sometimes hard to find. Later, you can trace back and find the original full-package downloads for some of these plugins. For now, you just need the dll's.
    Last edited by sanlyn; 19th Mar 2014 at 11:34.
    Quote Quote  
  9. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Great stuff, thank you I have put them all in my plugins folder, do I now need to do anything further with my script? As it it works in both virtual dub and xvid4psp.

    Here's how it looks at the mo


    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Srestore.avsi")
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    Quote Quote  
  10. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by Acehit View Post
    Great stuff, thank you I have put them all in my plugins folder, do I now need to do anything further with my script? As it it works in both virtual dub and xvid4psp.

    Here's how it looks at the mo


    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Srestore.avsi")
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    an "avsi" loads automatically, just like most dll's. You would use Import() for "avs" scripts. Probably won't hurt to leave the statement that way, but if it gives you a problem just comment the line out with a "#" in front of it.

    DGDecode and mt_masktools are also automatic loaders. Usually, people would explicitly use LoadPlugin() if the plugin is in a different location than the plugins folder or if a specific version of the plugin is required. But LoadPlugin() won't hurt.
    Last edited by sanlyn; 19th Mar 2014 at 11:35.
    Quote Quote  
  11. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    When you say autoload, does that mean I do not have to input a line in the script for that plugin to work? Or is it a case that I have to put a line, I just use the LoadPlugin(...)
    Quote Quote  
  12. Autoload means they are automatically loaded every time AviSynth start. You don't have to use Import() or LoadPlugin(). Cplugins never autoload. Your script can be reduced to:

    Code:
    LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    Quote Quote  
  13. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Yes but I still need the following right?

    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mt_masktools.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Srestore.avsi")
    Quote Quote  
  14. No, you don't need those lines. Those filters will automatically be loaded by AviSynth every time it starts. That's the whole point of putting them in the plugins folder, rather than somewhere else. And if you create an AVSI script in your plugins folder with the line:

    Code:
     LoadCPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\yadif.dll")
    You won't need to use LoadCPlugin() in your script for Yadif either. Your script could then be reduced to:

    Code:
    MPEG2Source("C:\Documents and Settings\Administrator\Desktop\Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    And if the script is in the same folder as the D2V file you can further reduce it to:

    Code:
    MPEG2Source("Bol Radha Bol makemkv sample-001_track1_eng.d2v")
    Yadif(Mode=1)
    Srestore()
    Quote Quote  
  15. Originally Posted by Acehit View Post
    1. What is the best possible setting for 'video encoding' with xvid4psp? My intent would be to watch movies on my computer and television via my wd media player.
    There's no simple answer to this. It's always a compromise of encoding time vs. visual quality vs. file size.

    Originally Posted by Acehit View Post
    2. What's the reason I have to put the file through DGIndex to create the d2v file?
    MPG compression internally stores frames out of order. It can be hard for a decoder to get the right frame when seeking randomly within the file. Building the index makes it easier and faster to get the right frame every time. You can open an MPG file directly with DirectShowSource() but that often leads to problems with the wrong frame being displayed while editing, filtering, or encoding.

    Originally Posted by Acehit View Post
    3. The file also opens in virtual dub, but virtual dub can only output to avi. Would you choose virtual dub and output the file to high quality xvid or is it better to stick with xvid4psp and out to mkv?
    h.264 delivers better quality than Xvid at the same bitrate (file size). I'd use x264 rather than Xvid since your player supports this. It's possible to encode to other containers with external codecs and muxers with VirtualDub. But that's another round of installation headaches. Personally, I use the x264 command line encoder via a batch file for most of my encoding.

    Originally Posted by Acehit View Post
    4. here is what I created with xvid4psp, take a look have I hit it on the nailk or is there any other filters or settings that can improve it further? You can see the blur is totally gone, there are extremely faint artifacts around the edges, this doesn't bother me too much but I noticed on one of the samples attached by one of you guys these artifacts weren't there.
    QTGMC is a better deinterlacer than Yadif. You'll have to locate and install a bunch more filters to use it though. And it's much slower.

    There is tons of other stuff you could do. Deblocking, deringing, dehaloing, noise reduction, color and levels correction, etc.
    Quote Quote  
  16. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    jagabo I did what you said, I reduced the script to what you see below, the problem I face now is that I get an error message in virtual dub. The message says 'avisynth open failure: script error: there is no function names "yadif"


    Otherwise if I insert all those lines then it works. My video file and the script file are both on my desktop. So technically they are in the same desktop folder. Unless you mean I have to make a seperate folder and put them both in there.


    MPEG2Source("Bol Radha Bol makemkv sample-001_track1_eng.d2v")Yadif(Mode=1)Srestore()
    Quote Quote  
  17. So the script in post 42 doesn't work?
    Quote Quote  
  18. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Precisely. The script only works if it looks like #40.

    I also noticed that the following line:-


    Yadif(mode=1, order=1)


    Produces better results than...


    Yadif(Mode=1)


    I don't know why it just does. With the first line you can still see a very faint blur, the second takes it away to the point where you need eagle eyes to actually notice it.
    Quote Quote  
  19. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Probably because yadif assumes the default field order from Avisynth, which is BFF. "Order=1" tells yadif that the correct field order for your video is TFF.

    You can accomplish the same thing this way:
    AssumeTFF().Yadif(mode=1)
    Last edited by sanlyn; 19th Mar 2014 at 11:35.
    Quote Quote  
  20. Originally Posted by Acehit View Post
    Precisely. The script only works if it looks like #40.
    Then there's something not quite right with your AviSynth install. Did you install AviSynth yourself or was it installed as part of another program? Check the Registry for hkey_local_machine\software\wow6432node\avisynth\p lugindir2_5 -- is it set to C:\Program Files (x86)\AviSynth 2.5\plugins ?

    Originally Posted by Acehit View Post
    I also noticed that the following line:-

    Yadif(mode=1, order=1)

    Produces better results than...

    Yadif(Mode=1)
    You didn't use info=3 in your Mpeg2Source line so AviSynth assumed your video was bottom field first. order=1 in Yadif is telling it to treat the video as top field first. So your video is probably TFF. You could also use AssumeTFF() before calling Yadif.

    So

    Code:
    Mpeg2Source("filename.d2v")
    AssumeTFF()
    Yadif(mode=1)
    or

    Code:
    Mpeg2Source("filename.d2v", info=3)
    Yadif(mode=1)
    should work the same as:

    Code:
    Mpeg2Source("filename.d2v")
    Yadif(mode=1, order=1)
    Quote Quote  
  21. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by Acehit View Post
    3. The file also opens in virtual dub, but virtual dub can only output to avi. Would you choose virtual dub and output the file to high quality xvid or is it better to stick with xvid4psp and out to mkv?
    I would echo jagabo: h264 gives better results, with many encoding options. I encoded the final version of my working AVI with TMPGenc Mastering Works 5's x264 encoder. Command-line x264 is another choice, and there are others.I also use TX264.

    Originally Posted by Acehit View Post
    4. here is what I created with xvid4psp, take a look have I hit it on the nailk or is there any other filters or settings that can improve it further? You can see the blur is totally gone, there are extremely faint artifacts around the edges, this doesn't bother me too much but I noticed on one of the samples attached by one of you guys these artifacts weren't there.
    The two images below illusrtrate the improvements one can make with a few more plugins. The video I posted was deinterlaced with QTGMC (and don't worry about that yet. You have enough headache for now). QTGMC does some denoising and helps get smoother motion, even with this video which has some real problems.

    The image below is frame 1311, the original deinterlace with no other plugins (top) and after using a few plugins for edge cleaning (bottom). In the top image you see faint edge and not-so-faint edge halos, rough edges, and some edge ghosting. Remnants of some of the edge ghosting is still there but more difficult to see (pesky little devils, difficult to clean). You see two left-edge ghosts in the man on the left, the back of the woman's hair on the right, and slightly in the background window frame. Left-click on the image to see it full sized in the forum viewer (and the forum viewer does darken images somewhat. No one knows why).
    Image
    [Attachment 20212 - Click to enlarge]


    I some edge cleaners in Avisynth, then converted to RGB so I could use the exorcist anti-ghost filter in VirtualkDub and Color Mill for some slight corrections. I used two copies of exorcist: the first was a lighter setting for the darker edge ghost, the second was a darker filter fore the brighter, inner edge ghost.

    This is the script I used after deinterlace and restore, which I performed as a separate step (because QTGMC and sRestore together run too damn slow for all these plugins at once). Stab() was used to help calm all the frame hopping somewhat. Also used some plugins to restore the film's fine-grain and avoid banding effects in skin tones and the walls in the background. An example of how far you can go. One could go further.

    Code:
    #=== Avisynth plugins used:
    #- Stab.avs
    #- MCTemporalDenoise.avsi
    #- HQdering.avs
    #- DeHalo_alpha.avsi
    #- WarpSharp.dll
    #- DeBlock.dll
    #- GradFun2DBmod.avsi
    #- AddGrainC.dll
    
    Import("D:\AviSynth 2.5\plugins\Stab.avs")
    Import("D:\AviSynth 2.5\plugins\HQdering.avs")
    
    AviSource("E:\forum\acehit\B\mkvmerge_Step1.avi")
    COlorYUV(cont_y=-25,off_y=-7,gamma_y=-10)
    Stab()
    MCTemporalDenoise(settings="Low")
    HQdering()
    DeHalo_Alpha()
    MergeChroma(aWarpSharp2(depth=30))
    # ===== resize for original 1.875:1 DAR =====Crop(6,70,-18,-68)
    Spline36Resize(720,456)
    AddBorders(0,12,0,12) DeBlock()
    GradFun2DBmod(thr=1.8,mask=false)
    AddGrainC(2.0,2.0)
    ConvertToRGB32(matrix="Rec601",interlaced=false)
    Last edited by sanlyn; 19th Mar 2014 at 11:35.
    Quote Quote  
  22. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Jeeeese! I'll have to sit down and really get my head into gear for that one. However that is what I am aiming for.

    When I import the video file in DGIndex, before I save it as a d2v file do I need to apply anything in this software? As in run any specific settings, filters or anything like that. Or is it purely what I think which is to import it and just save the project without doing anything extra in between?
    Quote Quote  
  23. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Basically you need the d2v project file to open the vid in Avisynth for further work. The MPEG2Source() function is in DGDecode.dll. Yoiu can use a few built-in filters with that function, but personally I'm more comfortable with Avisynth's plugins. The filter descriptions and examples using them are in the DGDecode manual that comes with the DGMPGDec package. You would have that manual in the location where you downloaded the plugin.

    I didn't use MPEG2Souce this time. Used ffms2 instead:

    Code:
    #=== Avisynth plugins used:
    #- ffms2.dll
    #- ffms2.avsi
    #- QTGMC-3.32.avsi
    #- sRestore.avsi
    
    LoadCplugin("D:\AviSynth 2.5\plugins\ffms2.dll")
    ffvideosource("E:\forum\acehit\B\Bol Radha Bol makemkv sample-001.mkv")
    AssumeTFF().QTGMC(preset="medium",TR1=2,TR2=2,sharpness=0.8)
    sRestore()
    # ----- Save as YV12 (Lagarith "fast recompress") -----
    Last edited by sanlyn; 19th Mar 2014 at 11:36.
    Quote Quote  
  24. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Sanlyn on that example that you showed in #51. Is that output an .avi or a .mkv file? It's just that if its a avi, I thought that it would be better to output it as mkv file through xvid4psp.
    Quote Quote  
  25. The output of any AviSynth script is raw uncompressed video frames. It's the editor or encoder that determines what container and codecs are used to create a file.
    Quote Quote  
  26. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    In that exmaple in #51. The first example where there is ghosting and noise. Is there anyway I can eliminate this and produce exactly the same results using virtualdub filters?
    Quote Quote  
  27. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    actually sorry my mistake, I just read sanlyn used the ghost filter and colour mill filter in virtual dub, so ill look out for those. How do I edge clean with avisynth can someone talk me through that one?
    Quote Quote  
  28. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    The step I posted in #53 does three things: (a) opens an mkv or other input source using ffms2 -- or you can use MPEG2Source or another utility to access the source. This step opens, decompresses, and decodes the encoded mkv. (b) QTGMC deinterlaces the decoded video. You can use yadif instead, and there are other deinterlacers. (c) sRestore removes dupe frames to restore the original fps. In this case the output was 25FPS progressive decoded video in an AVI container, which I saved in VirtualDub with lossless Lagarith in the original YV12 colorspace. This was for later cleanup and lossless processing in Avisynth, and finally in VirtualDub.

    After all processing was finished, I still had a lossless Lagarith AVI. I input that AVI into my encoder app, added the audio, and encoded to h264 using TMPGenc's MW5 x264 app. I could have used other encoders.
    Last edited by sanlyn; 19th Mar 2014 at 11:36.
    Quote Quote  
  29. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Hm.Lots of questions here.

    Originally Posted by Acehit View Post
    Sanlyn on that example that you showed in #51. Is that output an .avi or a .mkv file? It's just that if its a avi, I thought that it would be better to output it as mkv file through xvid4psp.
    Jagabo had a good answwer for that. I'm not a great fan of Xvid, and some of my players won't touch it. I tend to stick with two standards: DVD and h264. The frames shown were captured from the AVI's in VirtualDub.

    Originally Posted by Acehit View Post
    In that example in #51. The first example where there is ghosting and noise. Is there anyway I can eliminate this and produce exactly the same results using virtualdub filters?
    Not exactly. In particular, halos and edge ringing are tough to handle in VirtualDub. But their anti-ghost filter (exorcist) is very handy. Avisynth has its own version, but it's much more difficult to work with. Ghosts and ringing (halos) are similar, but not quite the same thing. DCT ringing is best handled with Avisynth plugins in the vid's original YUV colorspace (usually YV12).

    Originally Posted by Acehit View Post
    actually sorry my mistake, I just read sanlyn used the ghost filter and colour mill filter in virtual dub, so ill look out for those. How do I edge clean with avisynth can someone talk me through that one?
    You have no idea how complicated the answer is. Edges and other detail were handled min that script in several ways. QTGMC cleans some of it, MCTemporalDenoise cleaned a little more. I used three plugins specifically for ringing (but not for the ghosting) and to clarify and tighten-up edges:
    HQdering.avsi
    DeHalo_alpha.avsi
    aWarpSharp2, a function in warpsharp.dll and the newer aWarpSharp.dll.

    All of the plugins mentioned require a dozen-plus support files, most of which are also stand-alone filters. In fact you can set up MCTemporalDenboise to use deHalo_Alpha for some help in edge cleaning.

    Before you get into a mad rush to use some of this stuff, I would caution that getting into heavy Avisynth work takes time -- but if I can do it anyone can, especially with jagabo and a few other pro's to drag me kicking and screaming into it!. I used VirtualDub exclusively for years, until I got into a video project that VDub simply couldn't handle. You might want to first look into the possibilities. I suggest that you browse a web page of a ton of Avisynth filtering samples. The website is dedicated to anime, but 90% of the filters shown can be used anywhere. In fact I used two of them on your video (DeBlock and GradFun2DBmod). Take a look at this page and scroll down thru the samples (you can click on various links in the samples to see different results in the images): http://www.animemusicvideos.org/guides/avtech31/post-qual.html .You'll see examples of what ringing, rainbows, aliasing, bad edges, banding, block noise, etc., really look like.
    Last edited by sanlyn; 19th Mar 2014 at 11:36.
    Quote Quote  
  30. Member
    Join Date
    Aug 2010
    Location
    Leicester, England
    Search PM
    Ok since we have established that on my script, some of the files will not load automatically including the ones that should because as I mentioned already only my initial script works, the shortened one doesn't work. It will only work if I write a line for that plugin.

    Does this mean in my individual case I have to write a line for every plugin that I want to use?

    I noticed that when I load the script in virtual dub, it actually says on the bottom of the application, 4 filters in use or something to that effect.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!