[vlc-devel] [PATCH 04/39] d3d11va: fix passing surfaces from the local pool to upstream filters
Steve Lhomme
robux4 at videolabs.io
Fri Jun 2 16:46:07 CEST 2017
When not in direct rendering
---
modules/codec/avcodec/d3d11va.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index cfec0e0ed8..84f997649d 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -179,10 +179,10 @@ static int Extract(vlc_va_t *va, picture_t *output, uint8_t *data)
{
vlc_va_sys_t *sys = va->sys;
ID3D11VideoDecoderOutputView *src = (ID3D11VideoDecoderOutputView*)(uintptr_t)data;
- vlc_va_surface_t *surface = output->context;
+ vlc_va_surface_t *surface = output->context; /* when coming from our local pool */
int ret = VLC_SUCCESS;
- picture_sys_t *p_sys_out = output->p_sys;
+ picture_sys_t *p_sys_out = surface ? surface->p_pic->p_sys : output->p_sys;
assert(p_sys_out->texture[KNOWN_DXGI_INDEX] != NULL);
@@ -267,6 +267,9 @@ done:
}
}
#endif
+ if (!output->p_sys && surface->p_pic && surface->p_pic->p_sys)
+ /* HW decoding in a software pipe, pass the texture to upstream filters */
+ output->p_sys = surface->p_pic->p_sys;
return ret;
}
--
2.12.1
More information about the vlc-devel
mailing list