Bagikan melalui


struktur D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA_0095 (d3d12umddi.h)

Struktur D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA_0095 adalah struktur konfigurasi komprehensif yang berisi semua parameter yang diperlukan untuk mengontrol pengodean gambar AV1 (bingkai).

Sintaks

typedef struct D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA_0095 {
  D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_0095_FLAGS           Flags;
  D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095                      FrameType;
  D3D12DDI_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_0095            CompoundPredictionType;
  D3D12DDI_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_0095           InterpolationFilter;
  D3D12DDI_VIDEO_ENCODER_AV1_RESTORATION_CONFIG_0095              FrameRestorationConfig;
  D3D12DDI_VIDEO_ENCODER_AV1_TX_MODE_0095                         TxMode;
  UINT                                                            SuperResDenominator;
  UINT                                                            OrderHint;
  UINT                                                            PictureIndex;
  UINT                                                            TemporalLayerIndexPlus1;
  UINT                                                            SpatialLayerIndexPlus1;
  D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR_0095    ReferenceFramesReconPictureDescriptors[8];
  UINT                                                            ReferenceIndices[7];
  UINT                                                            PrimaryRefFrame;
  UINT                                                            RefreshFrameFlags;
  D3D12DDI_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG_0095        LoopFilter;
  D3D12DDI_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG_0095  LoopFilterDelta;
  D3D12DDI_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG_0095       Quantization;
  D3D12DDI_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG_0095 QuantizationDelta;
  D3D12DDI_VIDEO_ENCODER_AV1_CDEF_CONFIG_0095                     CDEF;
  UINT                                                            QPMapValuesCount;
  INT16                                                           *pRateControlQPMap;
  D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG_0095             CustomSegmentation;
  D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_MAP_0095                CustomSegmentsMap;
} D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA_0095;

Anggota

Flags

Enumerasi D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_0095_FLAGS yang menentukan bendera untuk bingkai yang akan dikodekan.

FrameType

Enumerasi D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095 yang menentukan jenis bingkai yang sedang dikodekan.

CompoundPredictionType

Enumerasi D3D12DDI_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_0095 yang menentukan jenis prediksi majemuk yang akan digunakan. Terkait dengan reference_select sintaks AV1.

InterpolationFilter

Enumerasi D3D12DDI_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_0095 yang menentukan filter interpolasi yang akan digunakan untuk prediksi inter pada bingkai saat ini. Terkait dengan interpolation_filter sintaks.

FrameRestorationConfig

Struktur D3D12DDI_VIDEO_ENCODER_AV1_RESTORATION_CONFIG_0095 yang menentukan konfigurasi pemulihan bingkai yang akan digunakan.

TxMode

Enumerasi D3D12DDI_VIDEO_ENCODER_AV1_TX_MODE_0095 yang menentukan mode transformasi yang akan digunakan.

SuperResDenominator

Menunjukkan konfigurasi untuk resolusi super. Harus lebih besar dari atau sama dengan D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN (seperti yang didefinisikan oleh standar codec AV1) ketika resolusi super diaktifkan.

OrderHint

Bingkai saat ini order_hint sintaks AV1. OrderHint harus selalu diteruskan bahkan ketika tidak mengodekan petunjuk pesanan di bitstream AV1, dan harus mencerminkan urutan tampilan bingkai.

PictureIndex

Indeks gambar unik untuk bingkai ini yang akan digunakan untuk mengidentifikasinya secara unik sebagai referensi untuk bingkai di masa mendatang. Parameter ini tidak terkait dengan cara apa pun terhadap sintaks standar AV1, tetapi hanya digunakan untuk pelacakan implementasi klien D3D API sebagai gantinya.

Klien API harus menginisialisasi nilai ini pada 0 untuk D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095_KEY_FRAME pertama dan menaikkannya satu per satu pada setiap bingkai berikutnya hingga D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095_KEY_FRAME berikutnya, ketika harus diatur ulang ke nol dan mengikuti proses yang sama.

OrderHint tidak dapat digunakan untuk tujuan ini karena memiliki rentang [0..2^(OrderHintBitsMinus1+1)]maksimum , yang dapat membungkus dan tidak berfungsi sebagai pengidentifikasi unik bingkai dan referensinya.

TemporalLayerIndexPlus1

