您的位置:首页 > 其它

图像处理1--VC6.0下directshow配置

2011-10-08 13:51 288 查看
注:网上转载,测试通过

DirectShow开发环境配置及测试例程

开发环境

SDK:DirectX9.0b (Summer 2003)

Visual C++ 6.0

参考文档:SDK文档

1) DirectShow->Getting Started->Setting Up the Build Environment

2) DirectShow->DirectShow Reference->DirectShow Base Classes->Using the DirectShow Base Classes

3) DirectShow->Getting Started->How To Play a File

测试例子:SDK文档

DirectShow->Getting Started->How To Play a File

配置说明:

1. Tools->Options->Directories

Include - 添加<SDK root>\Include

Lib - 添加<SDK root>\Lib

- 添加<SDK root>\SAMPLES\C++\DirectShow\BASECLASSES\DEBUG // [注1]

2. Build BaseClasses

打开<SDK root>\Samples\C++\DirectShow\BaseClasses\baseclasses.dsp,编译debug得到Strmbasd.lib。 // [注2]

3. Project->Setting->Link

添加Strmbasd.lib

4. 添加头文件

#include <Dshow.h> // 所有DirectShow应用程序必备

#include <Streams.h> // 使用DirectShow基类

源代码如下,代码分析见参考文档3)

#include <Dshow.h>

#include <Streams.h>

#include <stdio.h>

void main(void)

{

IGraphBuilder *pGraph = NULL;

IMediaControl *pControl = NULL;

IMediaEvent *pEvent = NULL;

// Initialize the COM library.

HRESULT hr = CoInitialize(NULL);

if (FAILED(hr))

{

printf("ERROR - Could not initialize COM library");

return;

}

// Create the filter graph manager and query for interfaces.

hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,

IID_IGraphBuilder, (void **)&pGraph);

if (FAILED(hr))

{

printf("ERROR - Could not create the Filter Graph Manager.");

return;

}

hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);

hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

// Build the graph. IMPORTANT: Change this string to a file on your system.

// hr = pGraph->RenderFile(L"C:\\Example.avi", NULL);

hr = pGraph->RenderFile(L"E:\\DX90SDK\\Samples\\Media\\chicken.wmv", NULL);

if (SUCCEEDED(hr))

{

// Run the graph.

hr = pControl->Run();

if (SUCCEEDED(hr))

{

// Wait for completion.

long evCode;

pEvent->WaitForCompletion(INFINITE, &evCode);

// Note: Do not use INFINITE in a real application, because it

// can block indefinitely.

}

}

pControl->Release();

pEvent->Release();

pGraph->Release();

CoUninitialize();

}

注1:该处可根据需要添加不同版本,如RELEASE/Debug_Unicode/Release_Unicode。

注2:debug - strmbasd.lib;release - strmbase.lib;另外还有对应的Unicode版本。

注3:步骤3缺,将导致

error LNK2001: unresolved external symbol _IID_IMediaEvent

error LNK2001: unresolved external symbol _IID_IMediaControl

error LNK2001: unresolved external symbol _CLSID_FilterGraph

error LNK2001: unresolved external symbol _IID_IGraphBuilder

Debug/Howtoplayafile.exe : fatal error LNK1120: 4 unresolved externals

Error executing link.exe.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: