jsvm9_19中BufferParameters參數解釋

JSVM是對輸出圖象做邊界擴展的, 擴展的方式是 左右32象素, 上下 64象素

注意:這是針對亮度值,色度值也進行相對尺度的擴展。對於4:2:0,每個色度空間大小仍是亮度值擴展後的1/4。對於4:2:0,存放順序是:先存放擴展後亮度值,再存放兩個擴展後的色度值。總的buffer大小爲其擴展後大小的和,就是 (m_uiLumaWidth+32*2)*( m_uiLumaHeigh+64*2)*(1.5)

它的成員有

    UInt  m_uiLumaOffset;   //
圖象Y分量左上角象素在擴展後緩衝區的偏移
    UInt  m_uiCbOffset;       //
圖象Cb分量左上角象素的偏移
    UInt  m_uiCrOffset;       //
圖象Cr分量左上角象素的偏移
    UInt  m_uiLumaHeight;   //
圖象高度   
    UInt  m_uiLumaWidth;    //
圖象寬度
    UInt  m_uiLumaStride;   //
圖象跨度 = 寬度 + 32*2
    UInt  m_uiBufferSize;     //
擴展後緩衝區的大小
    UInt  m_auiCropping[4]; //
圖象最終輸出的時候裁剪用的

 

舉例:假設輸出圖像的格式爲CIF352*288大小。

m_uiLumaHeight = 288m_uiLumaWidth = 352;擴展後的示意圖如下:

 

 

 

m_uiLumaOffset = (352+32+32)*64 + 32 = 26656;

注意,在內存空間裏,先存放亮度值,再存放色度值。擴展後整個亮度值佔用的空間大小爲LumaSize = (352+32+32)*(288+64+64) = 173056.

所以: m_uiCbOffset = LumaSize + (176+16+16)*32 + 16 = 173056 + 6672 = 179728.

下面計算CrOffset,它的前面已經存放了LumaCb採樣值。

CbSize = 173056/4 = 43264.

m_uiCrOffset = LumaSize + CbSize + (176+16+16)*32 + 16 = 173056 + 43264 + 6672=222992.

 m_uiLumaStride 指的是亮度值的寬展後的跨度,就是擴展後的寬度

m_uiLumaStride = 352 + 32 + 32 = 416

 

m_uiBufferSize 爲擴展後總的大小 = LumaSize + CbSize + CrSize = 173056 + 43264*2 = 259584

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章