From 3355cd46917bc092f5f237b8154749cfff5c68b6 Mon Sep 17 00:00:00 2001 From: He Junyan Date: Sun, 22 Dec 2019 14:35:18 +0800 Subject: [PATCH] plugin: encode: set allowed_sinkpad_caps to empty. We now set encode->allowed_sinkpad_caps to NULL if we fail to get surfaces formats. This causes two problem: 1. gst_video_encoder_proxy_getcaps use NULL as its caps parameter, which changes its behavior. It will use encode's sinkpad template rather than empty caps to do the clip job. So even if we fail to set allowed_sinkpad_caps, gst_video_encoder_proxy_getcaps can still return valid caps. 2. We should just set the allowed_sinkpad_caps once. The NULL point make the ensure_allowed_sinkpad_caps function works again and again. --- gst/vaapi/gstvaapiencode.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c index c8a29efa8e..b573e188be 100644 --- a/gst/vaapi/gstvaapiencode.c +++ b/gst/vaapi/gstvaapiencode.c @@ -441,6 +441,9 @@ ensure_allowed_sinkpad_caps (GstVaapiEncode * encode) ret = TRUE; bail: + if (!encode->allowed_sinkpad_caps) + encode->allowed_sinkpad_caps = gst_caps_new_empty (); + if (out_caps) gst_caps_unref (out_caps); if (raw_caps)