wmv9dmo参数设置--300分在线等

afhel 2007-05-10 10:43:47
使用CLSID_CWMV9EncMediaObject,现在用IDMOWrapperFilter包装后放在FilterGraph中使用。需要修改wmvdmo的参数。
用IAMStreamConfig不行,后来在一个网页上看到说这样不行,需要用imediaobject直接对dmo操作。
该用imediaobject后仍然不能实现。哪位给个提示啊?
在windowsmobile中使用,所以那个pravitedata好像不行,它只适用于xp和vista。
代码如下:
IMediaObject *pDMO = NULL;
CHK( pWrapperFilter->QueryInterface(IID_IMediaObject,(void**)&pDMO));
DMO_MEDIA_TYPE m_mt;
ZeroMemory(&m_mt,sizeof(DMO_MEDIA_TYPE));
VIDEOINFOHEADER *m_pVfx=new VIDEOINFOHEADER;
ZeroMemory(m_pVfx, sizeof(VIDEOINFOHEADER));
m_pVfx->bmiHeader.biBitCount = 24;
m_pVfx->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_pVfx->bmiHeader.biWidth = 144;
m_pVfx->bmiHeader.biHeight = 176;
m_pVfx->bmiHeader.biPlanes = 1;
m_pVfx->bmiHeader.biSizeImage = GetBitmapSize(&m_pVfx->bmiHeader);//57600
m_pVfx->bmiHeader.biClrImportant = 0;
m_pVfx->bmiHeader.biCompression = mmioFOURCC('W','M','V','3');//861293911;
m_pVfx->bmiHeader.biXPelsPerMeter = 0 ;
m_pVfx->bmiHeader.biYPelsPerMeter = 0 ;
m_pVfx->bmiHeader.biClrUsed = 0;

m_pVfx->dwBitRate= 458752;
m_pVfx->dwBitErrorRate= 0;
m_pVfx->AvgTimePerFrame= 10000;

SetRectEmpty(&(m_pVfx->rcSource));
SetRectEmpty(&(m_pVfx->rcTarget));

m_mt.majortype =MEDIATYPE_Video;
m_mt.subtype =WMMEDIASUBTYPE_WMV3;
m_mt.formattype =FORMAT_VideoInfo;
m_mt.cbFormat = sizeof(VIDEOINFOHEADER);
m_mt.pbFormat = (BYTE*) (m_pVfx);
m_mt.pUnk = NULL;
m_mt.bFixedSizeSamples=0;
m_mt.bTemporalCompression=1;
m_mt.lSampleSize=28800;

hr = pDMO->SetOutputType(0,&m_mt,DMO_SET_TYPEF_TEST_ONLY);
hr = pDMO->SetOutputType(0,&m_mt,0);
...全文
330 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ht_qq0609 2007-05-11
  • 打赏
  • 举报
回复
定一下
afhel 2007-05-10
  • 打赏
  • 举报
回复
对,包装成filter后修改参数,不能成功。看一个网页说这样不行。
rageliu 2007-05-10
  • 打赏
  • 举报
回复
包装成filter后其修改参数等接口应该不会变啊

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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