mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-03 01:02:19 +00:00
video-converter: avoid scaler when size is unchanged
This commit is contained in:
parent
6602861d00
commit
31a3e6c9f1
1 changed files with 19 additions and 14 deletions
|
@ -3881,26 +3881,31 @@ setup_scale (GstVideoConverter * convert)
|
||||||
if (is_merge_yuv (in_info)) {
|
if (is_merge_yuv (in_info)) {
|
||||||
GstVideoScaler *y_scaler, *uv_scaler;
|
GstVideoScaler *y_scaler, *uv_scaler;
|
||||||
|
|
||||||
y_scaler = gst_video_scaler_new (method, GST_VIDEO_SCALER_FLAG_NONE, taps,
|
if (in_width != out_width) {
|
||||||
GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (in_finfo, GST_VIDEO_COMP_Y,
|
y_scaler =
|
||||||
in_width), GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (out_finfo,
|
gst_video_scaler_new (method, GST_VIDEO_SCALER_FLAG_NONE, taps,
|
||||||
GST_VIDEO_COMP_Y, out_width), convert->config);
|
GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (in_finfo, GST_VIDEO_COMP_Y,
|
||||||
uv_scaler =
|
in_width), GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (out_finfo,
|
||||||
gst_video_scaler_new (method, GST_VIDEO_SCALER_FLAG_NONE, taps,
|
GST_VIDEO_COMP_Y, out_width), convert->config);
|
||||||
GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (in_finfo, GST_VIDEO_COMP_U,
|
uv_scaler =
|
||||||
in_width), GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (out_finfo,
|
gst_video_scaler_new (method, GST_VIDEO_SCALER_FLAG_NONE, taps,
|
||||||
GST_VIDEO_COMP_U, out_width), convert->config);
|
GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (in_finfo, GST_VIDEO_COMP_U,
|
||||||
|
in_width), GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (out_finfo,
|
||||||
|
GST_VIDEO_COMP_U, out_width), convert->config);
|
||||||
|
|
||||||
convert->fh_scaler[0] =
|
convert->fh_scaler[0] =
|
||||||
gst_video_scaler_combine_packed_YUV (y_scaler, uv_scaler,
|
gst_video_scaler_combine_packed_YUV (y_scaler, uv_scaler,
|
||||||
in_format, out_format);
|
in_format, out_format);
|
||||||
|
|
||||||
|
gst_video_scaler_free (y_scaler);
|
||||||
|
gst_video_scaler_free (uv_scaler);
|
||||||
|
} else
|
||||||
|
convert->fh_scaler[0] = NULL;
|
||||||
|
|
||||||
pstride = GST_VIDEO_FORMAT_INFO_PSTRIDE (out_finfo, GST_VIDEO_COMP_Y);
|
pstride = GST_VIDEO_FORMAT_INFO_PSTRIDE (out_finfo, GST_VIDEO_COMP_Y);
|
||||||
convert->fin_x[0] = GST_ROUND_UP_2 (convert->in_x) * pstride;
|
convert->fin_x[0] = GST_ROUND_UP_2 (convert->in_x) * pstride;
|
||||||
convert->fout_x[0] = GST_ROUND_UP_2 (convert->out_x) * pstride;
|
convert->fout_x[0] = GST_ROUND_UP_2 (convert->out_x) * pstride;
|
||||||
|
|
||||||
gst_video_scaler_free (y_scaler);
|
|
||||||
gst_video_scaler_free (uv_scaler);
|
|
||||||
} else {
|
} else {
|
||||||
if (in_width != out_width && in_width != 0 && out_width != 0)
|
if (in_width != out_width && in_width != 0 && out_width != 0)
|
||||||
convert->fh_scaler[0] =
|
convert->fh_scaler[0] =
|
||||||
|
|
Loading…
Reference in a new issue