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);
BITMAPINFO m_bmphdr = { 0 };
DWORD dwBmpHdr = sizeof(BITMAPINFO);
//24bit
m_bmphdr.bmiHeader.biBi

本文介绍了使用StretchDIBits绘制原始YUV图片时遇到的花屏倾斜问题,提出通过先对YUV图像进行缩放至特定分辨率(如1920*1280)以确保正常绘制的方法,并邀请读者分享更多解决方案。
最低0.47元/天 解锁文章
968

被折叠的 条评论
为什么被折叠?



