mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
vaapiupload: use implicit color conversion to NV12.
Always perform conversion of sources buffers to NV12 since this is the way we tested for this capability in ensure_allowed_caps(). This also saves memory bandwidth for further rendering. However, this may not preserve quality since the YUV buffers are down-sampled to 4:2:0.
This commit is contained in:
parent
ac75755105
commit
d79d561819
1 changed files with 15 additions and 0 deletions
|
@ -219,6 +219,21 @@ ensure_surface_pool(GstVaapiUploader *uploader, GstCaps *caps,
|
||||||
if (!*caps_changed_ptr)
|
if (!*caps_changed_ptr)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* Always try to downsample source buffers to YUV 4:2:0 format as
|
||||||
|
this saves memory bandwidth for further rendering */
|
||||||
|
/* XXX: this also means that visual quality is not preserved */
|
||||||
|
if (format != GST_VIDEO_FORMAT_ENCODED) {
|
||||||
|
const GstVaapiChromaType chroma_type =
|
||||||
|
gst_video_format_get_chroma_type(format);
|
||||||
|
if (chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420) {
|
||||||
|
const GstVideoFormat image_format =
|
||||||
|
GST_VIDEO_INFO_FORMAT(&priv->image_info);
|
||||||
|
GST_INFO("use implicit conversion of %s buffers to NV12 surfaces",
|
||||||
|
gst_video_format_to_string(image_format));
|
||||||
|
gst_video_info_set_format(&vi, GST_VIDEO_FORMAT_NV12, width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pool = gst_vaapi_surface_pool_new(priv->display, &vi);
|
pool = gst_vaapi_surface_pool_new(priv->display, &vi);
|
||||||
if (!pool)
|
if (!pool)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
Loading…
Reference in a new issue