1. 概述
海思提供的媒体处理软件平台(Media Process Platform,简称
MPP),可支持应用软件快速 开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 MPI(MPP Program
Interface)接口完成相应功能。该平台支持应用软件快速开发以下 功能:输入视频捕获、H.265/H.264/JPEG
编码、H.265/H.264/JPEG 解码、视频输出显 示、视频图像前处理(包括去噪、增强、锐化)、图像拼接、图像几何矫正、智能、音
频捕获及输出、音频编解码等功能。
2. 系统架构
2.1 硬件层
硬件层由 Hi35xx 芯片加上必要的外围器件构成。外围器件包括 Flash、DDR(Double Data-Rate)、视频 Sensor 或 AD、音频 AD 等。
2.2 操作系统层
基于 Linux 或 Huawei LiteOS 的 OS 系统。
2.3 操作系统适配层
提供操作系统系统调用基础函数,屏蔽操作系统差异,支持媒体处理平台运行在不同的操作系统上,或相同操作系统不同版本。
2.4 媒体处理平台
基于操作系统适配层,控制芯片完成相应的媒体处理功能。它对应用层屏蔽了硬件处理细节,并为应用层提供 API 接口完成相应功能。
2.5 其他驱动
除媒体处理平台外,海思为 Hi35xx 芯片的其他相关硬件处理单元提供了相应的驱动, 包括 CIPHER、RTC 等驱动。
2.6 应用层
基于海思媒体处理平台及其他驱动,由用户开发的应用软件系统。
3. 模块划分及处理架构
主要模块如下:
视频输入(VI)
视频处理(VPSS)
视频编码(VENC)
视频解码(VDEC)
视频输出(VO)
视频拼接(AVS)
音频输入(AI)
音频输出(AO)
音频编码(AENC)
音频解码(ADEC)
区域管理(REGION)
视频流处理架构如下:
4. 常用分辨率
二 系统控制
系统控制根据 Hi35xx 芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成
MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP
系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息、提供大块物理内存管理等功能。
应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出 MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。
1. 视频缓存池
视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
2. 系统绑定
MPP提供系统绑定接口(HI_MPI_SYS_Bind),即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将 自动发送给接收者。
三 视频输入
视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口、LVDS 接口和
HISPI 接 口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据。VI
将接收到的数据存入到指定的内存区域,在此过程中,VI 可以对接收到的原始视频图像数据进行处理,实现视频数据的采集。
1. 模块划分
VI 在软件层次上划分了4 个部分:
- 输入设备(DEV)
- 输入 PIPE(图示为物理 PIPE,虚拟 PIPE 只包含 ISP_BE)
- 物理通道(PHY_CHN)
- 扩展通道(EXT_CHN)
2. 模块功能
2.1 视频输入设备
所有 VI 设备都是相互独立的,支持时序解析。
2.2 视频输入 PIPE
VI 的 PIPE 包含了 ISP 的相关处理功能,主要是对图像数据进行流水线处理,输出 YUV 图像格式给通道。
2.3 视频物理通道
2.4 视频扩展通道
扩展通道是物理通道的扩展,扩展通道具备缩放、裁剪、鱼眼矫正功能,它通过绑定 物理通道,将物理通道输出作为自己的输入,然后输出用户设置的目标图像。
2.5 MIPI 和 DEV 的绑定关系
Hi3519AV100/Hi3519AV100/ Hi3516DV300/Hi3516CV500/Hi3559V200/Hi3556V200/Hi3516EV200 的 Dev 与 MIPI 绑定关系是固定的,不能动态修改绑定关系。
DEV 和前端时序输入的接口有约束关系。例如 Hi3559AV100 前端需要接入 BT.1120,且选择了第 0 组 BT.1120 管脚,PIPE 应该和 DEV5 绑定,才能正常接收 数据。
2.6 DEV 和 PIPE 的绑定关系
每个 PIPE 都可以与任意 Dev 绑定,但不能动态修改绑定关系。
线性模式(非
WDR 模式)的一条通路应该是一个物理 PIPE 绑定一个 Dev,WDR 模式下需要多个物理 PIPE 绑定一个 Dev,例如 2 合
1WDR,我们需要 2 个物理 PIPE 绑定到一个 Dev。且在 WDR 模式下只有绑定到 Dev 的第 1 条物理 PIPE 的
通道有数据输出,其他绑定的物理 PIPE 的通道是没有图像数据输出。
3. API功能
视频输入(VI)实现启用视频输入设备、视频输入 PIPE 创建,视频输入通道配置、Dev 绑定 MIPI 设备,PIPE 绑定 Dev 等功能。
四 视频输出
VO(Video Output,视频输出)模块主动从内存相应位置读取视频和图形数据,并通过相应的显示设备输出视频和图形。
1. 基本概念
3519A芯片支持的显示/回写设备、视频层和图形层见下表。
注:缩写解释
DHD0:Device HD0,超高清设备 0。
DHD1:Device HD1,高清设备 1。
VHD0:Video layer of HD0,超高清视频层 0,隶属于 DHD0。
VHD1:Video layer of HD1,高清视频层 1,隶属于 DHD1。
VHD2:Video layer of HD 2,高清视频层 2,Hi3559AV100 上隶属于 DHD0, Hi3519AV100/Hi3556AV100 上可以绑定至 DHD0 或者 DHD1,用作 PIP 层。
WD:Write Back Channel Device,回写通道设备。
图形层 G3:Graphic layer 3,用作鼠标层,DHD0 和 DHD1 中均有此项,但只能绑定其中一个设备,G3 默认绑定在 DHD1 上。
2. 模块划分
视频输出(VO)实现启用视频输出设备或通道、发送视频数据到输出通道等功能。
该功能模块提供以下 API(Application Programming Interface,应用程序编程接口),下面分别从设备、视频层、通道、回写、图形层等方面进行介绍。
3. 模块功能
3.1 视频回写
将回写设备称之为 WD(Write Back Channel Device)。
回写功能:捕获视频层和设备级的视频数据,可用于显示和编码。
回写设备的使用依赖于被回写的设备,既可以回写设备级(视频层与图形层叠加后)的视频数据,也可以回写视频层的数据。
3.2 通道
SDK 将通道归属于视频层管理,一个视频层上可显示多个视频,每一个视频显示区域称为一个通道,视频被限制通道内,通道被限制在视频层内。对于一个视频层,其上面的通道都是独立的。同时,不同的视频层上的通道也是独立的。对于通道的排号上面不存在跨层的连续。
对于系统绑定,应该使用视频层号和通道号来进行绑定配置;另外,对于回写的图像作为输出源时,需要使用回写内容所在的设备号和 0 通道号进行绑定配置。
3.3 缩放和显示
每个 VHD 超高清视频层
(Hi3559AV100ES/Hi3559AV100/Hi3519AV100/Hi3516CV500/Hi3516EV200: VHD0)只有 x
个通道(x 的取值请参见表 4-3),设备视频层内的通道不可重叠。 超高清视频层的通道具有缩放能力。VI 或 VDEC
的源图像经由缩放后,输出到 VO 的某一通道显示。如果输出给 VO 通道的图像超过 VO 的通道区域大小,则 VO 将会对图像进行缩放。
Hi3519AV100 超高清视频 层不支持视频层的缩放。视频层的通道通过 VGS 实现缩放,并叠加为一整幅图像,并将这一整幅图像的数据配给硬件显示。
视频层在显示视频图像上的策略为:对于支持缩放的视频层,则对视频进行缩放显示,对于不支持缩放的视频层,则对于视频进行裁剪显示。
3.4 通道优先级
超高清和高清显示设备软件上支持多个通道同时输出显示,按照优先级顺序对输出图像进行叠加,当各个通道的画面有重叠区域时,优先级高的图像显示在上层,如果各个通道优先级一致,则通道号越大的默认优先级越高。
3.5 分辨率
分辨率主要有以下 3 种概念:
− 设备分辨率指该设备的输出有效像素点数,由设备时序决定。
− 显示分辨率指画面在显示设备上的有效显示区域,由视频层属性中的 stDispRect 成员决定。
− 画布分辨率指 VGS 拼接时使用的一块输出视频数据的内存区域,由视频层属 性中的 stImageSize 决定。直通时无此定义。
− 图像分辨率指图像本身的有效像素点数,由实际的显示图像分辨率决定。
3.6 图形层绑定
图形层绑定是指芯片支持将特定的某个图形层绑定到某个设备上。
Hi3519AV100 支持 3 个图形层(G0,G1,G3),G0 固定绑定到 DHD0 上, G1 固定绑定到 DHD1 上,即 G0
只能与 VHD0 叠加显示,G1 只能与 VHD1 叠加显示;G3 可动态绑定到 DHD0 或 DHD1,即 G3 或者与 VHD0
叠加显示, 或者与 VHD1 叠加显示,G3 默认绑定在 DHD0 上。
3.7 单画面直通模式
单画面直通模式是指在 SINGLE 模式下,VO 通道中的图像不经过 VGS 模块处理而直接显示出来,节省一次 VGS 搬移过程,并且 VO 无需申请私有内存,但是需要满足以下条件才会选择走直通模式:
− VO 通道使能,且只有一个通道显示;
− VO 没有显示 OSD 和 COVER;
− VO 没有使能边框;
− VO 没有使能抗闪;
− VO 没有电子放大;
− VO 通道图像像素格式和设置的像素格式一致;
− VO 通道图像视频格式为 LINEAR(包括 LINEAR DISCRETE 格式)
− VO 通道图像大小(FrameSize)=通道大小(ChnRect)=画布大小(ImageSize)
− Hi3519AV100 上还需要满足不使能幅形比的条件;Hi3519AV100 的 VHD1 和 VHD2 视频层还需要满足输入图像为非压缩图像的条件。
如果不满足直通模式的条件,由于 VO 默认不分配内存,因此需要在使能视频层之前调用 HI_MPI_VO_SetDisplayBufLen 接口设置缓冲长度来确定分配内存,否则 VO 将不会输出视频显示,
3.8 低功耗策略
VO 模块使用低功耗策略,在模块加载后或者用例退出后 VO 时钟是关闭的,这时候手动读写 VO 模块的寄存器可能会有读写错误或者卡死的现象。
4. API功能
视频输出(VO)实现启用视频输出设备或通道、发送视频数据到输出通道等功能。
API从设备、视频层、通道、回写、图形层等方面进行划分。
五 YUV图像格式
1. YUV简介
YUV格式有三大类:planar,packed,semi-planar。
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
对于packed的YUV格式,每个像素点的Y,U,V是连续交叉存储的。
对于semi-planar的YUV格式,先连续存储所有像素点的Y,紧接着连续交叉存储所有像素点的U,V。
YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
2. YUV存储格式
YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,关于其详细原理,可以通过网上其它文章了解,这里我想强调的是如何根据其采样格式来从码流中还原每个像素点的YUV值,因为只有正确地还原了每个像素点的YUV值,才能通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。
用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。
先记住下面这段话,以后提取每个像素的YUV分量会用到。
1. YUV 4:4:4采样,每一个Y对应一组UV分量8+8+8 = 24bits,3个字节。
2. YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits,2个字节。
3. YUV 4:2:0采样,每四个Y共用一组UV分量一个YUV占8+2+2 = 12bits,1.5个字节。
3. YUV420类型
3.1 YUV420p和YUV420sp区别
因为YUV420比较常用, 在这里就重点介绍YUV420。YUV420分为两种:YUV420p和YUV420sp。
假设一个分辨率为8X4的YUV图像,它们的YUV420sp格式如下图:
假设一个分辨率为8X4的YUV图像,它们的YUV420p数据格式如下图:
3.2 YUV420p和YUV420sp具体分类和详情
3.2.1 YUV420p:又叫planer平面模式,Y ,U,V分别在不同平面,也就是有三个平面。
YUV420p又分为:他们的区别只是存储UV的顺序不一样而已。
I420(YU12):安卓的模式。存储顺序是先存Y,再存U,最后存V。YYYYUUVV
YV12:存储顺序是先存Y,再存V,最后存U。YYYYVVUU
3.2.2 YUV420sp:又叫bi-planer或two-planer双平面,Y一个平面,UV在同一个平面交叉存储。
NV12:IOS只有这一种模式。存储顺序是先存Y,再UV交替存储。YYYYUVUV
NV21:安卓的模式。存储顺序是先存Y,再存U,再VU交替存储。YYYYVUVU
海思Hi3519A中的PIXEL_FORMAT_YVU_PLANAR_420,对应的就是NV21这种模式。
4. YUV和BGR之间的转换
OpenCV的cvtColor API支持如下模式(imgproc/types_c.h):
enum
{
CV_BGR2BGRA =0,
CV_RGB2RGBA =CV_BGR2BGRA,
CV_BGRA2BGR =1,
CV_RGBA2RGB =CV_BGRA2BGR,
CV_BGR2RGBA =2,
CV_RGB2BGRA =CV_BGR2RGBA,
CV_RGBA2BGR =3,
CV_BGRA2RGB =CV_RGBA2BGR,
CV_BGR2RGB =4,
CV_RGB2BGR =CV_BGR2RGB,
CV_BGRA2RGBA =5,
CV_RGBA2BGRA =CV_BGRA2RGBA,
CV_BGR2GRAY =6,
CV_RGB2GRAY =7,
CV_GRAY2BGR =8,
CV_GRAY2RGB =CV_GRAY2BGR,
CV_GRAY2BGRA =9,
CV_GRAY2RGBA =CV_GRAY2BGRA,
CV_BGRA2GRAY =10,
CV_RGBA2GRAY =11,
CV_BGR2BGR565 =12,
CV_RGB2BGR565 =13,
CV_BGR5652BGR =14,
CV_BGR5652RGB =15,
CV_BGRA2BGR565 =16,
CV_RGBA2BGR565 =17,
CV_BGR5652BGRA =18,
CV_BGR5652RGBA =19,
CV_GRAY2BGR565 =20,
CV_BGR5652GRAY =21,
CV_BGR2BGR555 =22,
CV_RGB2BGR555 =23,
CV_BGR5552BGR =24,
CV_BGR5552RGB =25,
CV_BGRA2BGR555 =26,
CV_RGBA2BGR555 =27,
CV_BGR5552BGRA =28,
CV_BGR5552RGBA =29,
CV_GRAY2BGR555 =30,
CV_BGR5552GRAY =31,
CV_BGR2XYZ =32,
CV_RGB2XYZ =33,
CV_XYZ2BGR =34,
CV_XYZ2RGB =35,
CV_BGR2YCrCb =36,
CV_RGB2YCrCb =37,
CV_YCrCb2BGR =38,
CV_YCrCb2RGB =39,
CV_BGR2HSV =40,
CV_RGB2HSV =41,
CV_BGR2Lab =44,
CV_RGB2Lab =45,
CV_BayerBG2BGR =46,
CV_BayerGB2BGR =47,
CV_BayerRG2BGR =48,
CV_BayerGR2BGR =49,
CV_BayerBG2RGB =CV_BayerRG2BGR,
CV_BayerGB2RGB =CV_BayerGR2BGR,
CV_BayerRG2RGB =CV_BayerBG2BGR,
CV_BayerGR2RGB =CV_BayerGB2BGR,
CV_BGR2Luv =50,
CV_RGB2Luv =51,
CV_BGR2HLS =52,
CV_RGB2HLS =53,
CV_HSV2BGR =54,
CV_HSV2RGB =55,
CV_Lab2BGR =56,
CV_Lab2RGB =57,
CV_Luv2BGR =58,
CV_Luv2RGB =59,
CV_HLS2BGR =60,
CV_HLS2RGB =61,
CV_BayerBG2BGR_VNG =62,
CV_BayerGB2BGR_VNG =63,
CV_BayerRG2BGR_VNG =64,
CV_BayerGR2BGR_VNG =65,
CV_BayerBG2RGB_VNG =CV_BayerRG2BGR_VNG,
CV_BayerGB2RGB_VNG =CV_BayerGR2BGR_VNG,
CV_BayerRG2RGB_VNG =CV_BayerBG2BGR_VNG,
CV_BayerGR2RGB_VNG =CV_BayerGB2BGR_VNG,
CV_BGR2HSV_FULL = 66,
CV_RGB2HSV_FULL = 67,
CV_BGR2HLS_FULL = 68,
CV_RGB2HLS_FULL = 69,
CV_HSV2BGR_FULL = 70,
CV_HSV2RGB_FULL = 71,
CV_HLS2BGR_FULL = 72,
CV_HLS2RGB_FULL = 73,
CV_LBGR2Lab = 74,
CV_LRGB2Lab = 75,
CV_LBGR2Luv = 76,
CV_LRGB2Luv = 77,
CV_Lab2LBGR = 78,
CV_Lab2LRGB = 79,
CV_Luv2LBGR = 80,
CV_Luv2LRGB = 81,
CV_BGR2YUV = 82,
CV_RGB2YUV = 83,
CV_YUV2BGR = 84,
CV_YUV2RGB = 85,
CV_BayerBG2GRAY = 86,
CV_BayerGB2GRAY = 87,
CV_BayerRG2GRAY = 88,
CV_BayerGR2GRAY = 89,
//YUV 4:2:0 formats family
CV_YUV2RGB_NV12 = 90,
CV_YUV2BGR_NV12 = 91,
CV_YUV2RGB_NV21 = 92,
CV_YUV2BGR_NV21 = 93,
CV_YUV420sp2RGB = CV_YUV2RGB_NV21,
CV_YUV420sp2BGR = CV_YUV2BGR_NV21,
CV_YUV2RGBA_NV12 = 94,
CV_YUV2BGRA_NV12 = 95,
CV_YUV2RGBA_NV21 = 96,
CV_YUV2BGRA_NV21 = 97,
CV_YUV420sp2RGBA = CV_YUV2RGBA_NV21,
CV_YUV420sp2BGRA = CV_YUV2BGRA_NV21,
CV_YUV2RGB_YV12 = 98,
CV_YUV2BGR_YV12 = 99,
CV_YUV2RGB_IYUV = 100,
CV_YUV2BGR_IYUV = 101,
CV_YUV2RGB_I420 = CV_YUV2RGB_IYUV,
CV_YUV2BGR_I420 = CV_YUV2BGR_IYUV,
CV_YUV420p2RGB = CV_YUV2RGB_YV12,
CV_YUV420p2BGR = CV_YUV2BGR_YV12,
CV_YUV2RGBA_YV12 = 102,
CV_YUV2BGRA_YV12 = 103,
CV_YUV2RGBA_IYUV = 104,
CV_YUV2BGRA_IYUV = 105,
CV_YUV2RGBA_I420 = CV_YUV2RGBA_IYUV,
CV_YUV2BGRA_I420 = CV_YUV2BGRA_IYUV,
CV_YUV420p2RGBA = CV_YUV2RGBA_YV12,
CV_YUV420p2BGRA = CV_YUV2BGRA_YV12,
CV_YUV2GRAY_420 = 106,
CV_YUV2GRAY_NV21 = CV_YUV2GRAY_420,
CV_YUV2GRAY_NV12 = CV_YUV2GRAY_420,
CV_YUV2GRAY_YV12 = CV_YUV2GRAY_420,
CV_YUV2GRAY_IYUV = CV_YUV2GRAY_420,
CV_YUV2GRAY_I420 = CV_YUV2GRAY_420,
CV_YUV420sp2GRAY = CV_YUV2GRAY_420,
CV_YUV420p2GRAY = CV_YUV2GRAY_420,
//YUV 4:2:2 formats family
CV_YUV2RGB_UYVY = 107,
CV_YUV2BGR_UYVY = 108,
//CV_YUV2RGB_VYUY = 109,
//CV_YUV2BGR_VYUY = 110,
CV_YUV2RGB_Y422 = CV_YUV2RGB_UYVY,
CV_YUV2BGR_Y422 = CV_YUV2BGR_UYVY,
CV_YUV2RGB_UYNV = CV_YUV2RGB_UYVY,
CV_YUV2BGR_UYNV = CV_YUV2BGR_UYVY,
CV_YUV2RGBA_UYVY = 111,
CV_YUV2BGRA_UYVY = 112,
//CV_YUV2RGBA_VYUY = 113,
//CV_YUV2BGRA_VYUY = 114,
CV_YUV2RGBA_Y422 = CV_YUV2RGBA_UYVY,
CV_YUV2BGRA_Y422 = CV_YUV2BGRA_UYVY,
CV_YUV2RGBA_UYNV = CV_YUV2RGBA_UYVY,
CV_YUV2BGRA_UYNV = CV_YUV2BGRA_UYVY,
CV_YUV2RGB_YUY2 = 115,
CV_YUV2BGR_YUY2 = 116,
CV_YUV2RGB_YVYU = 117,
CV_YUV2BGR_YVYU = 118,
CV_YUV2RGB_YUYV = CV_YUV2RGB_YUY2,
CV_YUV2BGR_YUYV = CV_YUV2BGR_YUY2,
CV_YUV2RGB_YUNV = CV_YUV2RGB_YUY2,
CV_YUV2BGR_YUNV = CV_YUV2BGR_YUY2,
CV_YUV2RGBA_YUY2 = 119,
CV_YUV2BGRA_YUY2 = 120,
CV_YUV2RGBA_YVYU = 121,
CV_YUV2BGRA_YVYU = 122,
CV_YUV2RGBA_YUYV = CV_YUV2RGBA_YUY2,
CV_YUV2BGRA_YUYV = CV_YUV2BGRA_YUY2,
CV_YUV2RGBA_YUNV = CV_YUV2RGBA_YUY2,
CV_YUV2BGRA_YUNV = CV_YUV2BGRA_YUY2,
CV_YUV2GRAY_UYVY = 123,
CV_YUV2GRAY_YUY2 = 124,
//CV_YUV2GRAY_VYUY = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_Y422 = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_UYNV = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_YVYU = CV_YUV2GRAY_YUY2,
CV_YUV2GRAY_YUYV = CV_YUV2GRAY_YUY2,
CV_YUV2GRAY_YUNV = CV_YUV2GRAY_YUY2,
// alpha premultiplication
CV_RGBA2mRGBA = 125,
CV_mRGBA2RGBA = 126,
CV_RGB2YUV_I420 = 127,
CV_BGR2YUV_I420 = 128,
CV_RGB2YUV_IYUV = CV_RGB2YUV_I420,
CV_BGR2YUV_IYUV = CV_BGR2YUV_I420,
CV_RGBA2YUV_I420 = 129,
CV_BGRA2YUV_I420 = 130,
CV_RGBA2YUV_IYUV = CV_RGBA2YUV_I420,
CV_BGRA2YUV_IYUV = CV_BGRA2YUV_I420,
CV_RGB2YUV_YV12 = 131,
CV_BGR2YUV_YV12 = 132,
CV_RGBA2YUV_YV12 = 133,
CV_BGRA2YUV_YV12 = 134,
// Edge-Aware Demosaicing
CV_BayerBG2BGR_EA = 135,
CV_BayerGB2BGR_EA = 136,
CV_BayerRG2BGR_EA = 137,
CV_BayerGR2BGR_EA = 138,
CV_BayerBG2RGB_EA = CV_BayerRG2BGR_EA,
CV_BayerGB2RGB_EA = CV_BayerGR2BGR_EA,
CV_BayerRG2RGB_EA = CV_BayerBG2BGR_EA,
CV_BayerGR2RGB_EA = CV_BayerGB2BGR_EA,
CV_COLORCVT_MAX = 139
};
六 视频处理子系统