libyuv::SplitRotateUV用法
时间: 2023-07-02 12:07:32 浏览: 222
libyuv是一个用于YUV格式图像处理的开源库,其中的SplitRotateUV函数可以实现将NV12格式的图像分离并旋转UV分量。
函数原型如下:
```c++
int SplitRotateUV(const uint8* src_uv, int src_uv_stride,
uint8* dst_u, int dst_u_stride,
uint8* dst_v, int dst_v_stride,
int width, int height, enum RotationMode mode);
```
参数说明:
- `src_uv`: 输入的NV12格式图像的UV分量数据指针。
- `src_uv_stride`: 输入的NV12格式图像的UV分量数据行间距。
- `dst_u`: 输出的U分量数据指针。
- `dst_u_stride`: 输出的U分量数据行间距。
- `dst_v`: 输出的V分量数据指针。
- `dst_v_stride`: 输出的V分量数据行间距。
- `width`: 图像宽度。
- `height`: 图像高度。
- `mode`: 旋转模式,可以是`kRotate0`, `kRotate90`, `kRotate180`或`kRotate270`。
使用示例如下:
```c++
// 输入的NV12格式图像数据
uint8_t* src_nv12_data = ...;
int src_nv12_stride = width;
// 分离并旋转UV分量
uint8_t* dst_u_data = ...;
int dst_u_stride = width / 2;
uint8_t* dst_v_data = ...;
int dst_v_stride = width / 2;
libyuv::SplitRotateUV(src_nv12_data + width * height, src_nv12_stride,
dst_u_data, dst_u_stride, dst_v_data, dst_v_stride,
width / 2, height / 2, libyuv::kRotate90);
```
上述示例将输入的NV12格式图像的UV分量数据分离并旋转90度,分别存储到了`dst_u_data`和`dst_v_data`中。需要注意的是,NV12格式的图像中UV分量数据是按照交错的方式存储的,因此在调用`SplitRotateUV`函数时需要将`src_uv`参数设置为`src_nv12_data + width * height`,也就是UV分量数据的起始地址。
阅读全文