static GstVaapiEncoderStatus gst_vaapi_encoder_mpeg2_reconfigure (GstVaapiEncoder * base_encoder) { GstVaapiEncoderMpeg2 *const encoder = GST_VAAPI_ENCODER_MPEG2_CAST (base_encoder); GstVaapiEncoderStatus status; if (encoder->ip_period > base_encoder->keyframe_period) { encoder->ip_period = base_encoder->keyframe_period - 1; } status = ensure_profile_and_level (encoder); if (status != GST_VAAPI_ENCODER_STATUS_SUCCESS) return status; if (!ensure_bitrate (encoder)) goto error; return set_context_info (base_encoder); /* ERRORS */ error: { return GST_VAAPI_ENCODER_STATUS_ERROR_OPERATION_FAILED; } }
static GstVaapiEncoderStatus gst_vaapi_encoder_jpeg_reconfigure (GstVaapiEncoder * base_encoder) { GstVaapiEncoderJpeg *const encoder = GST_VAAPI_ENCODER_JPEG_CAST (base_encoder); GstVaapiEncoderStatus status; status = ensure_profile (encoder); if (status != GST_VAAPI_ENCODER_STATUS_SUCCESS) return status; /* generate sampling factors (A.1.1) */ generate_sampling_factors (encoder); return set_context_info (base_encoder); }
/* 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; }
static GstVaapiEncoderStatus gst_vaapi_encoder_vp8_reconfigure (GstVaapiEncoder * base_encoder) { GstVaapiEncoderVP8 *const encoder = GST_VAAPI_ENCODER_VP8_CAST (base_encoder); GstVaapiEncoderStatus status; status = ensure_profile (encoder); if (status != GST_VAAPI_ENCODER_STATUS_SUCCESS) return status; if (!ensure_bitrate (encoder)) goto error; ensure_control_rate_params (encoder); return set_context_info (base_encoder); /* ERRORS */ error: { return GST_VAAPI_ENCODER_STATUS_ERROR_OPERATION_FAILED; } }