Video Converter: FAQ
From AVObjects Knowledge Base
(Difference between revisions)
Line 13: | Line 13: | ||
As follows: | As follows: | ||
− | * '''eVCR_Nearest''' - neighbours neirborn | + | * '''eVCR_Nearest''' - neighbours neirborn. ''Not very fine quality but very fast.'' |
− | * '''eVCR_Linear''' - linear interpolation (bilinear). | + | * '''eVCR_Linear''' - linear interpolation (bilinear). ''Middle quality, but rather fast.'' |
− | + | * '''eVCR_Cubic''' - cubic interpolation (bicubic). ''Fine quality.'' | |
− | eVCR_Cubic | + | * '''eVCR_Super''' - super sampling interpolation (bicubic in enlarge case). ''Fine quality.'' |
− | eVCR_Super | + | * '''eVCR_Lanczos''' - lanczos interpolation. ''Fine quality.'' |
− | eVCR_Lanczos | + | * '''eVCR_CubicWithMP''' - cubic interpolation for horizontal and weight-based with gauss distribution for vertical. ''Fine quality, recommended for resizing of interlaced video.'' |
− | eVCR_CubicWithMP | + | * '''eVCR_MPLinear''' - weight-based algorithm with linear distribution. ''Fine quality but not very fast.'' |
− | + | * '''eVCR_MPGauss''' - weight-based algorithm with gauss distribution. ''Fine quality but not very fast.'' | |
− | eVCR_MPLinear | + | * '''eVCR_MPBlackman''' - weight-based algorithm with blackman distribution. ''Fine quality but not very fast.'' |
− | eVCR_MPGauss | + | * '''eVCR_MPHamming''' - weight-based algorithm with hamming distribution. ''Fine quality but not very fast.'' |
− | eVCR_MPBlackman | + | |
− | eVCR_MPHamming | + | |
− | + | ||
'''How to use programmatically only those resize methods that I need?''' | '''How to use programmatically only those resize methods that I need?''' |
Revision as of 16:39, 15 January 2009
This is the FAQ page for the Video Converter DirectShow filter.
What CPU extensions are used?
We use MMX, SSE and SSE2 extensions with auto detection of supported features.
What is precision used?
Integer base algorithm.
What is the technique implemented in each resize method?
As follows:
- eVCR_Nearest - neighbours neirborn. Not very fine quality but very fast.
- eVCR_Linear - linear interpolation (bilinear). Middle quality, but rather fast.
- eVCR_Cubic - cubic interpolation (bicubic). Fine quality.
- eVCR_Super - super sampling interpolation (bicubic in enlarge case). Fine quality.
- eVCR_Lanczos - lanczos interpolation. Fine quality.
- eVCR_CubicWithMP - cubic interpolation for horizontal and weight-based with gauss distribution for vertical. Fine quality, recommended for resizing of interlaced video.
- eVCR_MPLinear - weight-based algorithm with linear distribution. Fine quality but not very fast.
- eVCR_MPGauss - weight-based algorithm with gauss distribution. Fine quality but not very fast.
- eVCR_MPBlackman - weight-based algorithm with blackman distribution. Fine quality but not very fast.
- eVCR_MPHamming - weight-based algorithm with hamming distribution. Fine quality but not very fast.
How to use programmatically only those resize methods that I need?
You can set them via via IVideoConverter2::SetConversionProps2().
How do I use the Video Converter to downscale HD material to SD?
For this purpose you need to specify the CONVERTER_PROPS2 structure:
CONVERTER_PROPS2 cnvProps2; ::ZeroMemory( &cnvProps2, sizeof(cnvProps2) ); cnvProps.eInterlaceIn = eVCI_Auto; // Or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual setting of interlace. cnvProps.nAspectIn = 0; // For use VideoInfoHeader2 flags or e.g. MAKELPARAM( 16, 9 ) for 16:9 AR. cnvProps.eInterlaceIn = eVCI_Auto; // Or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual setting of interlace. cnvProps.szOutput.cx = 720; cnvProps.szOutput.cy = 576; cnvProps.nAspectOut = MAKELPARAM( 4, 3 ); cnvProps.eKeepAspect2 = eVCKA_LetterBox; // Or eVCKA_Crop for crop or eVCKA_None for not maintain AR. cnvProps.eResize = eVCR_CubicWithMP; // See eVCResize for other interplation algorithms. cnvProps.eFieldProcess = eVCFP_Auto; // See eVCFieldProcess for other options. cnvProps.optimization = eThreadPerProc; // Or eOneThread - for work in 'sync' mode. cnvProps.dwUseCPUMask = -1; // Use all available cores/CPUs. int nMask = VC_ALL_MASK; cpVideConverter->SetConversionProps2( &cnvProps, &nMask );