mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +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)
|
||||
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);
|
||||
if (!pool)
|
||||
return FALSE;
|
||||
|
|
Loading…
Reference in a new issue