Compartilhar via


estrutura DXVA_PicParams_AV1 (dxva.h)

A estrutura DXVA_PicParams_AV1 fornece os parâmetros de nível de imagem de uma imagem compactada para decodificação de vídeo AV1.

Sintaxe

typedef struct _DXVA_PicParams_AV1 {
  UINT              width;
  UINT              height;
  UINT              max_width;
  UINT              max_height;
  UCHAR             CurrPicTextureIndex;
  UCHAR             superres_denom;
  UCHAR             bitdepth;
  UCHAR             seq_profile;
  struct {
    UCHAR  cols;
    UCHAR  rows;
    USHORT context_update_id;
    USHORT widths[64];
    USHORT heights[64];
  } tiles;
  union {
    struct {
      UINT use_128x128_superblock : 1;
      UINT intra_edge_filter : 1;
      UINT interintra_compound : 1;
      UINT masked_compound : 1;
      UINT warped_motion : 1;
      UINT dual_filter : 1;
      UINT jnt_comp : 1;
      UINT screen_content_tools : 1;
      UINT integer_mv : 1;
      UINT cdef : 1;
      UINT restoration : 1;
      UINT film_grain : 1;
      UINT intrabc : 1;
      UINT high_precision_mv : 1;
      UINT switchable_motion_mode : 1;
      UINT filter_intra : 1;
      UINT disable_frame_end_update_cdf : 1;
      UINT disable_cdf_update : 1;
      UINT reference_mode : 1;
      UINT skip_mode : 1;
      UINT reduced_tx_set : 1;
      UINT superres : 1;
      UINT tx_mode : 2;
      UINT use_ref_frame_mvs : 1;
      UINT enable_ref_frame_mvs : 1;
      UINT reference_frame_update : 1;
      UINT Reserved : 5;
    };
    UINT32 CodingParamToolFlags;
  } coding;
  union {
    struct {
      UCHAR frame_type : 2;
      UCHAR show_frame : 1;
      UCHAR showable_frame : 1;
      UCHAR subsampling_x : 1;
      UCHAR subsampling_y : 1;
      UCHAR mono_chrome : 1;
      UCHAR Reserved : 1;
    };
    UCHAR FormatAndPictureInfoFlags;
  } format;
  UCHAR             primary_ref_frame;
  UCHAR             order_hint;
  UCHAR             order_hint_bits;
  DXVA_PicEntry_AV1 frame_refs[7];
  UCHAR             RefFrameMapTextureIndex[8];
  struct {
    UCHAR  filter_level[2];
    UCHAR  filter_level_u;
    UCHAR  filter_level_v;
    UCHAR  sharpness_level;
    union {
      struct {
        UCHAR mode_ref_delta_enabled : 1;
        UCHAR mode_ref_delta_update : 1;
        UCHAR delta_lf_multi : 1;
        UCHAR delta_lf_present : 1;
        UCHAR Reserved : 4;
      };
      UCHAR  ControlFlags;
    } DUMMYUNIONNAME;
    CHAR   ref_deltas[8];
    CHAR   mode_deltas[2];
    UCHAR  delta_lf_res;
    UCHAR  frame_restoration_type[3];
    USHORT log2_restoration_unit_size[3];
    UINT16 Reserved16Bits;
  } loop_filter;
  struct {
    union {
      struct {
        UCHAR delta_q_present : 1;
        UCHAR delta_q_res : 2;
        UCHAR Reserved : 5;
      };
      UCHAR  ControlFlags;
    } DUMMYUNIONNAME;
    UCHAR  base_qindex;
    CHAR   y_dc_delta_q;
    CHAR   u_dc_delta_q;
    CHAR   v_dc_delta_q;
    CHAR   u_ac_delta_q;
    CHAR   v_ac_delta_q;
    UCHAR  qm_y;
    UCHAR  qm_u;
    UCHAR  qm_v;
    UINT16 Reserved16Bits;
  } quantization;
  struct {
    union {
      struct {
        UCHAR damping : 2;
        UCHAR bits : 2;
        UCHAR Reserved : 4;
      };
      UCHAR  ControlFlags;
    } DUMMYUNIONNAME;
    union {
      struct {
        UCHAR primary : 6;
        UCHAR secondary : 2;
      };
      UCHAR  combined;
    };
    __unnamed_union_151d_60 y_strengths[8];
    union {
      struct {
        UCHAR primary : 6;
        UCHAR secondary : 2;
      };
      UCHAR  combined;
    };
    __unnamed_union_151d_62 uv_strengths[8];
  } cdef;
  UCHAR             interp_filter;
  struct {
    union {
      struct {
        UCHAR enabled : 1;
        UCHAR update_map : 1;
        UCHAR update_data : 1;
        UCHAR temporal_update : 1;
        UCHAR Reserved : 4;
      };
      UCHAR  ControlFlags;
    } DUMMYUNIONNAME;
    UCHAR                   Reserved24Bits[3];
    union {
      struct {
        UCHAR alt_q : 1;
        UCHAR alt_lf_y_v : 1;
        UCHAR alt_lf_y_h : 1;
        UCHAR alt_lf_u : 1;
        UCHAR alt_lf_v : 1;
        UCHAR ref_frame : 1;
        UCHAR skip : 1;
        UCHAR globalmv : 1;
      };
      UCHAR  mask;
    };
    __unnamed_union_151d_67 feature_mask[8];
    SHORT                   feature_data[8][8];
  } segmentation;
  struct {
    union {
      struct {
        USHORT apply_grain : 1;
        USHORT scaling_shift_minus8 : 2;
        USHORT chroma_scaling_from_luma : 1;
        USHORT ar_coeff_lag : 2;
        USHORT ar_coeff_shift_minus6 : 2;
        USHORT grain_scale_shift : 2;
        USHORT overlap_flag : 1;
        USHORT clip_to_restricted_range : 1;
        USHORT matrix_coeff_is_identity : 1;
        USHORT Reserved : 3;
      };
      USHORT ControlFlags;
    } DUMMYUNIONNAME;
    USHORT grain_seed;
    UCHAR  scaling_points_y[14][2];
    UCHAR  num_y_points;
    UCHAR  scaling_points_cb[10][2];
    UCHAR  num_cb_points;
    UCHAR  scaling_points_cr[10][2];
    UCHAR  num_cr_points;
    UCHAR  ar_coeffs_y[24];
    UCHAR  ar_coeffs_cb[25];
    UCHAR  ar_coeffs_cr[25];
    UCHAR  cb_mult;
    UCHAR  cb_luma_mult;
    UCHAR  cr_mult;
    UCHAR  cr_luma_mult;
    UCHAR  Reserved8Bits;
    SHORT  cb_offset;
    SHORT  cr_offset;
  } film_grain;
  UINT              Reserved32Bits;
  UINT              StatusReportFeedbackNumber;
} DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1;

