2010-03-12 93 views
0

什麼應該是緩衝器中YUV444格式類型偏移值ú& V·公式U和V緩存器偏移

像一個例子,如果我使用YV12格式的值如下:

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

iInputHeight = 160 & iInputWidth = 112

ppdata是以下結構的對象:

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; 

和idmaChannel結構如下:

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; 

我想要的公式ppData.inputIDMAChannel.UBufOffset & ppData.inputIDMAChannel.VBufOffset用於提前

回答

0

由於YUV444包括每像素

位的

因此在U & V緩衝器偏移將是

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

鑑於YUV444使用每個分量8位,YUV444

感謝在我看來,在式應該是直接的:

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