MPEG2_TRANSPORT_STRIDE 结构
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
结构 MPEG2_TRANSPORT_STRIDE
描述 MPEG-2 传输流 (TS) 数据包的格式。 此结构允许传输流,其中的 188 字节传输数据包不是连续的。 就本文档而言,此类数据包称为 步幅数据包。
步幅数据包由以下媒体类型标识:
Label | 值 |
---|---|
主要类型 | MEDIATYPE_Stream |
子类型 | MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE |
格式类型 | FORMAT_None |
(pbFormat) 的格式块是可选的。 如果包含格式块,则它必须以 MPEG2_TRANSPORT_STRIDE 结构开头。 此结构定义步幅数据包内传输数据包的布局。 如果格式块为 NULL,则假定数据包使用一组默认值;有关详细信息,请参阅备注部分。
语法
typedef struct _MPEG2_TRANSPORT_STRIDE {
DWORD dwOffset;
DWORD dwPacketLength;
DWORD dwStride;
} MPEG2_TRANSPORT_STRIDE, *PMPEG2_TRANSPORT_STRIDE;
成员
-
dwOffset
-
指定从数据包的开头到嵌入传输数据包的第一个字节的偏移量(以字节为单位)。 该值的范围必须介于零到
(dwStride - dwPacketLength)
(含 )之间。 -
dwPacketLength
-
指定嵌入式传输数据包的长度(以字节为单位)。 对于标准 MPEG-2 传输数据包,该值必须为 188 字节。
-
dwStride
-
指定整个步幅数据包的长度(以字节为单位)。 该值必须至少
(dwOffset + dwPacketLength)
为 。
备注
下图说明了结构成员之间的关系。
包含多路复用步幅数据包的输入缓冲区有一些限制:
- 步幅数据包必须在缓冲区中连续打包。
- 第一个步幅数据包之前或最后一个步幅数据包之前不能有字节。
- 缓冲区中必须容纳整型步幅数据包数;也就是说,缓冲区长度 % dwStride 等于零。
每个缓冲区的步幅数据包数没有限制。
如果媒体类型不包含格式块 (pbFormat 为 NULL) ,则使用以下默认值:
- dwOffset: 0
- dwPacketLength: 188
- dwStride: 188
要求
要求 | 值 |
---|---|
标头 |
|
另请参阅