static void gst_vaapi_decoder_notify_caps(GObject *obj, GParamSpec *pspec, void *user_data) { GstVaapiDecode * const decode = GST_VAAPIDECODE(user_data); GstCaps *caps; g_assert(decode->decoder == GST_VAAPI_DECODER(obj)); caps = gst_vaapi_decoder_get_caps(decode->decoder); gst_vaapidecode_update_src_caps(decode, caps); }
static gboolean gst_vaapidecode_reset (GstVaapiDecode * decode, GstCaps * caps, gboolean force_reset) { /* Reset tracked frame size */ decode->current_frame_size = 0; if (decode->decoder) { if (!gst_caps_is_equal (caps, gst_vaapi_decoder_get_caps (decode->decoder))) { if (gst_vaapi_decoder_update_caps (decode->decoder, caps)) { g_atomic_int_set (&decode->do_renego, TRUE); if (!force_reset) return TRUE; } } return gst_vaapi_decoder_reset (decode->decoder); } return gst_vaapidecode_create (decode, caps); }