将YUV的单个BYTE*拆分成每个平面的3个BYTE*指针
Unpacking a single BYTE* of a YUV into 3 BYTE* pointers for each plane
我不熟悉YUV和数据是如何打包的。假设我有以下代码…
int width = 1920;
int height = 1080;
BYTE* yuvData = GetFrame();
…我如何将yuvData
解压缩到具有以下签名的方法中…
Display(BYTE* pYplane, BYTE* pVplane, BYTE* pUplane)
YUV缓冲区是平面格式
这取决于您在问题中没有指定的YUV格式类型。以下链接有关于各种YUV类型的很好的解释和插图:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750%28v=vs.85%29.aspx http://www.fourcc.org/yuv.php例如,一种常用的YUV类型是YUV420平面。在这种格式中,色度组件水平向下采样2:1,垂直向下采样2:1。这意味着对于每4个亮度(Y)值,你有一个色度(1U + 1V)组件(参见链接中的图示)。平面告诉你,你首先有所有的亮度分量,然后是所有的U分量,然后是所有的V分量。因此
int iSizeY = width * height;
int iSizeUV = (width * height)/4;
BYTE* pY = yuvData;
BYTE* pU = yuvData + iSizeY // there are width * height Y components
BYTE* pV = pU + iSizeUV; // skip the U components
相关文章:
- 在 cpp 中的平面缓冲区中序列化对象
- 将平面阵列重塑为复杂的特征类型
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- std::byte 指针应该用于指针算术吗?
- CGAL:在浏览平面地图时使用类型"标记"
- 在C++中,如何在变量中正确存储 BYTE 类型?
- C++如何将字符数组转换为字节向量(向量<byte>)
- 在 Eclipse 上启用 C++17 以使用 'std::byte'
- FreeFileSync C++错误:'byte'不是 'std' 的成员
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 在 c++ 中以十六进制格式打印无符号字符(BYTE).使用 std::cout
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 如何找到两个棋盘平面之间的角度?
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- 平面和球体光线追踪之间的交点
- Visual accept std::string from std::byte iterator
- Android:使用 c++ 中的 byte[] 参数调用 java 方法
- 无法初始化以 std::byte 作为成员类型的位字段
- 从矢量数组制作平面文件