3

我有一个 Mpeg2 TS 应该被分析。我正在使用 Windows Kit 版本 8(或 8.1)中引入的名为Dvbsiparser.h 的头文件。
我知道(但不确定)我应该构建一个过滤器图,然后添加两个重要过滤器:
1. Mpeg2 部分和表 2. Mpeg2 传输信息 然后,我使用 IDvbSiParser obj 来分析流。当我想实例化 IDvbSiParser 时:

CoCreateInstance(__uuidof(IDvbSiParser), ..., ..., IID_IDvbSiParser, ...)

我收到链接错误:未解析的外部 IID_IDvbSiParser。

我使用 Visual stdio 2013、.Net 4.5 和 msvc++。我还包括了 stream.h 和链接 winmm.lib、strmbased.lib、msvcrtd.lib 和 strmiids.lib,并将真正的 lib 路径设置为 windows 套件。除 IDvbSiParser 之外的所有其他对象均已创建。

我应该使用另一个库还是包含另一个头文件?如何找到适合 IID_IDvbSiParser 的库?谢谢。

4

1 回答 1

2

毕竟我再次阅读了关于 DvbSiParser2 的 MSDN并遇到了这个重要的注意事项:

IDvbSiParser2 接口继承自 IDvbSiParser。IDvbSiParser2 也有这些类型的成员:

因此,我们可以使用 IDvbSiParser2 代替 IDvbSiParser,因为我们知道 IDvbSiParser 的正确且真实的 CLSID 在IDvbSiParser2 MSDN Doc中提到。下一步包括像这样定义新的 GUID 变量:

GUID CLSID_IDvbSiParser2 = {0xF6B96EDA, 0x1A94, 0x4476, 0xA8, 0x5F, 0X4D, 0x3D, 0xC7, 0xB3, 0x9C, 0x3F};
IDvbSiParser2 *ppdvbsp;
HRESULT hr = CoCreateInstance(CLSID_IDvbSiParser2, NULL, CLSCTX_INPROC_SERVER, __uuidof(IDvbSiParser2), void **( pDvbsiparser ));
if (SUCCEEDED(hr)) { lab lab lab};

我想你会像我一样得到 S_OK。

于 2016-01-12T15:51:47.457 回答