[MPlayer-dev-eng] [PATCH 4/5] vo xv: Limit output formats to what the vo actually supports

Ville Syrjälä syrjala at sci.fi
Wed Jun 21 23:46:18 EEST 2017


On Thu, Jun 15, 2017 at 12:50:34AM +0200, Alexander Strasser wrote:
> Assumes the format IDs (FourCCs in this case) are the same in MPlayer
> and Xvideo.
> 
> That assumption is nothing new, but it was never checked if in case
> of a match, we actually supported that image format in vo xv.
> 
> Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>
> ---
>  libvo/vo_xv.c | 21 +++++++++++++++++++--
>  1 file changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c
> index ebce39a6b..3febbf748 100644
> --- a/libvo/vo_xv.c
> +++ b/libvo/vo_xv.c
> @@ -396,7 +396,8 @@ static int draw_slice(uint8_t * image[], int stride[], int w, int h,
>      switch (image_format) {
>      case IMGFMT_YV12:
>          idx_p1 = 2; idx_p2 = 1;
> -    default:
> +    case IMGFMT_I420:
> +    case IMGFMT_IYUV:
>          x /= 2;
>          y /= 2;
>          w /= 2;
> @@ -484,7 +485,8 @@ static uint32_t get_image(mp_image_t * mpi)
>          switch (image_format) {
>          case IMGFMT_YV12:
>              idx_p1 = 2; idx_p2 = 1;
> -        default:
> +        case IMGFMT_I420:
> +        case IMGFMT_IYUV:
>              mpi->planes[1] =
>                  xvimage[current_buf]->data +
>                  xvimage[current_buf]->offsets[idx_p1];
> @@ -503,10 +505,25 @@ static uint32_t get_image(mp_image_t * mpi)
>      return VO_FALSE;
>  }
>  
> +static int is_supported_format(uint32_t format)
> +{
> +    switch (format) {
> +    case IMGFMT_YV12:
> +    case IMGFMT_I420:
> +    case IMGFMT_IYUV:
> +        return 1;

This rejects all packed formats, which is probably not what you
intended.

Apart from that the patches look good to me. And they survived
a quick smoke test using NV12, YV12, I420, and YUY2 (after hacking
it into is_supported_format()).

> +    default:
> +        return 0;
> +    }
> +}
> +
>  static int query_format(uint32_t format)
>  {
>      uint32_t i;
>      int flag = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_OSD | VFCAP_ACCEPT_STRIDE;       // FIXME! check for DOWN
> +    if (!is_supported_format(format)) {
> +        return 0;
> +    }
>  
>      /* check image formats */
>      for (i = 0; i < formats; i++)
> -- 
> 2.11.0
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng

-- 
Ville Syrjälä
syrjala at sci.fi
http://www.sci.fi/~syrjala/


More information about the MPlayer-dev-eng mailing list