Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Direct3D12 video kodlama özelliği, Windows 11, sürüm 24H2 (WDDM 3.2) ile başlayan AV1 kodlamasını destekleyecek şekilde genişletilmiştir. Bu makalede, mevcut D3D12 Video Kodlama DDI'sinin AV1 kodlamasını desteklemek için değişikliklere ve yeni yapılara ihtiyaç duyduğu uzantı noktaları açıklanmaktadır. Uygulama düzeyi özellikleri de dahil olmak üzere daha fazla bilgi için bkz. AV1 D3D12 Video Kodlama Belirtimi.
Hız denetimi için uzantılar
Aşağıdaki mevcut numaralandırmalar hız denetimi ve hız denetimi desteği için uzantılarla güncelleştirilir:
hız denetimi destek bayrakları D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0 eklendi
Hız denetimi bayrakları D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_FLAGS_0080 eklenmiştir.
Aşağıdaki genişletilmiş (Uzantı 1) D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_XXX1 yapıları eklenir ve D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS bunları içerecek şekilde güncelleştirilir. QualityVsSpeed tüm modlara eklenir ve VBVCapacity ve InitialVBVFullness ek olarak _QVBR1 eklenir.
D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_FLAG_0096_ENABLE_EXTENSION1_SUPPORT etkinleştirildiğinde, genişletilmiş hız denetimi yapıları D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS_0080_2.pConfiguration_XXX içinde kullanılır; devre dışı bırakıldığında ise eski yapılar, D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_FLAGS_0080 başvuru sayfasında belgelenen tabloda belirtildiği gibi kullanılır.
Video kodlama desteği uzantıları
Mevcut videoyla ilgili çerçeve, sürücülerin AV1 video kodlama desteği ve özelliklerini raporlamasına olanak tanıyacak şekilde genişletilmiştir. Bu bölümde, AV1 video kodlama desteğini sorgulamak ve raporlamak için kullanılan eklenen veya güncelleştirilmiş yapılar ve numaralandırmalar listelenir.
D3D12DDI_FEATURE_VERSION_VIDEO_0095_0 , Windows 11, sürüm 24H2'de (WDDM 3.2) tanıtılan tüm D3D12 video kodlama kilometre taşlarının en düşük uygulamasını tanımlayan sürüm numarasıdır
D3D12DDICAPS_TYPE_VIDEO_0020 numaralandırması, aşağıdaki video kodlama destek değerlerini içerecek şekilde genişletilmiştir:
- D3D12DDICAPS_TYPE_VIDEO_0095_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
- D3D12DDICAPS_TYPE_VIDEO_0096_ENCODER_SUPPORT1
D3D12DDI_VIDEO_ENCODER_CODEC_0080'aD3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1 eklendi
sürücü tarafından desteklenen AV1 profillerini tanımlamak için D3D12DDI_VIDEO_ENCODER_AV1_PROFILE_0095 numaralandırması eklendi. Sürücü, sorguya belirli bir D3D12DDI_VIDEO_ENCODER_AV1_PROFILE_0095 girişi için isteğe bağlı olarak desteklenen biçimleri raporlamak için D3D12DDICAPS_VIDEO_ENCODER_INPUT_FORMAT_DATA_0080_2 kullanır.
D3D12DDI_VIDEO_ENCODER_PROFILE_DESC_0080_2 , AV1 profilini (pAV1Profile) içerecek şekilde güncelleştirilir.
Aşağıdaki yapılar ve numaralandırmalar, AV1 kodlamasını destekleyecek şekilde eklenir veya genişletilir:
D3D12DDI_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS_0095 (pAV1LevelSettingD3D12DDI_VIDEO_ENCODER_LEVEL_SETTING_0080_2'ye eklenmiştir)
D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080, D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0095_UNIFORM_GRID_PARTITION ve D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0095_CONFIGURABLE_GRID_PARTITION'i içerecek şekilde genişletilir.
D3D12DDI_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL_0095D3D12DDI_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_0080'a eklendi
D3D12DDI_VIDEO_ENCODER_AV1_TX_MODE_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_TX_MODE_0095_FLAGS
D3D12DDI_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_0095_FLAGS
D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_0095_FLAGS
D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_0095_FLAGS
D3D12DDI_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT, pAV1SupportD3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_0083_0 ile eklendi
D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095_FLAGS
D3D12DDI_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT_0095, pAV1Support ile D3D12DDI_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_0080_2 eklendi
D3D12DDI_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT_0095 ve D3D12DDI_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_0095_FLAGS
D3D12DDI_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_0095 ve D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT_0095
pAV1ConfigD3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_0082_0 eklendi
D3D12DDI_VIDEO_ENCODER_VALIDATION_FLAG_0080_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED bayrağı, genişletilmiş D3D12DDICAPS_TYPE_VIDEO_0096_ENCODER_SUPPORT1 sorgu kapasitesi ile kullanmak için D3D12DDI_VIDEO_ENCODER_VALIDATION_FLAGS_0080'a eklenmiştir.
D3D12DDICAPS_VIDEO_ENCODER_SUPPORT1_DATA_0096 , önceki D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA_0083_0 sorgusunu genişletmek için eklenir ve parametreler yapının en altına eklenir. Bu genişletilmiş sorgu tüm H264, HEVC ve AV1 codec bileşenleriyle kullanılabilir ve tam olarak D3D12_FEATURE_VIDEO_ENCODER_SUPPORT semantik olarak davranmalıdır.
D3D12DDI_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS_0080_2'nin MaxSubregionsNumber, SubregionBlockPixelsSize ve QPMapRegionPixelsSize üyelerinin semantiği AV1 için güncelleştirilir.
_D3D12DDI_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE_0095 ve pAV1SequenceStructure, D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0'ye eklenir.
Kodlama işlemi
AV1 için beklenen bit akışı başlık değerleri
Sürücü/ana bilgisayar başlık kodlama sorumlulukları
K kutucukları ile kodlanmış bir çerçeve verildiğinde, sürücü sıkıştırılmış bit akışında EncodeFrame bağımsız değişkenlerinde istenen kutucuklara karşılık gelen K decode_tile() AV1 söz dizimi öğelerini yazar.
Ardından API İstemcisi, kutucukların sırayla yerleştirilmesi koşuluyla, tile_start_and_end_present_flag/tg_start/tg_end öğelerini kullanarak kutucukları istenen şekilde kutucuk gruplarına yerleştirmek için tile_group_obu() AV1 söz dizimi öğelerini oluşturur. tile_size_minus_1 öğesi ilgili kutucuktan kodlanır D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA bilgileri ve decode_tile() öğeleri sıkıştırılmış bit akışı arabelleğinden kopyalanır. Son olarak, her bir tile_group_obu(), OBU_TILE_GROUP türündeki open_bitstream_unit() öğeleri etrafında sarılır ve başına bir OBU_FRAME_HEADER eklenir. Tek bir kutucuk grubu için bunun yerine bir OBU_FRAME türü kullanılabilir.
API İstemcisi, şu anki çerçeve için ob_extension_flag !(TemporalLayerIndexPlus1 || SpatialLayerIndexPlus1)
olarak belirlemekten ve gerekirse open_bitstream_unit() içinde temporal_id ve spatial_id kodlamakla sorumludur.
D3D12 Kodlama API'sinde uygulanan diğer codec bileşenleri gibi EncodeFrame gönderimleri de kod sırasına göredir.
Çözüm değişiklikleri ve uzamsal ölçeklenebilirlik
Sürücü D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE bildirirse, yine de yalnızca anahtar çerçevedeki çözüm değişiklikleri için geçerlidir.
Etkin sıra üst bilgisinde, kullanılan ilişkili ID3D12VideoEncoderHeap içinde en yüksek çözünürlüğe ayarlanmış max_frame_*_minus_1 söz dizimi olmalıdır. İlişkilendirilmiş ID3D12VideoEncoderHeap içinde bulunan çözünürlük kullanan farklı kareler, frame_size() içindeki AV1 söz dizimini frame_size_override_flag kullanarak çözünürlük değişikliğini iletebilir.
D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME destekleniyorsa:
- Başvuru çerçeveleri, kodlanan mevcut geçiş çerçevesinden daha yüksek veya eşit çözünürlüğe sahip olmalıdır.
- Farklı çözünürlüklerin tümü, kullanılan ilişkili ID3D12VideoEncoderHeap içinde mevcut olmalıdır.
Benzer şekilde, uzamsal ölçeklenebilirlik destekleniyorsa, başvuru çerçevelerinin farklı çözünürlüklerinin tümü kullanılan ilişkili ID3D12VideoEncoderHeap içinde mevcut olmalıdır.
Hız kontrol notları
D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_QVBR1_0096.ConstantQualityTarget için kabul edilen aralık :[0..63]. En düşük değer en yüksek kaliteyi verir.
Genel olarak, D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE kalite ile hız ayarlaması ve farklı hız denetimi modlarının şu aşağıdaki hız denetimi parametreleri için geçerlidir: sabit QP'deki QP, CBR, VBR ve QVBR'deki bit hızları ve kalite düzeyleri. Sürücü, desteklenmeyen diğer hız denetimi parametresi yeniden yapılandırması için D3D12DDI_VIDEO_ENCODER_ENCODE_ERROR_FLAG_0082_0_RECONFIGURATION_REQUEST_NOT_SUPPORTED değerini D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0.EncodeErrorFlags içinde döndürebilir.
Kodlama işlemi API'si
Aşağıdaki yapılar ve numaralandırmalar, AV1 kodlama işlemini desteklemek için uzantılarla eklenir veya güncelleştirilir:
D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO_0095
D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR_0095
D3D12DDI_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG_0095
D3D12DDI_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG_0095
pAV1PicDataD3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_0082_0 eklendi
D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095
pTilesPartition_AV1D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2'a eklenir
Ayrıca, bir sürücünün mevcut PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 geri çağırması, AV1 kodlaması için eklenen AV1'e özgü çözümlenmiş arabellek düzenini işleyecek şekilde güncelleştirilmesi gerekir.