rt
解码出来的数据是YUV的。用QPainter?一幅一幅的往上面画?
部分代码如下。
XvImage *image = XvCreateImage(dpy, port, 0x32315659, NULL, avctx->width, avctx->height); image->data = malloc(image->data_size); pict.data[0] = image->data+image->offsets[0]; pict.data[1] = image->data+image->offsets[2]; pict.data[2] = image->data+image->offsets[1]; pict.linesize[0] = image->pitches[0]; pict.linesize[1] = image->pitches[2]; pict.linesize[2] = image->pitches[1]; img_convert(&pict,PIX_FMT_YUV420P, pFrame, PIX_FMT_YUV420P, avctx->width, avctx->height);
XvPutImage(dpy,port,win,gc,image, 0,0,avctx->width, avctx->height, 0,0,704,576); XFlush(dpy); XFree(image);
但是窗体上一片黑啊。运行倒是没错。困惑。
原帖由 dxzk7 于 2008-9-19 09:10 发表 rt解码出来的数据是YUV的。用QPainter?一幅一幅的往上面画?
原帖由 dxzk7 于 2008-9-19 09:10 发表 rt
YUV转成QPainter能认的格式,然后用QPainter,如果慢,用底层点的API,可以考虑xshm,这个是X上最快的方法了。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
部分代码如下。
XvImage *image = XvCreateImage(dpy, port, 0x32315659, NULL, avctx->width, avctx->height);
image->data = malloc(image->data_size);
pict.data[0] = image->data+image->offsets[0];
pict.data[1] = image->data+image->offsets[2];
pict.data[2] = image->data+image->offsets[1];
pict.linesize[0] = image->pitches[0];
pict.linesize[1] = image->pitches[2];
pict.linesize[2] = image->pitches[1];
img_convert(&pict,PIX_FMT_YUV420P,
pFrame, PIX_FMT_YUV420P,
avctx->width, avctx->height);
XvPutImage(dpy,port,win,gc,image,
0,0,avctx->width, avctx->height,
0,0,704,576);
XFlush(dpy);
XFree(image);
但是窗体上一片黑啊。运行倒是没错。困惑。
YUV转成QPainter能认的格式,然后用QPainter,
如果慢,用底层点的API,可以考虑xshm,这个是X上最快的方法了。