Membros

width

Largura codificada do quadro atual. Corresponde ao elemento de sintaxe frame_width_minus_1. Consulte Observações.

height

Altura codificada do quadro atual. Corresponde ao elemento de sintaxe frame_height_minus_1. Consulte Observações.

max_width

max_height

CurrPicTextureIndex

O índice de buffer/superfície do quadro de destino para a imagem decodificada.

superres_denom

Quando superres está habilitado, esse campo especifica o denominador para calcular a largura do quadro atualizada. Isso corresponde ao valor superresDenom da especificação AV1. Quando os superres não estiverem habilitados, esse valor será 8.

bitdepth

A profundidade de bit das amostras de luma e chroma decodificadas. Os valores permitidos são restritos pelo valor do perfil.

seq_profile

O perfil do bitstream AV1. Isso corresponde ao elemento de sintaxe: seq_profile. O formato de codificação de vídeo AV1 define os seguintes perfis:

Perfil Significado
perfil 0 Dá suporte à amostragem de croma 4:2:0 com 8 ou 10 bits por exemplo e formatos monocromáticos.
perfil 1 Dá suporte à amostragem de croma 4:4:4 com 8 ou 10 bits por amostra.
perfil 2 Dá suporte à amostragem de chroma 4:2:0, 4:2:2 ou 4:4:4 em 8, 10 ou 12 bits por exemplo e formatos monocromáticos.

tiles

Contém informações específicas para blocos.

tiles.cols

O número de blocos em um quadro. Esse campo corresponde a 2^TileColsLog2 da especificação AV1.

tiles.rows

O número de blocos abaixo de um quadro. Esse campo corresponde a 2^TileRowsLog2 da especificação AV1.

tiles.context_update_id

Especifica qual bloco usar para atualização do CDF. Isso corresponde ao elemento de sintaxe chamado context_update_tile_id da especificação AV1.

