TI论坛
直播中

余小娟

7年用户 251经验值
私信 关注
[问答]

请教有关ColorSpace_YUV420PSEMI与ColorSpace_YUV422PSEMI的bit位宽问题

1.从协议来看,
YUV444:24bit
YUV422:16bit
YUV420:12bit
2.从DVSDK 的demo代码中ColorSpace_getBpp,其将以上YUV422/YUV420的bit位宽都定义为8
疑问:这是为什么呢?
Int ColorSpace_getBpp(ColorSpace_Type colorSpace)
[
Int bpp;
switch (colorSpace) [
case ColorSpace_RGB888:
bpp = 32;
break;
case ColorSpace_YUV444P:
bpp = 24;
break;
case ColorSpace_RGB565:
case ColorSpace_UYVY:
bpp = 16;
break;
case ColorSpace_GRAY:
case ColorSpace_YUV422P:
case ColorSpace_YUV420P:
case ColorSpace_YUV420PSEMI:
case ColorSpace_YUV422PSEMI:
bpp = 8;
break;

case ColorSpace_2BIT:
bpp = 2;
break;
default:
Dmai_err1("Unknown color space format (%d)n", colorSpace);
return Dmai_EINVAL;
]
return bpp;
]

回帖(3)

余小娟

2018-7-27 08:26:02
补充,其中,调用以上函数的上层,有以下条件计算,可见,
 ColorSpace_YUV420PSEMI定义为了12bit。
1.其他都定义为了16bit?
2.如RGB888,代码实现就是bpp=32,再乘以2就是64,这个怎么理解?
 同样有yuv444,uyvy、rgb565的同样疑问。


if (colorSpace ==  ColorSpace_YUV420PSEMI) [
    bufSize = gfxAttrs.dim.lineLength * gfxAttrs.dim.height * 3 / 2;
] else [
    bufSize = gfxAttrs.dim.lineLength * gfxAttrs.dim.height * 2;
]
举报

葛睿洁

2018-7-27 08:32:18
你好;
         刚才看了一下,ColorSpace_getBpp 的定义,这个定义确实有点问题,ColorSpace_RGB888 应当是bpp = 24;
         在这个定义中,看确实感觉模糊,但是在Void CapBuf_blackFill(Buffer_Handle hBuf) 里面的调用,对buffer数据的初始化是没有问题的;
         里面处理了ColorSpace_YUV422PSEMI 、ColorSpace_YUV420PSEMI 、ColorSpace_UYVY ,这个是没有问题的
举报

余小娟

2018-7-27 08:47:05
引用: Greatwayer 发表于 2018-7-27 08:32
你好;
         刚才看了一下,ColorSpace_getBpp 的定义,这个定义确实有点问题,ColorSpace_RGB888 应当是bpp = 24;
         在这个定义中,看确实感觉模糊,但是在Void CapBuf_blackFill(Buffer_Handle hBuf) 里面的调用,对buffer数据的初始化是没有问题的;

哦,那就理解了,ColorSpace_getBpp 里面的实现,含义并不完全一致,具体功能还依赖于调用者的行为。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分