Gambar indeks lapisan temporal ditambah satu. Nilai nol menunjukkan skalabilitas temporal yang tidak digunakan. Nilai ini harus berada dalam rentang [0..D3D12DDI_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT_0095. MaxTemporalLayers].

SpatialLayerIndexPlus1

Indeks lapisan spasial gambar ditambah satu. Nilai nol menunjukkan skalabilitas spasial tidak digunakan. Nilai ini harus berada dalam rentang [0..D3D12DDI_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT_0095.MaxSpatialLayers].

ReferenceFramesReconPictureDescriptors[8]

Array struktur D3D12DDI_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR_0095 yang menjelaskan rekam jepret status saat ini dari yang lengkap (yaitu termasuk bingkai yang tidak digunakan oleh bingkai saat ini tetapi digunakan oleh bingkai di masa mendatang, dll) buffer DPB yang disimpan di D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_DESC_0082_0. ReferenceFrame. Indeks referensi (yaitu peta terakhir, altref, dll) dari referensi masa lalu/masa depan ke dalam array deskriptor ini. Codec AV1 memungkinkan hingga 8 referensi di DPB.

Array deskriptor ini, pada gilirannya, memetakan gambar referensi untuk bingkai ini ke dalam indeks sumber daya dalam array gambar yang direkonstruksi D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_DESC_0082_0.ReferenceFrames.

Ukuran array ini selalu cocok dengan D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures untuk perintah EncodeFrame terkait.

ReferenceIndices[7]

Sesuai dengan sintaks ref_frame_idx[i] AV1. Untuk jenis referensi i, ReferenceIndices[i] menunjukkan indeks antara [0..7] ke ReferenceFramesReconPictureDescriptors tempat jenis referensi i-th bingkai saat ini disimpan di DPB. Dengan kata lain ReferenceFramesReconPictureDescriptors[ReferenceIndices[i]] berisi deskriptor DPB untuk jenis referensi i-th.

Entri i-th Dari ReferenceIndices[] sesuai dengan setiap jenis referensi sebagai berikut.

Indeks i Jenis referensi ReferenceFramesReconPictureDescriptors[ReferenceIndices[i]]
0 Belakang Deskriptor DPB untuk Terakhir
1 Terakhir2 Deskriptor DPB untuk Last2
2 Terakhir3 Deskriptor DPB untuk Last3
3 Golden Deskriptor DPB untuk Emas
4 Bwdref Deskriptor DPB untuk Bwdref
5 Altref Deskriptor DPB untuk Altref
6 Altref2 Deskriptor DPB untuk Altref2

PrimaryRefFrame

Sesuai dengan sintaks elemen AV1 primary_ref_frame di uncompressed_header(). Menentukan bingkai referensi mana yang berisi nilai CDF dan status lain yang harus dimuat di awal bingkai. Rentang yang diizinkan adalah [0..7] dan nilainya sesuai sebagai berikut:

Nilai PrimaryRefFrame Nilai sintaks AV1 (primary_ref_frame) Bingkai referensi dipilih
0 0 Belakang
1 1 Terakhir2
2 2 Terakhir3
3 3 Golden
4 4 Bwdref
5 5 Altref
6 6 Altref2
7 7 (PRIMARY_REF_NONE) Tidak ada

RefreshFrameFlags

Sesuai dengan elemen sintaks refresh_frame_flags AV1.

LoopFilter

Struktur D3D12DDI_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG_0095 yang menentukan parameter filter perulangan yang akan digunakan.

LoopFilterDelta

Struktur D3D12DDI_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG_0095 yang menentukan parameter delta filter perulangan yang akan digunakan.

Quantization

Struktur D3D12DDI_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG_0095 yang menentukan parameter kuantisasi yang akan digunakan.

QuantizationDelta

Struktur D3D12DDI_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG_0095 yang menentukan parameter delta kuantisasi yang akan digunakan.

CDEF

Struktur D3D12DDI_VIDEO_ENCODER_AV1_CDEF_CONFIG_0095 yang menentukan parameter pemfilteran peningkatan arah (CDEF) yang dibatasi yang akan digunakan.

QPMapValuesCount

Berisi jumlah elemen yang ada dalam pRateControlQPMap. Nilai ini harus cocok dengan jumlah blok pengodean dalam bingkai, yang membulatkan resolusi bingkai ke nilai yang diratakan terdekat.

