MPEG2_TRANSPORT_STRIDE 结构

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 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)为 。

备注

下图说明了结构成员之间的关系。

mpeg-2 步幅数据包

包含多路复用步幅数据包的输入缓冲区有一些限制:

  • 步幅数据包必须在缓冲区中连续打包。
  • 第一个步幅数据包之前或最后一个步幅数据包之前不能有字节。
  • 缓冲区中必须容纳整型步幅数据包数;也就是说,缓冲区长度 % dwStride 等于零。

每个缓冲区的步幅数据包数没有限制。

如果媒体类型不包含格式块 (pbFormatNULL) ,则使用以下默认值:

  • dwOffset: 0
  • dwPacketLength: 188
  • dwStride: 188

要求

要求
标头
Bdatypes.h

另请参阅

DirectShow 结构

MPEG-2 媒体类型