《DirectShow开发指南》里面的MFC Filter的问题
八月 3, 2007
发表在: java
我想在《directshow开发指南提供的例子:appiptransform添加修改sample的功能,
但是首先要获得sample图象的一些信息:宽 高 象素等等,我修改了transform如下
hresult capptransform::transform(imediasample *psample)
{
// override to do something inside the application
// such as grabbing a poster frame...
// ...
if (m_pinput && m_pinput->isconnected())
{
pbyte pdata=null;
psample->getpointer(&pdata);
cmediatype mt = m_pinput->currentmediatype();
videoinfoheader * pheader = (videoinfoheader *)mt.pbformat;
int mimagewidth = pheader->bmiheader.biwidth;
dword mimageheight = (dword)(abs(pheader->bmiheader.biheight));
int mimagebitcount = pheader->bmiheader.bibitcount;
}
return s_ok;
}
但是对于一些可以正常播放的影片里面获得的信息总是为0
比如:pheader->bmiheader.bibitcount为0。
这让我无法继续后面的操作。
是不是videoinfoheader里面的信息不可信,我应该如何得到正确的sample数据?
谢谢!
电脑软件技术推荐:
1. 你将capptransform filter连接在什么filter后面?
2. 注意在capptransform::checkinputtype中,确认只接受你想接受的media type。
3. 你也可以通过media type的subtype去获得更多信息,比如rgb24,那bitcount肯定就是24了,如yuy2,那bitcount就是16。
No comments in this entry