Commit 6b236169 authored by Steve Lhomme's avatar Steve Lhomme Committed by Hugo Beauzée-Luyssen
Browse files

direct3d9: fix the black background when the decoder texture is in YUV



fixes the bottom line issue in #17420
Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
parent 9513f341
......@@ -689,6 +689,13 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input, const video_format_t *
return err;
}
static D3DCOLOR GetFormatBlack(D3DFORMAT format)
{
if (vlc_fourcc_IsYUV(format))
return D3DCOLOR_XYUV(0,0x80,0x80);
return D3DCOLOR_ARGB(0xFF, 0, 0, 0);
}
/**
* It creates a DXVA2 decoder using the given video format
*/
......@@ -828,6 +835,11 @@ static int DxCreateVideoDecoder(vlc_va_t *va, int codec_id, const video_format_t
}
sys->decoder = (IUnknown*) decoder;
for (int i = 0; i < sys->surface_count; i++)
IDirect3DDevice9_ColorFill((IDirect3DDevice9*) sys->d3ddev,
(IDirect3DSurface9*) sys->hw_surface[i],
NULL, GetFormatBlack(p_sys->render));
msg_Dbg(va, "IDirectXVideoDecoderService_CreateVideoDecoder succeed");
return VLC_SUCCESS;
}
......
......@@ -334,6 +334,13 @@ static void DestroyPicture(picture_t *picture)
free(picture);
}
static D3DCOLOR GetFormatBlack(D3DFORMAT format)
{
if (vlc_fourcc_IsYUV(format))
return D3DCOLOR_XYUV(0,0x80,0x80);
return D3DCOLOR_ARGB(0xFF, 0, 0, 0);
}
/* */
static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
{
......@@ -367,6 +374,8 @@ static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
goto error;
}
IDirect3DDevice9_ColorFill(vd->sys->d3ddev, picsys->surface, NULL, GetFormatBlack(format));
picture_resource_t resource = {
.p_sys = picsys,
.pf_destroy = DestroyPicture,
......@@ -1160,7 +1169,7 @@ static int Direct3D9CreatePool(vout_display_t *vd, video_format_t *fmt)
#endif
/* fill surface with black color */
IDirect3DDevice9_ColorFill(d3ddev, surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0));
IDirect3DDevice9_ColorFill(d3ddev, surface, NULL, GetFormatBlack(d3dfmt->format));
/* Create the associated picture */
picture_sys_t *picsys = malloc(sizeof(*picsys));
......
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