summaryrefslogtreecommitdiff
path: root/gst-libs/gst/vaapi
diff options
context:
space:
mode:
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2017-06-05 20:30:07 +0200
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2017-06-07 11:24:38 +0200
commit846c276e26a071c4f1fccb7b0949d4de30a27fb6 (patch)
treea21536c4211fbccfc08fed2756b86ae55924fc2b /gst-libs/gst/vaapi
parentacf106e1a718cc273f5684c3e76c4e9da17324eb (diff)
libs: encoder: vp8,h264,h265,mpeg2: set misc param once
Instead of recalculating the miscellaneous buffer parameters for every buffer, it is only done once, when the encoder is configured. And for every buffer, the same structures are just copied. https://bugzilla.gnome.org/show_bug.cgi?id=783449
Diffstat (limited to 'gst-libs/gst/vaapi')
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_h264.c10
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_h265.c10
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c8
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_vp8.c8
4 files changed, 16 insertions, 20 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
index 14bb0762..6ffbd966 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
@@ -2154,11 +2154,8 @@ error_create_packed_seq_hdr:
}
static gboolean
-ensure_control_rate_params (GstVaapiEncoderH264 * encoder,
- GstVaapiEncPicture * picture)
+ensure_control_rate_params (GstVaapiEncoderH264 * encoder)
{
- GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
-
if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CQP)
return TRUE;
@@ -2176,7 +2173,7 @@ ensure_control_rate_params (GstVaapiEncoderH264 * encoder,
fill_hrd_params (encoder, &GST_VAAPI_ENCODER_VA_HRD (encoder));
/* *INDENT-ON* */
- return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture);
+ return TRUE;
}
/* Generates additional control parameters */
@@ -2187,7 +2184,7 @@ ensure_misc_params (GstVaapiEncoderH264 * encoder, GstVaapiEncPicture * picture)
GstVaapiEncMiscParam *misc;
guint num_roi;
- if (!ensure_control_rate_params (encoder, picture))
+ if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture))
return FALSE;
if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CBR ||
@@ -2848,6 +2845,7 @@ gst_vaapi_encoder_h264_reconfigure (GstVaapiEncoder * base_encoder)
return status;
reset_properties (encoder);
+ ensure_control_rate_params (encoder);
return set_context_info (base_encoder);
}
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c
index 9513f5c8..e8bc289d 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c
@@ -1766,18 +1766,15 @@ error_create_packed_seq_hdr:
}
static gboolean
-ensure_control_rate_params (GstVaapiEncoderH265 * encoder,
- GstVaapiEncPicture * picture)
+ensure_control_rate_params (GstVaapiEncoderH265 * encoder)
{
- GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
-
if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CQP)
return TRUE;
/* HRD params */
fill_hrd_params (encoder, &GST_VAAPI_ENCODER_VA_HRD (encoder));
- return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture);
+ return TRUE;
}
static gboolean
@@ -1785,7 +1782,7 @@ ensure_misc_params (GstVaapiEncoderH265 * encoder, GstVaapiEncPicture * picture)
{
GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
- if (!ensure_control_rate_params (encoder, picture))
+ if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture))
return FALSE;
if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture))
return FALSE;
@@ -2413,6 +2410,7 @@ gst_vaapi_encoder_h265_reconfigure (GstVaapiEncoder * base_encoder)
return status;
reset_properties (encoder);
+ ensure_control_rate_params (encoder);
return set_context_info (base_encoder);
}
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c
index e80443a7..2c284ee4 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c
@@ -452,8 +452,7 @@ ensure_picture (GstVaapiEncoderMpeg2 * encoder, GstVaapiEncPicture * picture,
}
static gboolean
-ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder,
- GstVaapiEncPicture * picture)
+ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder)
{
GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
@@ -476,7 +475,7 @@ ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder,
};
/* *INDENT-ON* */
- return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture);
+ return TRUE;
}
static gboolean
@@ -485,7 +484,7 @@ set_misc_parameters (GstVaapiEncoderMpeg2 * encoder,
{
GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
- if (!ensure_control_rate_params (encoder, picture))
+ if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture))
return FALSE;
if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture))
return FALSE;
@@ -713,6 +712,7 @@ gst_vaapi_encoder_mpeg2_reconfigure (GstVaapiEncoder * base_encoder)
if (!ensure_bitrate (encoder))
goto error;
+ ensure_control_rate_params (encoder);
return set_context_info (base_encoder);
/* ERRORS */
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c
index 11f64492..3aa46e7a 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c
@@ -258,8 +258,7 @@ error:
}
static gboolean
-ensure_control_rate_params (GstVaapiEncoderVP8 * encoder,
- GstVaapiEncPicture * picture)
+ensure_control_rate_params (GstVaapiEncoderVP8 * encoder)
{
GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder);
@@ -291,7 +290,7 @@ ensure_control_rate_params (GstVaapiEncoderVP8 * encoder,
};
/* *INDENT-ON* */
- return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture);
+ return TRUE;
}
static gboolean
@@ -302,7 +301,7 @@ ensure_misc_params (GstVaapiEncoderVP8 * encoder, GstVaapiEncPicture * picture)
if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture))
return FALSE;
- if (!ensure_control_rate_params (encoder, picture))
+ if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture))
return FALSE;
return TRUE;
@@ -510,6 +509,7 @@ gst_vaapi_encoder_vp8_reconfigure (GstVaapiEncoder * base_encoder)
if (!ensure_bitrate (encoder))
goto error;
+ ensure_control_rate_params (encoder);
return set_context_info (base_encoder);
/* ERRORS */