Commit 60630b38 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

vdpau/display: request reoriented video

parent b87f8983
...@@ -470,13 +470,17 @@ static int Open(vlc_object_t *obj) ...@@ -470,13 +470,17 @@ static int Open(vlc_object_t *obj)
msg_Dbg(vd, "using back-end %s", info); msg_Dbg(vd, "using back-end %s", info);
/* Check source format */ /* Check source format */
video_format_t fmt;
VdpChromaType chroma; VdpChromaType chroma;
VdpYCbCrFormat format; VdpYCbCrFormat format;
if (vd->fmt.i_chroma == VLC_CODEC_VDPAU_VIDEO_420
|| vd->fmt.i_chroma == VLC_CODEC_VDPAU_VIDEO_422) video_format_ApplyRotation(&fmt, &vd->fmt);
if (fmt.i_chroma == VLC_CODEC_VDPAU_VIDEO_420
|| fmt.i_chroma == VLC_CODEC_VDPAU_VIDEO_422)
; ;
else else
if (vlc_fourcc_to_vdp_ycc(vd->fmt.i_chroma, &chroma, &format)) if (vlc_fourcc_to_vdp_ycc(fmt.i_chroma, &chroma, &format))
{ {
uint32_t w, h; uint32_t w, h;
VdpBool ok; VdpBool ok;
...@@ -489,7 +493,7 @@ static int Open(vlc_object_t *obj) ...@@ -489,7 +493,7 @@ static int Open(vlc_object_t *obj)
vdp_get_error_string(sys->vdp, err)); vdp_get_error_string(sys->vdp, err));
goto error; goto error;
} }
if (!ok || w < vd->fmt.i_width || h < vd->fmt.i_height) if (!ok || w < fmt.i_width || h < fmt.i_height)
{ {
msg_Err(vd, "source video %s not supported", "chroma type"); msg_Err(vd, "source video %s not supported", "chroma type");
goto error; goto error;
...@@ -526,7 +530,7 @@ static int Open(vlc_object_t *obj) ...@@ -526,7 +530,7 @@ static int Open(vlc_object_t *obj)
vdp_get_error_string(sys->vdp, err)); vdp_get_error_string(sys->vdp, err));
goto error; goto error;
} }
if (min > vd->fmt.i_width || vd->fmt.i_width > max) if (min > fmt.i_width || fmt.i_width > max)
{ {
msg_Err(vd, "source video %s not supported", "width"); msg_Err(vd, "source video %s not supported", "width");
goto error; goto error;
...@@ -542,12 +546,13 @@ static int Open(vlc_object_t *obj) ...@@ -542,12 +546,13 @@ static int Open(vlc_object_t *obj)
vdp_get_error_string(sys->vdp, err)); vdp_get_error_string(sys->vdp, err));
goto error; goto error;
} }
if (min > vd->fmt.i_height || vd->fmt.i_height > max) if (min > fmt.i_height || fmt.i_height > max)
{ {
msg_Err(vd, "source video %s not supported", "height"); msg_Err(vd, "source video %s not supported", "height");
goto error; goto error;
} }
} }
fmt.i_chroma = VLC_CODEC_VDPAU_OUTPUT;
/* Select surface format */ /* Select surface format */
static const VdpRGBAFormat rgb_fmts[] = { static const VdpRGBAFormat rgb_fmts[] = {
...@@ -570,7 +575,7 @@ static int Open(vlc_object_t *obj) ...@@ -570,7 +575,7 @@ static int Open(vlc_object_t *obj)
continue; continue;
} }
/* NOTE: Wrong! No warranties that zoom <= 100%! */ /* NOTE: Wrong! No warranties that zoom <= 100%! */
if (!ok || w < vd->fmt.i_width || h < vd->fmt.i_height) if (!ok || w < fmt.i_width || h < fmt.i_height)
continue; continue;
sys->rgb_fmt = rgb_fmts[i]; sys->rgb_fmt = rgb_fmts[i];
...@@ -667,7 +672,7 @@ static int Open(vlc_object_t *obj) ...@@ -667,7 +672,7 @@ static int Open(vlc_object_t *obj)
vd->info.has_pictures_invalid = true; vd->info.has_pictures_invalid = true;
vd->info.has_event_thread = true; vd->info.has_event_thread = true;
vd->info.subpicture_chromas = spu_chromas; vd->info.subpicture_chromas = spu_chromas;
vd->fmt.i_chroma = VLC_CODEC_VDPAU_OUTPUT; vd->fmt = fmt;
vd->pool = Pool; vd->pool = Pool;
vd->prepare = Queue; vd->prepare = Queue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment