2010-03-12 4 views
0

Что должно быть буфера смещения значение U & В в YUV444 типа формата?Формулы для буфера 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 для YUV444

Заранее спасибо

ответ

0

Поскольку YUV444 состоят из 24 бит на пиксель

Поэтому V буфера U & смещение будет

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

Учитывая, что YUV444 использует 8 бит на компонент, мне кажется, что формулы должны быть простыми:

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