VideoHelp Forum




+ Reply to Thread
Page 1 of 2
1 2 LastLast
Results 1 to 30 of 34
  1. Since I don't have the necessary knowledge to apply ffdshow tweaks, I'm looking for the best media upscale filters for software media players. So far i was using my Playstation 3 to play standard definition .avi and .mp4 files, and it is being said that it has one of the best upscale algorithms. I will be migrating my media playback to my laptop that i will connect to my TV, so i will require the best filters for this job. Any suggestions?
    Quote Quote  
  2. Only Sinc - perfect from mathematical point of view.
    https://en.wikipedia.org/wiki/Sinc_filter
    Quote Quote  
  3. How do i implement it though? I've also read of WinDVD having the best filters. But that was from a post in 2009. Are its filters still that good?
    Quote Quote  
  4. I need to understand how YOU define best for upscaled video. Without definition for best i can say that there is no alternative for Sinc - Some approximation for Sinc are lanczos class filters (but also other Sinc windowed filters) http://svn.int64.org/viewvc/int64/resamplehq/doc/kernels.html , look at this http://jeanbruenn.info/2011/10/30/upscaling-in-avisynth-comparison-of-resizers/ .

    Seems that good (at some conditions) upscale resizer is nnedi3 (but this type resizers is totally different class than Sinc).

    So if You search for some visual, high quality resizer go for nnedi3 https://forum.videohelp.com/threads/353535-How-to-upscale-with-Nnedi3 - this one is particularly interesting - https://forum.videohelp.com/threads/353535-How-to-upscale-with-Nnedi3?p=2221642&viewful...=1#post2221642 - read it carefully.

    http://www.general-cathexis.com/interpolation/index.html
    Last edited by pandy; 21st Mar 2013 at 06:51.
    Quote Quote  
  5. For realtime playback most players will be stuck with whatever your graphics card does for upscaling. Usually limited to nearest neighbor, bilinear, and bicubic. I doubt the PS3 does anything more than bicubic for scaling. It may also perform some deblocking and deringing before upscaling.
    Quote Quote  
  6. Hardware resizers more or less follow windowed Sinc path (usually implemented as polyphase filter) lanczos is quite common nowadays.
    Quote Quote  
  7. The PS3 uses a 2006 era Nvidia graphics chip. It's probably limited to Bicubic at best.
    Quote Quote  
  8. PS3 use Cell thus some edge detection (or similar non linear) algorithm is used.

    Polyphase resizers are standard from 2005 or even earlier (usually somewhere between 5 and 7 taps)
    Quote Quote  
  9. Originally Posted by pandy View Post
    PS3 use Cell thus some edge detection (or similar non linear) algorithm is used.
    I know it has cell processors but do you know for a fact that they are used in video playback?

    In any case, the OP is using a laptop and realtime playback. His choices in most players will be limited to what the graphics card supplies: nearest neighbor, bilinear, bicubic.

    Ah, I just noticed that ffdshow has the ability to resize before giving the frame buffer to the graphics card. I suggest the OP just try the different filters and see which he prefers. Of course, he'll have to use a player that uses ffdshow.
    Last edited by jagabo; 21st Mar 2013 at 07:46.
    Quote Quote  
  10. PS3 use software decoder, besides also fancy trick mode with additional video enhancing filters tend to guess that all advanced video processing is performed in software - never done personally any subjective quality tests for DVD upscale on PS3 thus lack of data. Based on various information's seems that software video processing is performed not only for video but also for games (like MLAA) but Sony information policy is quite strict... (no info).

    btw as ffdshow support various resize methods it is up to OP to check which method is best for him.
    Quote Quote  
  11. And a note for the OP: sharper resizers aren't necessarily better than softer resizers. Very sharp material may develop oversharpening halos. Material already with oversharpening halos will have those halos exacerbated. Material with DCT ringing artifacts and other pixel noise will have those artifacts enhanced.
    Quote Quote  
  12. Formerly 'vaporeon800' Brad's Avatar
    Join Date
    Apr 2001
    Location
    Vancouver, Canada
    Search PM
    I have screengrabs of PS3 upscaling compared to Lanczos if it will help the discussion. One is here.
    Quote Quote  
  13. Originally Posted by vaporeon800 View Post
    I have screengrabs of PS3 upscaling compared to Lanczos if it will help the discussion. One is here.
    I only see one picture. Upscaled by the PS3 from what size? 720p? How was the image captured? Your Avermedia HDMI capture card? Full white lines on a black background isn't a good indicator since you can't see over sharpening halos. I'd love to see more. Especially SD to HD upscaling since that's where it's most important.

    A simple experiment for the OP: download bwaaps3.png from vaporeon800's link (be sure to get the full 1920x1080 image, not the thumbnail):

    Click image for larger version