tiles.widths[64]

As larguras de cada bloco, em unidades de superbloqueamentos. Somente as primeiras entradas de larguras de 2^cols_log2 são válidas. Esse campo corresponde à variável tileWidthSb da especificação AV1.

tiles.heights[64]

As alturas de cada bloco, em unidades de superbloqueamentos. Somente as primeiras entradas de altura de 2^rows_log2 são válidas. Esse campo corresponde à variável tileHeightSb da especificação AV1.

coding

As ferramentas de codificação.

coding.use_128x128_superblock

Quando igual a 1, indica que os superbloqueados contêm amostras de luma 128x128; caso contrário, os superblocks contêm exemplos de luma 64x64. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

coding.intra_edge_filter

Especifica se o processo de filtragem intra edge deve ser habilitado. Esse campo corresponde ao elemento de sintaxe chamado enable_intra_edge_filter da especificação AV1.

coding.interintra_compound

Quando igual a 1, indica que as informações de modo para blocos inter podem conter o elemento de sintaxe interintra; caso contrário, o elemento de sintaxe interintra não estará presente. Esse campo corresponde ao elemento de sintaxe chamado enable_interintra_compound da especificação AV1.

coding.masked_compound

Quando igual a 1, indica que as informações de modo para blocos inter podem conter o elemento de sintaxe compound_type; caso contrário, o elemento de sintaxe compound_type não estará presente. Esse campo corresponde ao elemento de sintaxe chamado enable_masked_compound da especificação AV1.

coding.warped_motion

Quando igual a 1, indica que o elemento de sintaxe motion_mode pode estar presente. Esse campo corresponde ao elemento de sintaxe chamado allow_warped_motion da especificação AV1.

coding.dual_filter

Quando igual a 1, indica que o tipo de filtro entre previsões pode ser especificado independentemente nas direções horizontal e vertical; caso contrário, apenas um tipo de filtro pode ser especificado. Esse campo corresponde ao elemento de sintaxe chamado enable_dual_filter da especificação AV1.

coding.jnt_comp

Quando igual a 1, indica que o processo de pesos de distância pode ser usado para previsão inter. Esse campo corresponde ao elemento de sintaxe chamado enable_jnt_comp da especificação AV1.

coding.screen_content_tools

Quando igual a 1, indica que os blocos intra podem usar a codificação de paleta; caso contrário, a codificação de paleta não será usada. Esse campo corresponde ao elemento de sintaxe chamado allow_screen_content_tools da especificação AV1.

coding.integer_mv

Quando igual a 1, indica que os vetores de movimento sempre serão inteiros. Esse campo corresponde ao elemento de sintaxe chamado force_integer_mv da especificação AV1.

coding.cdef

Quando igual a 1, indica que a filtragem de CDEF (Filtro de Aprimoramento Direcional Restrito) pode estar habilitada. Esse campo corresponde ao elemento de sintaxe chamado enable_cdef da especificação AV1.

coding.restoration

Quando igual a 1, indica que a filtragem de restauração de loop pode estar habilitada. Esse campo corresponde ao elemento de sintaxe chamado enable_restoration da especificação AV1.

coding.film_grain

Quando igual a 1, indica que o processamento de granularidade de filme pode estar habilitado. Esse campo corresponde ao elemento de sintaxe chamado film_grain_params_present da especificação AV1.

coding.intrabc

Quando igual a 1, indica que a cópia intra block pode ser usada. Esse campo corresponde ao elemento de sintaxe chamado allow_intrabc da especificação AV1.

coding.high_precision_mv

Quando igual a 1, indica que os vetores de movimento são especificados para a oitava precisão da pel; caso contrário, os vetores de movimento são especificados para precisão da ortografia do trimestre. Esse campo corresponde ao elemento de sintaxe chamado allow_high_precision_mv da especificação AV1.

coding.switchable_motion_mode

Quando igual a 1, indica que somente o modo de movimento SIMPLE pode ser usado. Esse campo corresponde ao elemento de sintaxe chamado is_motion_mode_switchable da especificação AV1.

coding.filter_intra

Quando igual a 1, indica que o elemento de sintaxe use_filter_intra pode estar presente. Esse campo corresponde ao elemento de sintaxe chamado enable_filter_intra da especificação AV1.

coding.disable_frame_end_update_cdf

