使用YUV I420进行混流操作

本文介绍了如何在没有显卡的情况下,利用CPU进行YUV I420格式的混流操作。通常混流借助GPU完成,但本文提供了一种直接在内存中进行I420转换的算法,时间复杂度为O(dstH * dstW),并给出了调用示例。
摘要由CSDN通过智能技术生成

一般的混流操作是借住D3D或者OpenGL API利用GPU的并行处理能力进行,把各种色彩空间的图片统一由shader转成RGBA的格式进行纹理贴图的操作。
如果要混好的图片作编码一般的过程为:数据上显卡-》在显卡上作贴图-》把混好的纹理转成yuv444-》纹理映射到内存(数据从显卡copy到内存)-》把yuv444转成NV12或者I420去编码。
下面要介绍的是直接使用cpu进行I420的混流操作,这样如果服务器上没有显卡,也可以进行软的混流操作,直接上代码:

void MixYUV420(unsigned char* pDstImg, int realDstW, int realDstH, int posX, int posY,
	int dstW, int dstH, unsigned char* pSrcImg, int srcW, int srcH)
{
   
	unsigned char *USrcImg = pSrcImg + srcW * srcH;
	unsigned char *UDstImg = pDstImg + realDstW * realDstH;
	unsigned char *VSrcImg = pSrcImg + srcW * srcH * 5 / 4;
	unsigned char *VDstImg = pDstImg + realDstW * realDstH * 5 / 4;
	pDstImg 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值