新版的VS2010虽然包含了DirectShow,但文件并不齐全。
在使用 ISampleGrabber操作视像头视频捕捉时,会出现 streams.h qedit.h mtype.h
找不到的问题。
下载完整的windows sdk包, E:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
包含streams.h mtype.h
并且打开该目录下的baseclasses项目文件编译各个版本。
qedit.h 内容如下,自己手动创建头文件并放至C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
///
#ifndef __qedit_h__
#define __qedit_h__
///
#pragma once
///
interface
ISampleGrabberCB
:
public IUnknown
{
virtual STDMETHODIMP SampleCB(double SampleTime,IMediaSample*pSample )=0;
virtual STDMETHODIMP BufferCB(double SampleTime, BYTE *pBuffer,long BufferLen)=0;
};
///
static
const
IID IID_ISampleGrabberCB ={0x0579154A,0x2B53,0x4994,{0xB0,0xD0,0xE7,0x73,0x14,0x8E,0xFF,0x85}};
///
interface
ISampleGrabber
:
public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE SetOneShot( BOOL OneShot)=0;
virtual HRESULT STDMETHODCALLTYPE SetMediaType(const AM_MEDIA_TYPE *pType )=0;
virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType( AM_MEDIA_TYPE *pType )=0;
virtual HRESULT STDMETHODCALLTYPE SetBufferSamples( BOOL BufferThem)=0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer(long*pBufferSize,long*pBuffer )=0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentSample(IMediaSample**ppSample )=0;
virtual HRESULT STDMETHODCALLTYPE SetCallback(ISampleGrabberCB*pCallback,long WhichMethodToCallback)=0;
};
///
static
const
IID IID_ISampleGrabber ={0x6B652FFF,0x11FE,0x4fce,{0x92,0xAD,0x02,0x66,0xB5,0xD7,0xC7,0x8F}};
///
static
const
CLSID CLSID_SampleGrabber ={0xC1F400A0,0x3F08,0x11d3,{0x9F,0x0B,0x00,0x60,0x08,0x03,0x9E,0x37}};
///
static
const
CLSID CLSID_NullRenderer ={0xC1F400A4,0x3F08,0x11d3,{0x9F,0x0B,0x00,0x60,0x08,0x03,0x9E,0x37}};
///
static
const
CLSID CLSID_VideoEffects1Category ={0xcc7bfb42,0xf175,0x11d1,{0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59}};
///
static
const
CLSID CLSID_VideoEffects2Category ={0xcc7bfb43,0xf175,0x11d1,{0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59}};
///
static
const
CLSID CLSID_AudioEffects1Category ={0xcc7bfb44,0xf175,0x11d1,{0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59}};
///
static
const
CLSID CLSID_AudioEffects2Category ={0xcc7bfb45,0xf175,0x11d1,{0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59}};
///
#endif
///