libs: encoder: refactor init_context_info()

In order to generate vaapi contexts iterative, the function
init_context_info() is refactored to pass, as parameters the
GstVaapiContextInfo and the GstVaapiProfile.

https://bugzilla.gnome.org/show_bug.cgi?id=771291
This commit is contained in:
Víctor Manuel Jáquez Leal 2017-04-04 14:39:59 +02:00
parent db7268117d
commit 31d326c9ee

View file

@ -604,14 +604,14 @@ get_default_chroma_type (GstVaapiEncoder * encoder,
} }
static void static void
init_context_info (GstVaapiEncoder * encoder) init_context_info (GstVaapiEncoder * encoder, GstVaapiContextInfo * cip,
GstVaapiProfile profile)
{ {
GstVaapiContextInfo *const cip = &encoder->context_info;
const GstVaapiEncoderClassData *const cdata = const GstVaapiEncoderClassData *const cdata =
GST_VAAPI_ENCODER_GET_CLASS (encoder)->class_data; GST_VAAPI_ENCODER_GET_CLASS (encoder)->class_data;
cip->usage = GST_VAAPI_CONTEXT_USAGE_ENCODE; cip->usage = GST_VAAPI_CONTEXT_USAGE_ENCODE;
cip->profile = get_profile (encoder); cip->profile = profile;
if (cdata->codec == GST_VAAPI_CODEC_JPEG) { if (cdata->codec == GST_VAAPI_CODEC_JPEG) {
cip->entrypoint = GST_VAAPI_ENTRYPOINT_PICTURE_ENCODE; cip->entrypoint = GST_VAAPI_ENTRYPOINT_PICTURE_ENCODE;
} else { } else {
@ -633,7 +633,7 @@ set_context_info (GstVaapiEncoder * encoder)
const GstVideoFormat format = const GstVideoFormat format =
GST_VIDEO_INFO_FORMAT (GST_VAAPI_ENCODER_VIDEO_INFO (encoder)); GST_VIDEO_INFO_FORMAT (GST_VAAPI_ENCODER_VIDEO_INFO (encoder));
init_context_info (encoder); init_context_info (encoder, cip, get_profile (encoder));
cip->chroma_type = gst_vaapi_video_format_get_chroma_type (format); cip->chroma_type = gst_vaapi_video_format_get_chroma_type (format);
cip->width = GST_VAAPI_ENCODER_WIDTH (encoder); cip->width = GST_VAAPI_ENCODER_WIDTH (encoder);
@ -1168,7 +1168,7 @@ gst_vaapi_encoder_ensure_context_config (GstVaapiEncoder * encoder)
if (encoder->context) if (encoder->context)
return TRUE; return TRUE;
init_context_info (encoder); init_context_info (encoder, cip, get_profile (encoder));
encoder->context = gst_vaapi_context_new (encoder->display, cip); encoder->context = gst_vaapi_context_new (encoder->display, cip);
return (encoder->context != NULL); return (encoder->context != NULL);
} }