Especifica se as matrizes cdf são salvas no processo de saída do decodificador de símbolo. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

coding.disable_cdf_update

Especifica se a atualização do CDF no processo de decodificação de símbolos deve ser desabilitada. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

coding.reference_mode

Controla o modo usado para previsão de quadro de referência. Pode ser um dos seguintes valores que correspondem ao modo de referência do processo de decodificação AV1:

reference_mode Nome do reference_mode
0 SINGLE_REFERENCE
1 REFERENCE_MODE_SELECT

coding.skip_mode

Indica se a sintaxe do modo skip pode ser especificada na previsão composta. Esse campo corresponde ao elemento de sintaxe skip_mode_present da especificação AV1.

coding.reduced_tx_set

Especifica se o quadro usa um conjunto restrito de tipos de transformação. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

coding.superres

Especifica se o quadro usa super resolução. Esse campo corresponde ao elemento de sintaxe chamado use_superres da especificação AV1.

coding.tx_mode

Especifica como o tamanho da transformação é determinado. Esse campo corresponde à variável de mesmo nome da especificação AV1. Ele pode assumir um dos seguintes valores, conforme especificado na especificação AV1:

Valor de TxMode Nome de TxMode
0 ONLY_4X4
1 TX_MODE_LARGEST
2 TX_MODE_SELECT

coding.use_ref_frame_mvs

Especifica se os vetores de movimento do quadro anterior devem ser usados para o quadro atual. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

coding.enable_ref_frame_mvs

Especifica se use_ref_frame_mvs está desabilitado para toda a sequência de vídeo; quando 0 use_ref_frame_mvs também será sempre 0. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1 (do cabeçalho de sequência).

coding.reference_frame_update

Indica que o processo de atualização de quadro de referência, conforme especificado pela seção 7.20 da especificação AV1, deve ser executado após a decodificação desse quadro. Caso contrário, a seção 7.21 deverá ser executada.

coding.Reserved

Campos de bits reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

coding.CodingParamToolFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados aos sinalizadores de ferramenta de codificação.

format

Contém informações de formato e imagem.

format.frame_type

O tipo de quadro do quadro atual. Esse campo corresponde ao elemento de sintaxe de mesmo nome na especificação AV1 e afeta o processo de decodificação adequadamente. Os valores permitidos são 0, 1, 2 ou 3, para os quatro tipos de quadros AV1: KEY_FRAME, INTER_FRAME, INTRA_ONLY_FRAME e S_FRAME.

format.show_frame

Indica se o quadro atual deve ser gerado e exibido após a conclusão da decodificação. Esse campo corresponde ao elemento de sintaxe de mesmo nome na especificação AV1 e afeta o processo de decodificação adequadamente. No DXVA, isso não tem efeito direto, pois o host controla a exibição de quadros decodificados separadamente por outras chamadas de função.

format.showable_frame

Quando igual a 1, especifica que o quadro pode ser gerado usando o mecanismo show_existing_frame; caso contrário, igual a zero, que especifica que esse quadro não será gerado usando o mecanismo show_existing_frame.

format.subsampling_x

Junto com subsampling_y, indica o formato de amostragem de croma. Consulte Observações.

format.subsampling_y

Junto com subsampling_x, indica o formato de amostragem de croma. Consulte Observações.

format.mono_chrome

Indica se o bitstream é monocromático. Se 1, apenas um plano luma está presente. Esse campo corresponde ao elemento de sintaxe de mesmo nome da sintaxe Color Config da especificação AV1. Os valores permitidos são restritos pelo valor do perfil.

format.Reserved

Campos de bits reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

format.FormatAndPictureInfoFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados a informações de formato e imagem.

primary_ref_frame

Especifica qual quadro de referência contém os valores de CDF e outros estados que devem ser carregados no início do quadro. Esse campo é 0x7 quando não há nenhum quadro de referência primário. Ele corresponde ao elemento de sintaxe de mesmo nome da especificação AV1.

order_hint

A ordenação de saída do quadro atual. Corresponde a OrderHint da especificação AV1.

order_hint_bits

Corresponde ao elemento de sintaxe chamado order_hint_bits_minus_1 na especificação AV1. Esse campo é definido como: order_hint_bits_minus_1 + 1. Esse campo será 0 quando enable_order_hint da especificação AV1 for 0.

