首先自定义定义的结构
class Scaler {
struct Buffer {
uint32_t width, height;
uint8_t *data[3];
uint32_t stride[3];
ColorFormat color;
};
enum ColorFormat {
YUV_I420 = 0,
YUV_NV21,
YUV_NV12,
BGR ,
RGB ,
BGRA,
RGBA,
ABGR,
ARGB,
};
void Scaler::LibyuvResize_NV21(const Buffer *src,
Buffer *dst);
void Scaler::LibyuvResize_I420(const Buffer *src,
Buffer *dst);
};
1、I420的resize
这个最简单,libyuv中提供现成的接口
void Scaler::LibyuvResize_I420(const Buffer *src,
Buffer *dst) {
// you should make complete info of buffer src, stride data width height
dst->stride[0] = dst->width;
dst->stride[1] = dst->width >> 1