我使用sws_scale
将一组RGB32图像转换为YUV420格式。每个图像与前一个图像非常相似,它们仅在矩形区域Q上有所不同。
我的问题是如何利用Q来加快转换过程?应在sws_scale
函数中添加一个附加参数。
sws_scale( ctx, in_plane, in_stride, sliceY, height, out_plane, out_stride, Q){
// parameter out_plane stores the YUV420 data of previous image
Instead of scanning the whole image, scan through rectangle Q{
Do conversion
}
}
答案 0 :(得分:0)
当前API中不存在此类参数,但您可以按原样使用sws_scale。你可以创建两个上下文 - 一个用于整个图片,一个用于Q;为了只转换Q:
这里有几点需要注意:首先,由于你使用YUV420作为输出格式,你想增加Q使它从偶数行/列开始并占据均匀的宽度/高度(否则Q边界可能会有一些扭曲的颜色) )。其次,确保所有图像平面的指针指向同一像素 - 这需要根据像素格式为每个平面设置不同的偏移。第三,如果没有缩放,这种方法效果最好 - 否则,由于抖动,所得到的图像可能看起来与完整图像比例看起来不完全相同。