显示yuv图像

lhtang 2009-02-16 04:26:52
现在可以得到解码视频数据格式为420.不用directshow,请问用gdi或其他方式显示的过程.
...全文
661 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rosekin 2011-08-10
  • 打赏
  • 举报
回复
学习了
实达诚实 2009-02-17
  • 打赏
  • 举报
回复
学习了
lhtang 2009-02-17
  • 打赏
  • 举报
回复
_R(); _G(); _B();_S()这四个宏体没有,我这边编译不过.
lhtang 2009-02-16
  • 打赏
  • 举报
回复
忘了说一个前提要求,由于某些显卡不支持directshow,所以不能用directshow.
zzdmfk能给个详细点的调用例子吗?
netlib这个是直接转成了RGB32格式位图了吗?是不是可以直接用GDI绘图了?
netlib 2009-02-16
  • 打赏
  • 举报
回复
void yuv2rgb_32(uint8_t *puc_y, int stride_y,
uint8_t *puc_u, uint8_t *puc_v, int stride_uv,
uint8_t *puc_out, int width_y, int height_y,
unsigned int _stride_out)
{

int x, y;
int stride_diff = 4 * (_stride_out - width_y);

if (height_y < 0) {
/* we are flipping our output upside-down */
height_y = -height_y;
puc_y += (height_y - 1) * stride_y ;
puc_u += (height_y/2 - 1) * stride_uv;
puc_v += (height_y/2 - 1) * stride_uv;
stride_y = -stride_y;
stride_uv = -stride_uv;
}

for (y=0; y<height_y; y++)
{
for (x=0; x<width_y; x++)
{
signed int _r,_g,_b;
signed int r, g, b;
signed int y, u, v;

y = puc_y[x] - 16;
u = puc_u[x>>1] - 128;
v = puc_v[x>>1] - 128;

_r = _R(y,u,v);
_g = _G(y,u,v);
_b = _B(y,u,v);

r = _S(_r);
g = _S(_g);
b = _S(_b);

puc_out[0] = r;
puc_out[1] = g;
puc_out[2] = b;
puc_out[3] = 0;

puc_out+=4;
}

puc_y += stride_y;
if (y%2) {
puc_u += stride_uv;
puc_v += stride_uv;
}
puc_out += stride_diff;
}
}
路人乙2019 2009-02-16
  • 打赏
  • 举报
回复
drawbib

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