D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC 结构 (d3d12video.h)

表示序列级别的视频编码操作输入的参数。

语法

typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
  D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS                 Flags;
  D3D12_VIDEO_ENCODER_INTRA_REFRESH                          IntraRefreshConfig;
  D3D12_VIDEO_ENCODER_RATE_CONTROL                           RateControl;
  D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC                PictureTargetResolution;
  D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE            SelectedLayoutMode;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
  D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE                 CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;

成员

Flags

D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS枚举中的值的按位 OR 组合,指定当前操作的序列控件描述符标志。

IntraRefreshConfig

一个D3D12_VIDEO_ENCODER_INTRA_REFRESH结构,用于指定在触发刷新内会话时应使用的刷新内模式的参数。

使用双向参考帧 (B 帧) 与刷新内是互斥的。 如果刷新内模式处于活动状态,调用方应验证 GOP 结构是否不包含 B 帧。 使用 非D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE 刷新模式查询 D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT时,指定的 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE 集不得包含 B 帧,否则查询将不返回任何支持。

通过在每次刷新完成后定期请求新一波的内刷新,可以使用无限内刷新。

当启动持续时间的 N 帧的内刷新时,主机设置相应的图片控件标志以启动内刷新,并控制在图片控件结构中 [0..N) 之间的帧索引,以提示驱动程序有关内部刷新会话的进度。

显式请求持续时间为 N 帧的刷新波次时的预期行为:

  • 如果内部刷新请求发生在 GOP 的开头,则 N 帧的内刷新 ocurrs,然后新的 GOP 将启动 I 帧。

  • 如果内部刷新请求发生在 GOP 中间,则图片组将结束,直到最后一个 EncodeFrame 命令提交并在刷新内会话后重启,新的 GOP 以 I 帧开头。 例如,当 GOP 为 IPPPP...IPPPP...如果在 GOP 的“IPP”部分提交时请求刷新内启动,则将忽略该 GOP 的最后两个 P 帧,将为下一个帧发出刷新内会话,然后预期会重启 GOP 结构的新关键帧。

  • 对于基于行的内刷新,配置的 GOP 结构必须重新配置为无限 IPPP...P。。。GOP (GOPLength = 0u,PPicturePeriod = 1u) ,在刷新会话期间。 然后,可以在 IR 波形完成后再次重新配置它。

  • 对于基于行的内刷新,配置的子区域分区模式将重新配置为与每帧的 N 个统一切片分区相对应,持续时间为 N EncodeFrame 命令。 当子区域分区设置为与 IR 要求不兼容的模式时,这一点尤其重要,例如,当切片中的编码单元行将中断设置为每个切片的字节数的限制时。 基于行的内刷新预期是,生成的帧包含 N 个切片、所有 P 切片,当前内部刷新行切片除外,该切片必须是 I 切片。

RateControl

指定速率控制配置的 D3D12_VIDEO_ENCODER_RATE_CONTROL 结构。

检查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE中对速率控制动态重新配置的支持。 如果通过修改 RateControl 允许速率控制动态重新配置,则会使用从执行关联的 EncodeFrame 开始的新配置重启速率控制算法。 否则,应在编码会话开始时设置,之后不会更改。

PictureTargetResolution

描述编码此帧时要使用的分辨率 的D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC 结构。

检查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE中是否支持解析动态重新配置。 如果未提供对此的支持, 则 PictureTargetResolution 指示完整编码会话的目标分辨率,并且不得在编码会话期间更改。 否则,这表示用于关联 EncodeFrame 命令的分辨率。

必须基于为此操作创建关联的编码器堆时指定的分辨率列表来设置目标。

对于某些编解码器,编码会话中途的分辨率更改可能需要使用潜在强制 UDP/关键帧请求重置 GOP,还可能需要重置 DPB 缓冲区/帧管理算法。

SelectedLayoutMode

D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE枚举中的值,指定正在使用哪种布局模式,从而指定在 pFrameSubregionsLayoutData 中使用的联合成员。

检查 [D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE] ( (ne-d3d12video-d3d12_video_encoder_support_flags.md) 中对子区域动态重新配置的支持。 如果未对此提供支持,则表示完整编码会话的目标子区域模式,并且不得在编码会话期间更改。 否则,这表示用于关联 EncodeFrame 命令的子区域分区模式。

FrameSubregionsLayoutData

指定图片子区域布局可选编解码器特定数据的 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA 结构。 如果指定的 SelectedLayoutMode 值指示没有子区域,则预期为 null。

CodecGopSequence

一个D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE结构,用于指定视频序列中使用的当前 GOP(按显示顺序)。 对 EncodeFrame 的调用必须遵循此 GOP,但在 B 帧重新排序后按编码顺序进行。

检查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE中对 GOP 动态重新配置的支持。 如果未对此提供支持, 则 CodecGopSequence 指示目标 GOP 模式 (完整编码会话) 显示顺序,并且不得在编码会话期间更改。 否则,这表示从关联的 EncodeFrame 命令开始使用的新 GOP 子区域模式。

要求

要求
最低受支持的客户端 Windows 内部版本 22000
最低受支持的服务器 Windows 内部版本 22000
标头 d3d12video.h