Name:	bwaaps3.png
Views:	1431
Size:	151.9 KB
ID:	16861

    Put this script in the same folder as the png. Open the script with VirtualDub and step through the script frame by frame to see the different scaling filters. I first reduce his image to DVD resolution and lower the contrast (leaving room for over sharpening halos). The scale the image up to 1080p using various algorithms in AviSynth. You'll need the nnedi3 package for AviSynth. If you don't have it, just comment out all the v4 and nnedi3 references and compare the others.

    Code:
    ImageSource("bwaaps3.png") 
    Crop(240,0,-240,-0)
    BicubicResize(720,480)
    
    ConvertToYV12()
    #ColorYUV(cont_y=256000) # enable this for very sharp edges
    ColorYUV(cont_y=-64, off_y=25) # reduce contrast
    
    org=AddBorders(last,0,0,1440-width, 1080-height).Subtitle("original")
    v0=BilinearResize(1440,1080).Subtitle("bilinear")
    v1=BicubicResize(1440,1080).Subtitle("bicubic")
    v2=LanczosResize(1440,1080).Subtitle("lanczos")
    v3=SincResize(1440,1080).Subtitle("sinc")
    v4=nnedi3_rpow2(4, cshift="BicubicResize", fwidth=1440, fheight=1080).Subtitle("nnedi3")
    
    Interleave(org,v0,v1,v2,v3,v4)
    Last edited by jagabo; 21st Mar 2013 at 18:13.
    Quote Quote  
  14. OK so this script will alternate between different resizers? It will first give me v0 then v1 etc, so i will look at what each resizer does?

    A couple of questions before i try this.

    -Is there a portable version of avisynth? I don't like to run installables.
    -If i use avisynth for resizing, will i have to manually create a script for every file i want to run?
    Quote Quote  
  15. Originally Posted by therock003 View Post
    OK so this script will alternate between different resizers? It will first give me v0 then v1 etc, so i will look at what each resizer does?
    Yes.

    Originally Posted by therock003 View Post
    -Is there a portable version of avisynth?
    No.

    Originally Posted by therock003 View Post
    If i use avisynth for resizing, will i have to manually create a script for every file i want to run?
    Yes. I'm not suggesting you do this routinely. Just as an experiment to see what different resizing algorithms look like. Having them interleaved like this makes it very easy to compare with an editor that lets you flip back and forth between frames of a video -- like VirtualDub where you can use the left/right arrow keys to step backward and forward frame by frame. Replace ImageSource() with AviSource() to do the same with AVI files.
    Quote Quote  
  16. On what intervals will it change the image? I mean will the resizers be significantly different, for me to notice the transitions?

    I also forgot to ask previously, will i need to calibrate and create a color profile for the graphics card for my TV? I dont have any calibrator or any technical tools like that, so i hope it wont be necessary.
    Quote Quote  
  17. Originally Posted by therock003 View Post
    On what intervals will it change the image? I mean will the resizers be significantly different, for me to notice the transitions?
    Since the original image was 1920x1080 but contained a pillarboxed test pattern I cropped it down to 1440x1080 (4:3). Then I resized it to 720x480 to simulate a 4:3 NTSC DVD source. Then upscaled to 1440x1080 to show what a 4:3 DVD upscaled to 1080p would look like.

    Originally Posted by therock003 View Post
    I also forgot to ask previously, will i need to calibrate and create a color profile for the graphics card for my TV? I dont have any calibrator or any technical tools like that, so i hope it wont be necessary.
    It depends on how picky you are. I'm not obsessed with getting a perfect picture. Since TV viewing is quite subjective (ie, the appearance of the picture depends on room lighting that changes over the day, with what lights are on/off, etc.). I usually set the computer to neutral settings then adjust the TV's brightness/contrast settings to get the correct black/bright levels (with all the TV's artificial automatic gain controls disabled). I then adjust tint and saturation controls to get approximately the right settings. It helps to have calibration test patterns and color filter glasses.

    I suggest you not worry about it until you get your system set up. If you don't like the way the picture looks make some adjustments.
    Last edited by jagabo; 23rd Mar 2013 at 06:33.
    Quote Quote  
  18. Originally Posted by jagabo View Post
    Originally Posted by therock003 View Post
    On what intervals will it change the image? I mean will the resizers be significantly different, for me to notice the transitions?
    Since the original image was 1920x1080 but contained a pillarboxed test pattern I cropped it down to 1440x1080 (4:3). Then I resized it to 720x480 to simulate a 4:3 NTSC DVD source. Then upscaled to 1440x1080 to show what a 4:3 DVD upscaled to 1080p would look like.
    No i meant the intervals as to how quickly it changes from one resizer to another. I tried running your script, and it seems it changes in less than a second, and i dont know what is going on. Is there any way you can pause the resizers so lets say it stays in Billinear for 3 seconds, then on Bicubi for another 3, etc, so i have the image appear for 3 sexonds on each resizer? BTW i downloaded nnedi3 and put it in plugin folder, but do i need sinc as well? Cause it displayed an error that it didnt recognized sincresizer. I coomented v3 and sinc out.

    Also why does the image appears grey, and pausing doesnt stop the resizers? I'm a beginner into Avisynth, and dont know anything about how it operates.
    Quote Quote  
  19. Originally Posted by therock003 View Post
    No i meant the intervals as to how quickly it changes from one resizer to another.
    It changes frame to frame. ImageSource() defaults to 24 fps. So the resizer changes 24 times a second. Use VirtualDub step through frame by frame, not a media player.

    Originally Posted by therock003 View Post
    Also why does the image appears grey
    I reduced the contrast so you could see oversharpening halos. with the original full black, full white image you couldn't see the halos. Here's a sample LanczosResize(), further enlarge 4x with a nearest neighbor filter so you can see individual pixels:

    Click image for larger version

Name:	lancz.png
Views:	17854
Size:	7.0 KB
ID:	16868

    Notice how there is a dark ring around the bright circle? That's an oversharpening halo. With a totally black background you wouldn't be able see that halo because the background can't get any darker than black.

    Originally Posted by therock003 View Post
    and pausing doesnt stop the resizers?
    It stops on whichever resizer is active for that particular frame.
    Last edited by jagabo; 23rd Mar 2013 at 07:17.
    Quote Quote  
  20. Formerly 'vaporeon800' Brad's Avatar
    Join Date
    Apr 2001
    Location
    Vancouver, Canada
    Search PM
    Are there test patterns specifically designed to test upscaling? If some are posted I can do 10-bit 4:2:2 HDMI captures from PS3.
    Quote Quote  
  21. Originally Posted by jagabo View Post
    Originally Posted by therock003 View Post
    If i use avisynth for resizing, will i have to manually create a script for every file i want to run?
    Yes. I'm not suggesting you do this routinely. Just as an experiment to see what different resizing algorithms look like. Having them interleaved like this makes it very easy to compare with an editor that lets you flip back and forth between frames of a video -- like VirtualDub where you can use the left/right arrow keys to step backward and forward frame by frame. Replace ImageSource() with AviSource() to do the same with AVI files.
    Once i have made my mind about an upscale how can i start using it? Lets say i want to use nnedi3 for every file. Will i have to create a script for every file, or can i insruct media player classic to upscale with nnedi some other way?

    Also i was doing some research on shaders. Is this something like the ffdshow filters? I found this topic. Applies this custom shader with sharpen complex 2 and also added a denoise filter on top.

    http://gsngaming.com/topic/7206-media-player-classic-home-cinema-shaders/

    Is this considered useful, or am i just trying stuff at random?
    Quote Quote  
  22. I meant that script simply as an example of what different upscaling filters give. I don't think there's any practical way to use AviSynth filters to upscale in media players. Nnedi3 is especially problematic as it is very slow and only upscales by powers of 2.

    It's possible to add AviSynth filters in ffdshow's processing:

    Click image for larger version

Name:	ffdshow.jpg
Views:	13121
Size:	42.4 KB
ID:	16896

    Then you have to force your player to use ffdshow. Either by disabling the players internal codecs and other system installed codecs, or by enabling ffdshow's "Raw Video" decoder. Even so this isn't really practical. For example, in the above pictured image, any 4:3 video would be scaled to 16:9, the wrong aspect ratio. You'd have to change the filter for each video. I suppose it's possible to write a script that detects the aspect ratio of the source and scales appropriately (never tried it).

    MPCHC's shader system isn't compatible with AviSynth filters as far as I know.
    Quote Quote  
  23. I believe that ffdshow have various resizers available internally and they can be selected independently for Luminance and for Chrominance - going for Avisynth resize seem to be not very practical (perhaps only for comparison).
    Give ffdshow a chance - it is designed for realtime processing, Avisynth is more for offline processing.
    Quote Quote  
  24. Originally Posted by pandy View Post
    I believe that ffdshow have various resizers available internally
    Yes, but nnedi3_rpow2 isn't one of them. At least ffdshow's built in resizing is smart enough to maintain aspect ratios.
    Last edited by jagabo; 25th Mar 2013 at 07:55.
    Quote Quote  
  25. Originally Posted by jagabo View Post
    Originally Posted by pandy View Post
    I believe that ffdshow have various resizers available internally
    Yes, but nnedi3_rpow2 isn't one of them. At least ffdshow's built in resizing is smart enough to maintain aspect ratios.
    Avisynth (offline) and nnedi3_rpow2 = OK
    ffdshow (realtime) and nnedi3_rpow2 = NOK
    Quote Quote  
  26. Originally Posted by pandy View Post
    ffdshow (realtime) and nnedi3_rpow2 = NOK
    And I already told him that.
    Quote Quote  
  27. Originally Posted by jagabo View Post
    Originally Posted by pandy View Post
    ffdshow (realtime) and nnedi3_rpow2 = NOK
    And I already told him that.
    Then sorry - perhaps I've miss this somewhere.
    Quote Quote  
  28. I read somewhere that MadVR with LAV filters is one of the best options out there for MPC-HC, but i tried following the guide and after i registered madvr it still shows as unavailable. I'm running win 8 64 and mpc-hc x64. Is MADVR only intended for 32 bit systems and apps?
    Quote Quote  
  29. Formerly 'vaporeon800' Brad's Avatar
    Join Date
    Apr 2001
    Location
    Vancouver, Canada
    Search PM
    So any suggestions for good test patterns or content to evaluate upscaling?
    Quote Quote  
  30. Originally Posted by vaporeon800 View Post
    So any suggestions for good test patterns or content to evaluate upscaling?
    Resolution test patterns usually don't work well for testing upscaling algorithms. Upscaling will exacerbate moire patterns.

    Click image for larger version

Name:	720x480.png
Views:	12158
Size:	104.4 KB
ID:	17251

    One good test is to start with a good Blu-ray disc and a DVD of the same movie (or create your own SD clip by downscaling the Blu-ray). Then comparing the upscaled DVD to the Blu-ray source.

    Infognition ran some comparisons a while back:

    http://www.infognition.com/articles/video_resize_shootout.html

    But beware, their main intent was to make their upscaler look good. They invested no time in optimizing the other upscalers. They often chose poor settings for the other upscalers (for example, VirtualDub's simple bicubic algorithm rather than its precise bicubic algorithm).
    Quote Quote  



Similar Threads

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