StretchDIBits绘制原始YUV图片,图片的大小是1366 * 768,界面出现花屏倾斜。
1、解决方法,将原始YUV格式大小,进行YUV缩放,达到StretchDIBits可正常绘制的分辨率,比如:1920*1280等等。
//GDI绘制YUV格式的原始数据
void GDIDrawYUV(uint8_t* data, int w, int h)
{
static const int dw = 1280;
static const int dh = 1080;
unsigned char * dstyuv = new unsigned char[dw * dh * 3 / 2];
//libyuv进行YUV数据大小转换
libyuv::I420Scale(
data, w,
data + w * h, w / 2,
data + w * h + w * h / 4, w / 2, w, h,
dstyuv, dw,
dstyuv + dw * dh, dw / 2,
dstyuv + dw * dh + dw * dh / 4, dw / 2, dw, dh, libyuv::FilterMode::kFilterNone);
unsigned char * sprgb = new unsigned char[dw*dh * 3];
//libyuv进行YUV转换成RGB24
libyuv::I420ToRGB24(dstyuv, dw,
dstyuv + dw * dh, dw / 2,
dstyuv + dw * dh + dw * dh / 4, dw / 2,
sprgb, dw * 3, dw, dh);
HDC hdc = GetDC(_playWnd);
BIT