如何使用DvbSiparser.h解析vc++中的mpeg2 TS?

How to use DvbSiparser.h to parser mpeg2 TS in vc++?

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

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

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

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

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

毕竟我又读了 MSDN about DvbSiParser2 并面对这个重要的注意事项:

The IDvbSiParser2 interface inherits from IDvbSiParser. IDvbSiParser2 also has these types of members:

因此,我们可以使用 IDvbSiParser2 而不是 IDvbSiParser,因为我们知道 IDvbSiParser2 MSDN Doc 中提到的 IDvbSiParser 具有正确且真实的 CLSID。 下一步包括像这样定义新的 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。