30     DXVA_PicParams_VP9    
pp;
 
   44                                     DXVA_PicParams_VP9 *pp)
 
   52     memset(pp, 0, 
sizeof(*pp));
 
   56     pp->profile = 
h->h.profile;
 
   57     pp->wFormatAndPictureInfoFlags = ((
h->h.keyframe == 0)   <<  0) |
 
   58                                      ((
h->h.invisible == 0)  <<  1) |
 
   59                                      (
h->h.errorres          <<  2) |
 
   63                                      (
h->h.refreshctx        <<  6) |
 
   64                                      (
h->h.parallelmode      <<  7) |
 
   65                                      (
h->h.intraonly         <<  8) |
 
   66                                      (
h->h.framectxid        <<  9) |
 
   67                                      (
h->h.resetctx          << 11) |
 
   68                                      ((
h->h.keyframe ? 0 : 
h->h.highprecisionmvs) << 13) |
 
   71     pp->width  = avctx->
width;
 
   72     pp->height = avctx->
height;
 
   73     pp->BitDepthMinus8Luma   = pixdesc->
comp[0].
depth - 8;
 
   74     pp->BitDepthMinus8Chroma = pixdesc->
comp[1].
depth - 8;
 
   76     pp->interp_filter = 
h->h.filtermode ^ (
h->h.filtermode <= 1);
 
   77     pp->Reserved8Bits = 0;
 
   79     for (
i = 0; 
i < 8; 
i++) {
 
   80         if (
h->refs[
i].f->buf[0]) {
 
   82             pp->ref_frame_coded_width[
i]  = 
h->refs[
i].f->width;
 
   83             pp->ref_frame_coded_height[
i] = 
h->refs[
i].f->height;
 
   85             pp->ref_frame_map[
i].bPicEntry = 0xFF;
 
   88     for (
i = 0; 
i < 3; 
i++) {
 
   89         uint8_t refidx = 
h->h.refidx[
i];
 
   90         if (
h->refs[refidx].f->buf[0])
 
   93             pp->frame_refs[
i].bPicEntry = 0xFF;
 
   95         pp->ref_frame_sign_bias[
i + 1] = 
h->h.signbias[
i];
 
   98     pp->filter_level    = 
h->h.filter.level;
 
   99     pp->sharpness_level = 
h->h.filter.sharpness;
 
  101     pp->wControlInfoFlags = (
h->h.lf_delta.enabled   << 0) |
 
  102                             (
h->h.lf_delta.updated   << 1) |
 
  103                             (
h->h.use_last_frame_mvs << 2) |
 
  106     for (
i = 0; 
i < 4; 
i++)
 
  107         pp->ref_deltas[
i]  = 
h->h.lf_delta.ref[
i];
 
  110         pp->mode_deltas[
i]  = 
h->h.lf_delta.mode[
i];
 
  112     pp->base_qindex   = 
h->h.yac_qi;
 
  113     pp->y_dc_delta_q  = 
h->h.ydc_qdelta;
 
  114     pp->uv_dc_delta_q = 
h->h.uvdc_qdelta;
 
  115     pp->uv_ac_delta_q = 
h->h.uvac_qdelta;
 
  118     pp->stVP9Segments.wSegmentInfoFlags = (
h->h.segmentation.enabled       << 0) |
 
  119                                           (
h->h.segmentation.update_map    << 1) |
 
  120                                           (
h->h.segmentation.temporal      << 2) |
 
  121                                           (
h->h.segmentation.absolute_vals << 3) |
 
  124     for (
i = 0; 
i < 7; 
i++)
 
  125         pp->stVP9Segments.tree_probs[
i] = 
h->h.segmentation.prob[
i];
 
  127     if (
h->h.segmentation.temporal)
 
  128         for (
i = 0; 
i < 3; 
i++)
 
  129             pp->stVP9Segments.pred_probs[
i] = 
h->h.segmentation.pred_prob[
i];
 
  131         memset(pp->stVP9Segments.pred_probs, 255, 
sizeof(pp->stVP9Segments.pred_probs));
 
  133     for (
i = 0; 
i < 8; 
i++) {
 
  134         pp->stVP9Segments.feature_mask[
i] = (
h->h.segmentation.feat[
i].q_enabled    << 0) |
 
  135                                             (
h->h.segmentation.feat[
i].lf_enabled   << 1) |
 
  136                                             (
h->h.segmentation.feat[
i].ref_enabled  << 2) |
 
  137                                             (
h->h.segmentation.feat[
i].skip_enabled << 3);
 
  139         pp->stVP9Segments.feature_data[
i][0] = 
h->h.segmentation.feat[
i].q_val;
 
  140         pp->stVP9Segments.feature_data[
i][1] = 
h->h.segmentation.feat[
i].lf_val;
 
  141         pp->stVP9Segments.feature_data[
i][2] = 
h->h.segmentation.feat[
i].ref_val;
 
  142         pp->stVP9Segments.feature_data[
i][3] = 0; 
 
  145     pp->log2_tile_cols = 
h->h.tiling.log2_tile_cols;
 
  146     pp->log2_tile_rows = 
h->h.tiling.log2_tile_rows;
 
  148     pp->uncompressed_header_size_byte_aligned = 
h->h.uncompressed_header_size;
 
  149     pp->first_partition_size = 
h->h.compressed_header_size;
 
  151     pp->StatusReportFeedbackNumber = 1 + DXVA_CONTEXT_REPORT_ID(avctx, 
ctx)++;
 
  156                              unsigned position, 
unsigned size)
 
  158     memset(slice, 0, 
sizeof(*slice));
 
  159     slice->BSNALunitDataLocation = position;
 
  160     slice->SliceBytesInBuffer    = 
size;
 
  161     slice->wBadSliceChopping     = 0;
 
  179         type = D3D11_VIDEO_DECODER_BUFFER_BITSTREAM;
 
  183                                                        &dxva_size, &dxva_data_ptr)))
 
  189         type = DXVA2_BitStreamDateBufferType;
 
  192                                                   &dxva_data_ptr, &dxva_size)))
 
  197     dxva_data = dxva_data_ptr;
 
  199     if (ctx_pic->
slice.SliceBytesInBuffer > dxva_size) {
 
  204     memcpy(dxva_data, ctx_pic->
bitstream, ctx_pic->
slice.SliceBytesInBuffer);
 
  206     padding = 
FFMIN(128 - ((ctx_pic->
slice.SliceBytesInBuffer) & 127), dxva_size - ctx_pic->
slice.SliceBytesInBuffer);
 
  208         memset(dxva_data + ctx_pic->
slice.SliceBytesInBuffer, 0, padding);
 
  209         ctx_pic->
slice.SliceBytesInBuffer += padding;
 
  225         D3D11_VIDEO_DECODER_BUFFER_DESC *dsc11 = bs;
 
  226         memset(dsc11, 0, 
sizeof(*dsc11));
 
  227         dsc11->BufferType           = 
type;
 
  228         dsc11->DataSize             = ctx_pic->
slice.SliceBytesInBuffer;
 
  229         dsc11->NumMBsInBuffer       = 0;
 
  231         type = D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL;
 
  236         DXVA2_DecodeBufferDesc *dsc2 = bs;
 
  237         memset(dsc2, 0, 
sizeof(*dsc2));
 
  238         dsc2->CompressedBufferType = 
type;
 
  239         dsc2->DataSize             = ctx_pic->
slice.SliceBytesInBuffer;
 
  240         dsc2->NumMBsInBuffer       = 0;
 
  242         type = DXVA2_SliceControlBufferType;
 
  260     if (!DXVA_CONTEXT_VALID(avctx, 
ctx))
 
  301                                     &ctx_pic->
pp, 
sizeof(ctx_pic->
pp),
 
  307 #if CONFIG_VP9_DXVA2_HWACCEL 
  324 #if CONFIG_VP9_D3D11VA_HWACCEL 
  326     .
name           = 
"vp9_d3d11va",
 
  341 #if CONFIG_VP9_D3D11VA2_HWACCEL 
  343     .
name           = 
"vp9_d3d11va2",