static gboolean gst_vaapiencode_destroy (GstVaapiEncode * encode) { if (encode->input_state) { gst_video_codec_state_unref (encode->input_state); encode->input_state = NULL; } if (encode->output_state) { gst_video_codec_state_unref (encode->output_state); encode->output_state = NULL; } gst_vaapi_encoder_replace (&encode->encoder, NULL); return TRUE; }
static gboolean gst_vaapiencode_flush (GstVideoEncoder * venc) { GstVaapiEncode *const encode = GST_VAAPIENCODE_CAST (venc); GstVaapiEncoderStatus status; if (!encode->encoder) return FALSE; GST_LOG_OBJECT (encode, "flushing"); status = gst_vaapi_encoder_flush (encode->encoder); if (status != GST_VAAPI_ENCODER_STATUS_SUCCESS) return FALSE; gst_vaapiencode_purge (encode); gst_vaapi_encoder_replace (&encode->encoder, NULL); if (!ensure_encoder (encode)) return FALSE; if (!set_codec_state (encode, encode->input_state)) return FALSE; return TRUE; }