Quando esse valor é 0, nenhuma ferramenta baseada em OrderHint deve ser usada e o valor de order_hint é indefinido. Quando diferente de zero, ele afeta o cálculo da distância relativa adequadamente (consulte função get_relative_dist da especificação AV1).

frame_refs[7]

RefFrameMapTextureIndex[8]

Matriz de superfícies de buffer de quadro descompactadas. As entradas que não serão usadas para decodificar a imagem atual ou as imagens subsequentes são indicadas definindo esse valor como 0xFF. Se o valor não for 0xFF, a entrada poderá ser usada como uma superfície de referência para decodificar a imagem atual ou uma imagem subsequente na ordem de decodificação.

Todas as superfícies descompactadas que correspondem a quadros que podem ser usados para referência no processo de decodificação da imagem atual ou qualquer imagem subsequente devem estar presentes na matriz RefFrameMapTextureIndex (independentemente de essas imagens serem realmente usadas no processo de decodificação do quadro atual). Nenhuma ordem específica é especificada para a ordenação das entradas na matriz RefFrameMapTextureIndex .

Observação

O acelerador deve usar o conteúdo do RefFrameMapTextureIndex conforme fornecido pelo acelerador em vez de tentar derivar essas informações do bitstream (a fim de garantir a operação sem estado para a qual o tratamento de buffer de quadro decodificado deve ser executado sob o controle do host em vez de inferido do bitstream pelo acelerador).

loop_filter

Estrutura com parâmetros de filtro de loop.

loop_filter.filter_level[2]

Uma matriz que contém valores de força do filtro de loop. Corresponde ao elemento de sintaxe de mesmo nome na especificação AV1 e afeta os processos de decodificação do filtro de desbloqueio adequadamente. Consulte sharpness_level campo para obter mais informações.

loop_filter.filter_level_u

loop_filter.filter_level_v

loop_filter.sharpness_level

Indica o nível de nitidez. Os valores filter_level e sharpness_level juntos determinam quando uma borda de bloco é filtrada e por quanto a filtragem pode alterar os valores de exemplo. O processo de filtro de loop é descrito na seção 7.14 da especificação AV1.

loop_filter.DUMMYUNIONNAME

loop_filter.DUMMYUNIONNAME.mode_ref_delta_enabled

Quando igual a 1, indica que o nível de filtro depende do modo e do quadro de referência usados para prever um bloco. Esse campo corresponde ao elemento de sintaxe chamado loop_filter_delta_enabled da especificação AV1.

loop_filter.DUMMYUNIONNAME.mode_ref_delta_update

Quando igual a 1, indica que elementos de sintaxe adicionais estão presentes que especificam qual modo e deltas de quadro de referência devem ser atualizados. Esse campo corresponde ao elemento de sintaxe chamado loop_filter_delta_update da especificação AV1.

loop_filter.DUMMYUNIONNAME.delta_lf_multi

Quando igual a 1, indica que deltas de filtro de loop separados são enviados para bordas de luma horizontais, bordas verticais de luma, bordas U e bordas V. Esse campo corresponde ao elemento de sintaxe chamado delta_lf_multi da especificação AV1.

loop_filter.DUMMYUNIONNAME.delta_lf_present

Quando igual a 1, indica que os deltas de filtro de loop estão presentes. Isso é necessário para o processo de decodificação de filtro de loop: read_delta_lf(). Esse campo corresponde ao elemento de sintaxe chamado delta_lf_present da especificação AV1.

loop_filter.DUMMYUNIONNAME.Reserved

Campos de bits reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

loop_filter.DUMMYUNIONNAME.ControlFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados a sinalizadores de filtro de loop.

loop_filter.ref_deltas[8]

Corresponde ao elemento de sintaxe chamado loop_filter_ref_deltas na especificação AV1 e afeta os processos de decodificação do filtro de loop adequadamente.

loop_filter.mode_deltas[2]

Corresponde ao elemento de sintaxe chamado loop_filter_mode_deltas na especificação AV1 e afeta o processo de decodificação do filtro de loop adequadamente.

loop_filter.delta_lf_res

O deslocamento à esquerda que deve ser aplicado aos valores delta do filtro de loop decodificado. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

loop_filter.frame_restoration_type[3]

O modo de restauração de loop para esse quadro. Esse campo corresponde ao elemento de sintaxe FrameRestorationType da especificação AV1. Pode ser um dos seguintes, que são os mesmos valores especificados na especificação AV1:

