您的位置:首页 > Web前端

jsvm9_19中BufferParameters参数解释

2010-08-28 21:51 316 查看
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 = 288,m_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.
下面计算Cr的Offset,它的前面已经存放了Luma和Cb采样值。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: