gboolean gst_vaapi_decoder_ensure_context (GstVaapiDecoder * decoder, GstVaapiContextInfo * cip) { gst_vaapi_decoder_set_picture_size (decoder, cip->width, cip->height); cip->usage = GST_VAAPI_CONTEXT_USAGE_DECODE; if (decoder->context) { if (!gst_vaapi_context_reset (decoder->context, cip)) return FALSE; } else { decoder->context = gst_vaapi_context_new (decoder->display, cip); if (!decoder->context) return FALSE; } decoder->va_context = gst_vaapi_context_get_id (decoder->context); return TRUE; }
/* Ensures the underlying VA context for encoding is created */ static gboolean gst_vaapi_encoder_ensure_context (GstVaapiEncoder * encoder) { GstVaapiContextInfo *const cip = &encoder->context_info; if (!set_context_info (encoder)) return FALSE; if (encoder->context) { if (!gst_vaapi_context_reset (encoder->context, cip)) return FALSE; } else { encoder->context = gst_vaapi_context_new (encoder->display, cip); if (!encoder->context) return FALSE; } encoder->va_context = gst_vaapi_context_get_id (encoder->context); return TRUE; }