vaapipostproc: before set surface proxy, check if it already been created and exist.

Fix the deinterlace black frame when playing with glimagesink:
gst-launch-1.0 filesrc location=test.264 ! h264parse ! vaapih264dec \
! vaapipostproc deinterlace-mode=1 deinterlace-method=1 ! glimagesink
This commit is contained in:
Wangfei 2019-01-15 14:33:11 +08:00
parent 14587eb8e8
commit 98c32df830

View file

@ -723,13 +723,15 @@ gst_vaapipostproc_process_vpp (GstBaseTransform * trans, GstBuffer * inbuf,
if (!outbuf_meta) if (!outbuf_meta)
goto error_create_meta; goto error_create_meta;
proxy = if (!gst_vaapi_video_meta_get_surface_proxy (outbuf_meta)) {
gst_vaapi_surface_proxy_new_from_pool (GST_VAAPI_SURFACE_POOL proxy =
(postproc->filter_pool)); gst_vaapi_surface_proxy_new_from_pool (GST_VAAPI_SURFACE_POOL
if (!proxy) (postproc->filter_pool));
goto error_create_proxy; if (!proxy)
gst_vaapi_video_meta_set_surface_proxy (outbuf_meta, proxy); goto error_create_proxy;
gst_vaapi_surface_proxy_unref (proxy); gst_vaapi_video_meta_set_surface_proxy (outbuf_meta, proxy);
gst_vaapi_surface_proxy_unref (proxy);
}
if (deint) { if (deint) {
deint_flags = (tff ? GST_VAAPI_DEINTERLACE_FLAG_TOPFIELD : 0); deint_flags = (tff ? GST_VAAPI_DEINTERLACE_FLAG_TOPFIELD : 0);