Skip to content

d3d12: Video encode temporal layers

Sil Vilerino requested to merge sivileri/mesa:d3d12_temporal_layers_h264 into main

Adds d3d12 gallium driver video encode support for:

  • Writing temporal scalability headers when requested by frontend in pipe_h264_enc_picture_desc.raw_headers
    • SEI headers (H264_SEI_SCALABILITY_INFO)
    • Slice prefix headers (NAL_TYPE_PREFIX)
    • Fix in H264 SPS for gaps_in_frame_num_value_allowed_flag when temporal layers are enabled
  • Fix in d3d12_video_encoder_references_manager_h264 to use frame_num from slice header
  • Plumb temporal_id from the frontends into D3D12 pic params and DPB entries. Note that some frontends like VA don't currently pass the DPB temporal_id hint, but adding the full plumbing into pipe for the future MFT frontend that will pass this info.
  • Reports support for multiple layers in PIPE_VIDEO_CAP_MAX_TEMPORAL_LAYERS

cc @jenatali

Merge request reports