pRateControlQPMap

Array yang berisi, dalam urutan pemindaian baris/kolom, nilai peta QP yang akan digunakan pada setiap wilayah kuadrat untuk bingkai ini. Dimensi peta QP dapat dihitung menggunakan resolusi dan D3D12DDI_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS_0080_2 saat ini. QPMapRegionPixelsSize yang menyampaikan ukuran wilayah kuadrat. Rentang untuk nilai QP Delta adalah [-255; 255].

CustomSegmentation

Struktur D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG_0095 yang menentukan parameter segmentasi kustom yang akan digunakan. Hanya digunakan ketika D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_0095_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM diatur untuk bingkai saat ini.

CustomSegmentsMap

Hanya digunakan ketika D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_0095_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM diatur untuk bingkai saat ini. Struktur D3D12DDI_VIDEO_ENCODER_AV1_SEGMENTATION_MAP_0095 yang menentukan peta segmentasi kustom yang akan digunakan jika CustomSegmentation.UpdateMap diatur. Jika tidak, peta segmen diwariskan dari bingkai referensi.

Keterangan

Ekspektasi Manajemen DPB

Berikut ini adalah kontrak klien API dan driver harus sesuai dengan saat menggunakan API ini:

  1. Saat mengodekan D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095_KEY_FRAME:

    • PrimaryReframe harus 7 (PRIMARY_REF_NONE)
    • RefreshFrameFlags harus 0xFF (sesuai dengan sintaks bitstream standar codec AV1)
    • Untuk semua entri array di ReferenceFramesReconPictureDescriptors, ReconstructedPictureResourceIndex harus diatur ke D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX
    • Nilai dalam ReferenceIndices[7] tidak jelas karena nilai apa pun [0..7] akan menunjuk ke slot DPB yang tidak digunakan di ReferenceFramesReconPictureDescriptors sesuai titik di atas.
    • D3D12DDI_VIDEO_ENCODE_REFERENCE_FRAMES_0082_0 akan diisi sebagai:
      • NumTexture2Ds = 0
      • ppTexture2Ds = NULL
      • pSubresources = NULL
  2. Saat mengodekan jenis bingkai dengan referensi (yaitu. SWITCH/INTER):

    • PrimaryRefFrame menentukan bingkai referensi mana yang berisi nilai CDF dan status lain yang harus dimuat di awal bingkai.

    • RefreshFrameFlags harus diatur sesuai untuk menunjukkan pada slot DPB ReferenceFramesReconPictureDescriptors mana yang menjadi slot rekonstruksi bingkai yang dikodekan saat ini akan ditempatkan setelah eksekusi pengodean. Nilai ini harus sama persis dengan apa yang akan dikodekan klien API untuk elemen sintaks refresh_frame_flags AV1 di header gambar terkait untuk bingkai saat ini.

    • Entri array dalam ReferenceFramesReconPictureDescriptors untuk bingkai saat ini akan mengikuti dengan tepat apa yang ditunjukkan RefreshFrameFlags untuk bingkai sebelumnya.

      • Misalnya: jika RefreshFrameFlags menunjukkan bingkai N saat ini akan ditempatkan di slot 2, 3 dan 6, kemudian dalam panggilan EncodeFrame berikutnya untuk bingkai N+1, parameter ReconstructedPictureResourceIndex dalam entri ReferenceFramesReconPictureDescriptors[1], ReferenceFramesReconPictureDescriptors[2], parameter ReferenceFramesReconPictureDescriptors[5] harus menunjuk ke bingkai N gambar yang direkonstruksi dalam D3D12DDI_VIDEO_ENCODE_REFERENCE_FRAMES_ 0080.

      • Perhatikan hal ini termasuk mempertimbangkan RefreshFrameFlags=0xFF untuk D3D12DDI_VIDEO_ENCODER_AV1_FRAME_TYPE_0095_KEY_FRAME juga, dengan menandai semua entri ReferenceFramesReconPictureDescriptors yang menunjuk ke gambar yang direkonstruksi bingkai KEY.

      • Jika gambar (bukan bingkai kunci) tidak akan ditandai dengan D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_0080_USED_AS_REFERENCE_PICTURE, RefreshFrameFlags-nya harus nol untuk menunjukkan hal ini.

    • Nilai dalam ReferenceIndices[7] berada dalam [0..7] dan mengarah ke slot DPB di ReferenceFramesReconPictureDescriptors.

    • Nilai ReferenceIndices[7] harus sama persis dengan kode klien API di header gambar untuk ref_frame_idx.

    • Sesuai definisi sintaks AV1 dari ref_frame_idx tidak ada persyaratan bahwa nilai entri array harus unik.

    • Jika ReferenceFramesReconPictureDescriptors[ReferenceIndices[i]]. ReconstructedPictureResourceIndex == D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX

      • Ini menunjukkan gambar referensi i-th tidak akan digunakan untuk bingkai saat ini dan harus diabaikan.
    • Jika tidak ( Valid ReferenceFramesReconPictureDescriptors[ReferenceIndices[i]]. ReconstructedPictureResourceIndex)

      • Ini menunjukkan referensi i-th akan menunjuk ke slot DPB ReferenceIndices[i] dan gambar yang direkonstruksi yang akan digunakan D3D12DDI_VIDEO_ENCODE_REFERENCE_FRAMES_0080. ppTexture2Ds[ReferenceFramesReconPictureDescriptors[ReferenceIndices[i]].ReconstructedPictureResourceIndex]
    • D3D12DDI_VIDEO_ENCODE_REFERENCE_FRAMES_0080 akan diisi sebagai:

      • NumTexture2Ds = {number of unique values of ReferenceFramesReconPictureDescriptors.ReconstructedPictureResourceIndex[j] != D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX untuk j di {0..7} }
      • ppTexture2Ds = { compact array (tanpa entri null) yang berisi gambar yang direkonstruksi dari bingkai yang dikodekan sebelumnya yang akan digunakan sebagai referensi }
      • [Mode Array Tekstur saja] pSubresources = { compact array (tanpa entri null) yang berisi indeks sub sumber daya array tekstur dari bingkai yang dikodekan sebelumnya yang akan digunakan sebagai referensi }
  3. Saat mengodekan jenis bingkai tanpa referensi tetapi tanpa menghapus DPB (yaitu. INTRA_ONLY)

    • PrimaryReframe harus 7 (PRIMARY_REF_NONE)

    • RefreshFrameFlags harus diatur sesuai untuk menunjukkan pada slot DPB ReferenceFramesReconPictureDescriptors mana yang menjadi slot rekonstruksi bingkai yang dikodekan saat ini akan ditempatkan setelah eksekusi pengodean. Nilai ini harus sama persis dengan apa yang akan dikodekan klien API untuk elemen sintaks refresh_frame_flags AV1 di header gambar terkait untuk bingkai saat ini.

    • Entri array dalam ReferenceFramesReconPictureDescriptors untuk bingkai saat ini akan mengikuti dengan tepat apa yang ditunjukkan RefreshFrameFlags untuk bingkai sebelumnya.

    • Nilai dalam ReferenceIndices[7] diabaikan karena bingkai intra-only tidak menggunakan referensi apa pun.

    • D3D12DDI_VIDEO_ENCODE_REFERENCE_FRAMES_0080 berisi rekam jepret DPB dan akan diisi sebagai:

      • NumTexture2Ds = {number of unique values of ReferenceFramesReconPictureDescriptors.ReconstructedPictureResourceIndex[j] != D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX untuk j di {0..7} }
      • ppTexture2Ds = { compact array (tanpa entri null) yang berisi gambar yang direkonstruksi dari bingkai yang dikodekan sebelumnya yang dirujuk oleh ReferenceFramesReconPictureDescriptors.ReconstructedPictureResourceIndex[j] untuk j di {0..7} }
      • [Mode Array Tekstur saja] pSubresources = { compact array (tanpa entri null) yang berisi indeks sub sumber daya array tekstur dari bingkai yang dikodekan sebelumnya yang disebut oleh ReferenceFramesReconPictureDescriptors.ReconstructedPictureResourceIndex[j] untuk j di {0..7} }

Lihat Pengodean video D3D12 AV1 untuk informasi selengkapnya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 11, versi 24H2 (WDDM 3.2)
Header d3d12umddi.h

Lihat juga

D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_0082_0