[Mesa-dev] [PATCH 06/11] vl/util: add copy func for yv12image to nv12surface

Christian König deathsimple at vodafone.de
Mon Jul 18 14:15:00 UTC 2016


Am 16.07.2016 um 00:41 schrieb Boyuan Zhang:
> Add function to copy from yv12 image to nv12 surface for VAAPI putimage call. We need this function in VaPutImage call where copying from yv12 image to nv12 surface for encoding. Existing function can't be used because it only work for copying from yv12 surface to nv12 image in Vaapi.

I think we can keep the patches mostly as they are now, but I would like 
to get a bit more positive feedback from Andy and maybe others.

E.g. at least we should be able to encode something without crashing on 
Tonga and other hardware generations as well before we push it upstream.

Regards,
Christian.

>
> Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
> ---
>   src/gallium/auxiliary/util/u_video.h | 23 +++++++++++++++++++++++
>   1 file changed, 23 insertions(+)
>
> diff --git a/src/gallium/auxiliary/util/u_video.h b/src/gallium/auxiliary/util/u_video.h
> index 9196afc..d147295 100644
> --- a/src/gallium/auxiliary/util/u_video.h
> +++ b/src/gallium/auxiliary/util/u_video.h
> @@ -130,6 +130,29 @@ u_copy_yv12_to_nv12(void *const *destination_data,
>   }
>   
>   static inline void
> +u_copy_yv12_img_to_nv12_surf(uint8_t *const *src,
> +                             uint8_t *dest,
> +                             int *offset,
> +                             int field)
> +{
> +   if (field == 0) {
> +      for (int i = 0; i < offset[1] ; i++)
> +         dest[i] = src[field][i];
> +   } else if (field == 1) {
> +      bool odd = false;
> +      for (int i = 0; i < (offset[1]/2) ; i++){
> +         if (odd == false) {
> +            dest[i] = src[field][i/2];
> +            odd = true;
> +         } else {
> +            dest[i] = src[field+1][i/2];
> +            odd = false;
> +         }
> +      }
> +   }
> +}
> +
> +static inline void
>   u_copy_swap422_packed(void *const *destination_data,
>                          uint32_t const *destination_pitches,
>                          int src_plane, int src_field,



More information about the mesa-dev mailing list