- if (pic->type == PICTURE_TYPE_P) {
- av_assert0(pic->refs[0]);
- vpic->reference_frames[priv->last_ref_dir] =
- pic->refs[0]->recon_surface;
- } else if (pic->type == PICTURE_TYPE_B) {
- av_assert0(pic->refs[0] && pic->refs[1]);
- vpic->reference_frames[!priv->last_ref_dir] =
- pic->refs[0]->recon_surface;
- vpic->reference_frames[priv->last_ref_dir] =
- pic->refs[1]->recon_surface;
+
+ for (i = 0; i < pic->nb_refs; i++) {
+ VAAPIEncodePicture *ref_pic = pic->refs[i];
+ int slot;
+ slot = ((VAAPIEncodeVP9Picture*)ref_pic->priv_data)->slot;
+ av_assert0(vpic->reference_frames[slot] == VA_INVALID_SURFACE);
+ vpic->reference_frames[slot] = ref_pic->recon_surface;