Generic YUV conversion (Visual Basic)

Generic YUV conversion provides the ability to convert any YUV format to any supported color space, using the YUV_PARAMS structure and adhering to the restrictions listed below. After defining the YUV format, you can proceed with the conversion normally, just like any other conversion. Use L_ClrConvert to perform the conversion and call L_ClrFree to free the conversion handle. Currently the conversion from any color space to Generic YUV is not supported.

Generic YUV conversion currently has the following restrictions:

1.

No sub-sampling of Y is supported

2.

The number of Y elements must be a multiple of both U, and V.

3.

With non-planar formats, vertical sub-sampling of Y, U, and V is not supported.

4.

No alignment supported in planar format; line width must not contain additional bytes.

5.

The horizontal subsampling periods of U, and V must be multiples of each other, and the vertical subsampling periods of U, and V must be multiples of each other.

Examples:

1.

Converting Y41P to RGB using Generic YUV Conversion:

Function GenericY41PToRGB(YUVData() As Byte, RGBData() As Byte, nWidth As Integer, nHeight As Integer) As Integer 
    Dim ret As Integer 
    Dim ClrHandle As Long 
    Dim cnvParam As CONVERSION_PARAMS 
    Dim pOff(12) As Long 
    pOff(0) = 1 
    pOff(1) = 3 
    pOff(2) = 5 
    pOff(3) = 7 
    pOff(4) = 8 
    pOff(5) = 9 
    pOff(6) = 10 
    pOff(7) = 11 
    pOff(8) = 0 
    pOff(9) = 4 
    pOff(10) = 2 
    pOff(11) = 6 
    '(1,3,5,7,8,9,10,11,0,4,2,6) 
    Dim YUVParamas As LPYUV_PARAMS 
    With YUVParamas 
       .uStructSize = Len(YUVParamas) 
       .nMask = 0 
       .nUh = 4 
       .nUv = 1 
       .nVh = 4 
       .nVv = 1 
       .pOffsets = VarPtr(pOff(0)) 
       .nMacroPixel = 8 
       .nRange = YUVRANGE_FULL 
       .bPlanar = 0 
    End With 
    cnvParam.uStructSize = Len(cnvParam) 
    cnvParam.nQuantization = 0 
    cnvParam.nMethod = USE_BUILTIN 
    cnvParam.nActiveMethod = USE_BUILTIN 
    cnvParam.pCmykParams = 0 
    cnvParam.pLabParams = 0 
    cnvParam.pYuvParams = VarPtr(YUVParamas) 
    cnvParam.sInputProfile(0) = 0 
    cnvParam.sOutputProfile(0) = 0 
    ret = L_ClrInit (ClrHandle, CCS_YUV, CCS_RGB, cnvParam) 
    ret = L_ClrConvert (ClrHandle, YUVData(0), RGBData(0), nWidth, nHeight, 0, 0) 
    ret = L_ClrFree (ClrHandle) 
    GenericY41PToRGB = ret 
 End Function 

2.

Converting YVU9 (Planar) to RGB using Generic YUV Conversion:

Function GenericYVU9ToRGB(YUVData() As Byte, RGBData() As Byte, nWidth As Integer, nHeight As Integer) As Integer 
    Dim ret As Integer 
    Dim ClrHandle As Long 
    Dim cnvParam As CONVERSION_PARAMS 
    Dim pOff(0) As Long 
    pOff(0) = PLANAR_YVU 
    Dim YUVParamas As LPYUV_PARAMS 
    With YUVParamas 
       .uStructSize = Len(YUVParamas) 
       .nMask = 0 
       .nUh = 4 
       .nUv = 1 
       .nVh = 4 
       .nVv = 1 
       .pOffsets = VarPtr(pOff(0)) 
       .nMacroPixel = 8 
       .nRange = YUVRANGE_FULL 
       .bPlanar = 1 
    End With 
    cnvParam.uStructSize = Len(cnvParam) 
    cnvParam.nQuantization = 0 
    cnvParam.nMethod = USE_BUILTIN 
    cnvParam.nActiveMethod = USE_BUILTIN 
    cnvParam.pCmykParams = 0 
    cnvParam.pLabParams = 0 
    cnvParam.pYuvParams = VarPtr(YUVParamas) 
    cnvParam.sInputProfile(0) = 0 
    cnvParam.sOutputProfile(0) = 0 
    ret = L_ClrInit (ClrHandle, CCS_YUV, CCS_RGB, cnvParam) 
    ret = L_ClrConvert (ClrHandle, YUVData(0), RGBData(0), nWidth, nHeight, 0, 0) 
    ret = L_ClrFree (ClrHandle) 
    GenericYVU9ToRGB = ret 
 End Function 

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Color Conversion C API Help