FrameRestorationType Nome de FrameRestorationType
0 RESTORE_NONE
1 RESTORE_WIENER
2 RESTORE_SGRPROJ
3 RESTORE_SWITCHABLE

loop_filter.log2_restoration_unit_size[3]

O tamanho log2 das unidades de restauração de loop em unidades de exemplos no plano atual. O elemento 0 corresponde ao plano luma, elemento 1 ao plano U e elemento 2 ao plano V. Esse campo corresponde à variável log2(LoopRestorationSize[plane]) da especificação AV1.

loop_filter.Reserved16Bits

Campos de bits reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

quantization

Contém informações de quantificação.

quantization.DUMMYUNIONNAME

quantization.DUMMYUNIONNAME.delta_q_present

Especifica se os valores delta do índice do quantizador estão presentes. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

quantization.DUMMYUNIONNAME.delta_q_res

O deslocamento à esquerda, que deve ser aplicado a valores delta de índice do quantizador decodificados. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

quantization.DUMMYUNIONNAME.Reserved

Campos de bit reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

quantization.DUMMYUNIONNAME.ControlFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados à quantização.

quantization.base_qindex

Indica o quadro base qindex. Esse campo corresponde ao elemento de sintaxe chamado base_q_idx da especificação AV1.

quantization.y_dc_delta_q

O quantificador Y DC relativo a base_qindex. Esse campo corresponde ao DeltaQYDc da especificação AV1.

quantization.u_dc_delta_q

O quantificador U DC relativo a base_qindex. Esse campo corresponde ao DeltaQUDc da especificação AV1.

quantization.v_dc_delta_q

O quantificador V DC relativo a base_qindex. Esse campo corresponde ao DeltaQVDc da especificação AV1.

quantization.u_ac_delta_q

O quantificador U AC relativo a base_qindex. Esse campo corresponde ao DeltaQUAc da especificação AV1.

quantization.v_ac_delta_q

O quantificador V AC relativo a base_qindex. Esse campo corresponde ao DeltaQVAc da especificação AV1.

quantization.qm_y

O nível na matriz do quantizador que deve ser usado para decodificação do plano luma. Quando não for especificado (using_qmatrix=0), esse campo será 0xFF (que é um nível de matriz de quantizador inválido). Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

quantization.qm_u

O nível na matriz do quantizador que deve ser usado para decodificação do plano U. Quando não for especificado (using_qmatrix=0), esse campo será 0xFF (que é um nível de matriz de quantizador inválido). Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

quantization.qm_v

O nível na matriz do quantizador que deve ser usado para decodificação de plano V. Quando não for especificado (using_qmatrix=0), esse campo será 0xFF (que é um nível de matriz de quantizador inválido). Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

quantization.Reserved16Bits

Reservado.

cdef

Parâmetros de CDEF (filtro de aprimoramento direcional restrito).

cdef.DUMMYUNIONNAME

cdef.DUMMYUNIONNAME.damping

Controla a quantidade de umidade no filtro de deringing. Esse campo corresponde à variável chamada cdef_damping_minus_3 da especificação AV1.

cdef.DUMMYUNIONNAME.bits

O número de bits usados para sinalizar a configuração de filtro CDEF. Esse campo corresponde ao elemento de sintaxe chamado cdef_bits da especificação AV1.

cdef.DUMMYUNIONNAME.Reserved

Campos de bit reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

cdef.DUMMYUNIONNAME.ControlFlags

Fornece uma maneira alternativa de acessar os campos de bit relacionados aos parâmetros CDEF.

cdef.primary

Força do filtro primário para o canal y. Esse campo corresponde a cdef_y_pri_strength da especificação AV1.

cdef.secondary

Força do filtro secundário para o canal y. Esse campo corresponde a cdef_y_sec_strength da especificação AV1.

cdef.combined

Fornece uma maneira alternativa de acessar o y_strengths bits primários e secundários.

cdef.y_strengths[8]

Os pontos fortes do filtro primário e secundário para o canal y.

cdef.uv_strengths[8]

Os pontos fortes de filtro primário e secundário para os canais uv. Isso corresponde ao cdef_uv_pri_strength e cdef_uv_sec_strength elementos de sintaxe da especificação AV1.

interp_filter

