Video Converter: FAQ

From AVObjects Knowledge Base
(Difference between revisions)
Jump to: navigation, search
('''How do I use the Video Converter to downscale HD material to SD?''')
 
(14 intermediate revisions by one user not shown)
Line 1: Line 1:
 
This is the FAQ page for the [[Video Converter]] DirectShow filter.
 
This is the FAQ page for the [[Video Converter]] DirectShow filter.
  
'''What CPU extensions are used?'''
+
==='''What CPU extensions are used?'''===
  
 
We use MMX, SSE and SSE2 extensions with auto detection of supported features.
 
We use MMX, SSE and SSE2 extensions with auto detection of supported features.
  
'''What is precision used?'''
+
==='''What is precision used?'''===
  
 
Integer base algorithm.
 
Integer base algorithm.
  
'''What is the technique implemented in each resize method?'''
+
==='''How to use programmatically only those resize methods that I need?'''===
 
+
As follows:
+
 
+
<source lang="cpp">
+
eVCR_Nearest, // Neighbours neirborn.
+
eVCR_Linear, // Linear interpolation (bilinear).
+
eVCR_Cubic, // Cubic interpolation (bicubic).
+
eVCR_Super, // Super sampling interpolation (bicubic in enlarge case).
+
eVCR_Lanczos, // Lanczos interpolation.
+
eVCR_CubicWithMP, // Cubic interpolation for horizontal and weight-based with gauss distribution for vertical;
+
                  // useful for resize of interlaced video.
+
eVCR_MPLinear, // Weight-based algorithm with linear distribution.
+
eVCR_MPGauss,  // Weight-based algorithm with gauss distribution.
+
eVCR_MPBlackman, // Weight-based algorithm with blackman distribution.
+
eVCR_MPHamming // Weight-based algorithm with hamming distribution.
+
</source>
+
 
+
'''How to use programmatically only those resize methods that I need?'''
+
  
 
You can set them via via IVideoConverter2::SetConversionProps2().
 
You can set them via via IVideoConverter2::SetConversionProps2().
  
'''How do I use the Video Converter to downscale HD material to SD?'''
+
==='''How do I use the Video Converter to downscale HD material to SD?'''===
  
 
For this purpose you need to specify the CONVERTER_PROPS2 structure:
 
For this purpose you need to specify the CONVERTER_PROPS2 structure:
  
<source lang="c">
+
<source lang="csharp">
 
CONVERTER_PROPS2 cnvProps2;
 
CONVERTER_PROPS2 cnvProps2;
 
::ZeroMemory( &cnvProps2, sizeof(cnvProps2) );
 
::ZeroMemory( &cnvProps2, sizeof(cnvProps2) );
cnvProps.eInterlaceIn = eVCI_Auto; // or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual set interlace
+
 
cnvProps.nAspectIn = 0; // For use VideoInfoHeader2 flags or e.g. MAKELPARAM( 16, 9 ) for 16:9 AR
+
// Or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual setting of interlace:
cnvProps.eInterlaceIn = eVCI_Auto; // or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual set interlace
+
cnvProps.eInterlaceIn = eVCI_Auto;
 +
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.cx = 720;
 
cnvProps.szOutput.cy = 576;
 
cnvProps.szOutput.cy = 576;
 
cnvProps.nAspectOut = MAKELPARAM( 4, 3 );
 
cnvProps.nAspectOut = MAKELPARAM( 4, 3 );
cnvProps.eKeepAspect2 = eVCKA_LetterBox; // or eVCKA_Crop for crop or eVCKA_None for not maintain AR
+
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.eResize = eVCR_CubicWithMP; // See eVCResize for other interplation algorithms.
cnvProps.eFieldProcess = eVCFP_Auto; // See eVCFieldProcess for other options
+
cnvProps.eFieldProcess = eVCFP_Auto; // See eVCFieldProcess for other options.
cnvProps.optimization = eThreadPerProc; // Or eOneThread - for work in 'sync' mode
+
cnvProps.optimization = eThreadPerProc; // Or eOneThread - for work in 'sync' mode.
cnvProps.dwUseCPUMask = -1; // Use all available cores/CPUs
+
cnvProps.dwUseCPUMask = -1; // Use all available cores/CPUs.
  
 
int nMask = VC_ALL_MASK;
 
int nMask = VC_ALL_MASK;
 
cpVideConverter->SetConversionProps2( &cnvProps, &nMask );
 
cpVideConverter->SetConversionProps2( &cnvProps, &nMask );
 +
</source>
 +
 +
===What are the possible output parameters of the CONVERTER_PROPS2 struct (i.e. the posible values of the fccOutput parameter)?===
 +
 +
<source lang="csharp">
 +
typedef enum eMGFCC
 +
        {
 +
                eMGFCC_Default    = 0,        // The default value - usual the same as input
 +
                eMGFCC_YV12  = 0x32315659,
 +
                eMGFCC_I420  = 0x30323449,
 +
                eMGFCC_YUY2  = 0x32595559,
 +
                eMGFCC_UYVY  = 0x59565955,
 +
                eMGFCC_YVYU  = 0x55595659,
 +
                eMGFCC_HDYC  = 0x43594448,  // DeckLink fourcc for HD video (CCIR 709) - similar to UYVY (CCIR 601)
 +
                eMGFCC_RGB24  = 0xe436eb7d,
 +
                eMGFCC_RGB32  = 0xe436eb7e,
 +
                eMGFCC_ARGB32 = 0x773c9ac0,
 +
        } eMGFCC;
 
</source>
 
</source>
  
 
[[Category:FAQs]]
 
[[Category:FAQs]]

Latest revision as of 10:54, 16 February 2009

This is the FAQ page for the Video Converter DirectShow filter.

Contents

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.

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) );
 
// Or eVCI_Field1First, eVCI_Field2First, eVCI_Progressive for manual setting of interlace:
cnvProps.eInterlaceIn = eVCI_Auto; 
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 );

What are the possible output parameters of the CONVERTER_PROPS2 struct (i.e. the posible values of the fccOutput parameter)?

typedef enum eMGFCC
        {
                eMGFCC_Default    = 0,        // The default value - usual the same as input 
                eMGFCC_YV12   = 0x32315659,
                eMGFCC_I420   = 0x30323449,
                eMGFCC_YUY2   = 0x32595559,
                eMGFCC_UYVY   = 0x59565955,
                eMGFCC_YVYU   = 0x55595659,
                eMGFCC_HDYC   = 0x43594448,   // DeckLink fourcc for HD video (CCIR 709) - similar to UYVY (CCIR 601)
                eMGFCC_RGB24  = 0xe436eb7d,
                eMGFCC_RGB32  = 0xe436eb7e,
                eMGFCC_ARGB32 = 0x773c9ac0,
        } eMGFCC;
Personal tools