2010-03-12 24 views
0

U et V Quelle devrait être la valeur de décalage tampon pour U & V YUV444 type de format?formules pour le tampon décalage

Comme un exemple si j'utilise le format YV12 la valeur est la suivante:

ppData.inputIDMAChannel.UBufOffset = iInputHeight * iInputWidth + (iInputHeight * iInputWidth)/4; ppData.inputIDMAChannel.VBufOffset = iInputHeight * iInputWidth;

iInputHeight = 160 & iInputWidth = 112

ppdata est un objet de la structure suivante:

typedef struct ppConfigDataStruct 
{ 
    //--------------------------------------------------------------- 
    // General controls 
    //--------------------------------------------------------------- 
    UINT8   IntType;  
        // FIRSTMODULE_INTERRUPT: the interrupt will be 
        // rised once the first sub-module finished its job. 
        // FRAME_INTERRUPT: the interrput will be rised 
        // after all sub-modules finished their jobs. 
    //--------------------------------------------------------------- 
    // Format controls 
    //--------------------------------------------------------------- 

    // For input 
    idmaChannel  inputIDMAChannel; 

    BOOL   bCombineEnable; 
    idmaChannel  inputcombIDMAChannel; 
    UINT8   inputcombAlpha; 
    UINT32   inputcombColorkey; 

    icAlphaType  alphaType; 

    // For output 
    idmaChannel  outputIDMAChannel; 
    CSCEQUATION CSCEquation; // Selects R2Y or Y2R CSC Equation 
    icCSCCoeffs  CSCCoeffs;  // Selects R2Y or Y2R CSC Equation 
    icFlipRot   FlipRot;  // Flip/Rotate controls for VF 
    BOOL allowNopPP; // flag to indicate we need a NOP PP processing 

}*pPpConfigData, ppConfigData; 

et la structure idmaChannel est la suivante:

typedef struct idmaChannelStruct 
{ 
    icFormat  FrameFormat; // YUV or RGB 
    icFrameSize FrameSize; // frame size 
    UINT32   LineStride;// stride in bytes 
    icPixelFormat PixelFormat;// Input frame RGB format, set NULL 
            // to use standard settings. 
    icDataWidth DataWidth;// Bits per pixel for RGB format 
    UINT32 UBufOffset;// offset of U buffer from Y buffer start address 
          // ignored if non-planar image format 
    UINT32 VBufOffset;// offset of U buffer from Y buffer start address 
          // ignored if non-planar image format  
} idmaChannel, *pIdmaChannel; 

Je veux que les formules pour ppData.inputIDMAChannel.UBufOffset & ppData.inputIDMAChannel.VBufOffset pour YUV444

Merci à l'avance

Répondre

0

Depuis YUV444 se composent de 24 bits par pixel

Par conséquent, le tampon U & V décalage sera

ppData.inputIDMAChannel.UBufOffset = iInputHeight * iInputWidth; 
ppData.inputIDMAChannel.VBufOffset = 2 * iInputHeight * iInputWidth; 
2

Étant donné que YUV444 utilise 8 bits par composante, me semble que la formules devraient être simples:

ppData.inputIDMAChannel.UBufOffset = 2 * iInputHeight * iInputWidth; 
ppData.inputIDMAChannel.VBufOffset = iInputHeight * iInputWidth;