Corresponde ao mesmo elemento de sintaxe de mesmo nome na especificação AV1 e afeta o processo de decodificação da interpolação de compensação de movimento adequadamente. A tabela abaixo mostra os valores possíveis de interp_filter.

Valor Tipo de filtro
0 normal de 8 toques
1 suave de 8 toques
2 8 toques afiados
3 Bilinear
4 todos os filtros

segmentation

Parâmetros de segmentação.

segmentation.DUMMYUNIONNAME

segmentation.DUMMYUNIONNAME.enabled

Quando igual a 1, indica que esse quadro usa a ferramenta de segmentação. Esse campo corresponde ao elemento de sintaxe chamado segmentation_enabled da especificação AV1.

segmentation.DUMMYUNIONNAME.update_map

Quando igual a 1, indica que o mapa de segmentação é atualizado durante a decodificação desse quadro. Esse campo corresponde ao elemento de sintaxe chamado segmentation_update_map da especificação AV1.

segmentation.DUMMYUNIONNAME.update_data

Quando igual a 1, indica que novos parâmetros são fornecidos para cada segmento. Esse campo corresponde ao elemento de sintaxe chamado segmentation_update_data da especificação AV1.

segmentation.DUMMYUNIONNAME.temporal_update

Quando igual a 1, indica que as atualizações para o mapa de segmentação são codificadas em relação ao mapa de segmentação existente. Esse campo corresponde ao elemento de sintaxe chamado segmentation_temporal_update da especificação AV1.

segmentation.DUMMYUNIONNAME.Reserved

Campos de bit reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

segmentation.DUMMYUNIONNAME.ControlFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados à segmentação.

segmentation.Reserved24Bits[3]

Reservado.

segmentation.alt_q

segmentation.alt_lf_y_v

segmentation.alt_lf_y_h

segmentation.alt_lf_u

segmentation.alt_lf_v

segmentation.ref_frame

segmentation.skip

segmentation.globalmv

segmentation.mask

segmentation.feature_mask[8]

Especifica quais recursos de dados de segmento são atualizados nesse quadro. Esse campo corresponde ao elemento de sintaxe feature_enabled da especificação AV1.

segmentation.feature_data[8]

Especifica valores de recurso de segmentação. Esse campo corresponde ao elemento de sintaxe feature_value da especificação AV1.

film_grain

Parâmetros de granularidade de filme.

film_grain.DUMMYUNIONNAME

film_grain.DUMMYUNIONNAME.apply_grain

Quando igual a 1, indica que a granularidade de filme deve ser adicionada a esse quadro. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.scaling_shift_minus8

O shift -8 aplicado aos valores do componente chroma. Esse campo corresponde ao elemento de sintaxe chamado grain_scaling_minus8 da especificação AV1.

film_grain.DUMMYUNIONNAME.chroma_scaling_from_luma

Quando igual a 1, especifica que o dimensionamento de chroma é inferido do dimensionamento de luma. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.ar_coeff_lag

O número de coeficientes regressivos automáticos para luma e chroma. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.ar_coeff_shift_minus6

O intervalo de coeficientes regressivos automáticos. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.grain_scale_shift

Especifica o quanto os números aleatórios gaussianos devem ser reduzidos verticalmente durante o processo de síntese de granularidade. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.overlap_flag

Quando igual a 1, indica que a sobreposição entre blocos de granularidade de filme deve ser aplicada. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.DUMMYUNIONNAME.clip_to_restricted_range

Se igual a 1, indica que o recorte para o intervalo restrito (estúdio) deve ser aplicado aos valores de exemplo depois de adicionar a granularidade de filme (consulte a semântica para color_range para obter uma explicação do balanço do estúdio). Se igual a 0, indica que o recorte para o intervalo completo deve ser aplicado aos valores de exemplo depois de adicionar a granularidade de filme.

film_grain.DUMMYUNIONNAME.matrix_coeff_is_identity

film_grain.DUMMYUNIONNAME.Reserved

Campos de bit reservados para concluir a estrutura empacotada. Deve ser definido como 0. O acelerador deve ignorar os valores nos campos de bits reservados.

film_grain.DUMMYUNIONNAME.ControlFlags

Fornece uma maneira alternativa de acessar os campos de bits relacionados à granularidade de filme.

film_grain.grain_seed

O valor inicial do gerador de número pseudo-aleatório usado para síntese de granularidade de filme. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.scaling_points_y[14]

