官网:https://chromium.googlesource.com/libyuv/libyuv
一、简介
libyuv是一个google的开源项目,支持包括 YUV 缩放和转换功能。
二、下载及编译
git clone https://chromium.googlesource.com/libyuv/libyuv
cd libyuv
cmake .
make
make install
三、YUV缩放示例
libyuv::I420Scale(frame->data[0], frame->linesize[0],
frame->data[1], frame->linesize[1],
frame->data[2], frame->linesize[2],
frame->width, frame->height,
aFrame->data[0], aFrame->linesize[0],
aFrame->data[1], aFrame->linesize[1],
aFrame->data[2], aFrame->linesize[2],
aFrame->width, aFrame->height, libyuv::kFilterBilinear);
四、YUV混合示例
libyuv::I420Copy(aFrame->data[0], aFrame->linesize[0],
aFrame->data[1], aFrame->linesize[1],
aFrame->data[2], aFrame->linesize[2],
bgFrame->data[0] + x + y*bgFrame->linesize[0], bgFrame->linesize[0],
bgFrame->data[1] + x/2 + y/2*bgFrame->linesize[1], bgFrame->linesize[1],
bgFrame->data[2] + x/2 + y/2*bgFrame->linesize[2], bgFrame->linesize[2],
bgFrame->width - x >= aFrame->width ? aFrame->width : (bgFrame->width - x),
bgFrame->height - y >= aFrame->height ? aFrame->height : (bgFrame->height - y));