Representa as coordenadas x,y para a função de dimensionamento linear em bits para o plano y. Essa é uma matriz 2D, em cada segmento em bits o primeiro valor especificado é a coordenada x (valor luma) e o segundo valor é o valor de dimensionamento (y, saída). Esse campo corresponde ao elemento de sintaxe point_y_value da especificação AV1.

film_grain.num_y_points

O número de segmentos em bits válidos especificados em scaling_points_y. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.scaling_points_cb[10]

Representa as coordenadas x,y para a função de dimensionamento linear por etapas para o plano cb. Essa é uma matriz 2D, em cada segmento em bits o primeiro valor especificado é a coordenada x (valor luma) e o segundo valor é o valor de dimensionamento (y, saída). Esse campo corresponde ao elemento de sintaxe point_cb_value da especificação AV1.

film_grain.num_cb_points

O número de segmentos em bits válidos especificados em scaling_points_cb. Esse campo corresponde aos elementos de sintaxe do mesmo nome da especificação AV1.

film_grain.scaling_points_cr[10]

Representa as coordenadas x,y para a função de dimensionamento linear por etapas para o plano cr. Essa é uma matriz 2D, em cada segmento em bits o primeiro valor especificado é a coordenada x (valor luma) e o segundo valor é o valor de dimensionamento (y, saída). Esse campo corresponde ao elemento de sintaxe point_cr_value da especificação AV1.

film_grain.num_cr_points

O número de segmentos em bits válidos especificados em scaling_points_cr. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.ar_coeffs_y[24]

Os coeficientes regressivos automáticos para o plano Y. Esse campo corresponde ao elemento de sintaxe ar_coeffs_y_plus_128 da especificação AV1.

film_grain.ar_coeffs_cb[25]

Os coeficientes regressivos automáticos para o plano U. Esse campo corresponde ao elemento de sintaxe ar_coeffs_cb_plus_128 da especificação AV1.

film_grain.ar_coeffs_cr[25]

Os coeficientes regressivos automáticos para o plano V. Esse campo corresponde ao elemento de sintaxe ar_coeffs_cr_plus_128 da especificação AV1.

film_grain.cb_mult

O multiplicador do componente Cb usado na derivação do índice de entrada para a função de dimensionamento de componentes. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.cb_luma_mult

O multiplicador usado para o componente luma na função de dimensionamento de componente Cb. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.cr_mult

O multiplicador do componente Cr usado na derivação do índice de entrada para a função de dimensionamento de componentes. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.cr_luma_mult

O multiplicador usado para o componente luma na função de dimensionamento do componente Cr. Esse campo corresponde aos elementos de sintaxe do mesmo nome da especificação AV1.

film_grain.Reserved8Bits

Reservado.

film_grain.cb_offset

O deslocamento usado na derivação do índice de entrada para a função de dimensionamento de componente Cb. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

film_grain.cr_offset

O deslocamento usado na derivação do índice de entrada para a função de dimensionamento do componente Cr. Esse campo corresponde ao elemento de sintaxe do mesmo nome da especificação AV1.

Reserved32Bits

Reservado.

StatusReportFeedbackNumber

Número arbitrário definido pelo decodificador de host a ser usado como uma marca no status relatar dados de comentários. O valor não deve ser igual a 0 e deve ser diferente em cada chamada para Executar. Para obter mais informações, consulte a seção Estrutura de dados do relatório de status na Especificação de aceleração de vídeo direct x para codificação de vídeo AV1.

Comentários

Se largura e altura forem derivadas para o quadro (por exemplo, por meio do frame_size_override_flag), o decodificador de host derivará os valores apropriados e armazenará o resultado nesses campos. Se os superres estiverem habilitados, esses valores representarão a resolução de quadros pós-dimensionado (conhecida na especificação AV1 como UpscaledWidth).

Os valores permitidos de subsampling_x e subsampling_y são restritos pelo valor do perfil. A tabela a seguir especifica os valores permitidos para subsampling_x e subsampling_y e os formatos chroma associados.

subsampling_x subsampling_y Formato chroma
1 1 4:2:0
1 0 4:2:2
0 0 4:4:4

Consulte a Especificação de Aceleração de Vídeo Direct X para Codificação de Vídeo AV1 para obter informações detalhadas, incluindo como usar essa estrutura.

Requisitos

Requisito Valor
Servidor mínimo com suporte Windows Server 2022
Cabeçalho dxva.h