mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-10 09:25:42 +00:00
xvimagesink: configure colorimetry
Use the XV_ITURBT_709 attribute to configure the 601 or 709 matrix depending on the color matrix of the input video frame.
This commit is contained in:
parent
7cf890ffa0
commit
d99e270fc8
3 changed files with 30 additions and 0 deletions
|
@ -884,6 +884,32 @@ gst_xvcontext_get_format_from_info (GstXvContext * context, GstVideoInfo * info)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
gst_xvcontext_set_colorimetry (GstXvContext * context,
|
||||
GstVideoColorimetry * colorimetry)
|
||||
{
|
||||
Atom prop_atom;
|
||||
int xv_value;
|
||||
|
||||
switch (colorimetry->matrix) {
|
||||
case GST_VIDEO_COLOR_MATRIX_SMPTE240M:
|
||||
case GST_VIDEO_COLOR_MATRIX_BT709:
|
||||
xv_value = 1;
|
||||
break;
|
||||
default:
|
||||
xv_value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
g_mutex_lock (&context->lock);
|
||||
prop_atom = XInternAtom (context->disp, "XV_ITURBT_709", True);
|
||||
if (prop_atom != None) {
|
||||
XvSetPortAttribute (context->disp,
|
||||
context->xv_port_id, prop_atom, xv_value);
|
||||
}
|
||||
g_mutex_unlock (&context->lock);
|
||||
}
|
||||
|
||||
GstXWindow *
|
||||
gst_xvcontext_create_xwindow (GstXvContext * context, gint width, gint height)
|
||||
{
|
||||
|
|
|
@ -198,6 +198,8 @@ void gst_xvcontext_set_synchronous (GstXvContext * xvcontex
|
|||
gboolean synchronous);
|
||||
void gst_xvcontext_update_colorbalance (GstXvContext * xvcontext,
|
||||
GstXvContextConfig * config);
|
||||
void gst_xvcontext_set_colorimetry (GstXvContext * xvcontext,
|
||||
GstVideoColorimetry *colorimetry);
|
||||
|
||||
|
||||
typedef struct _GstXWindow GstXWindow;
|
||||
|
|
|
@ -693,6 +693,8 @@ gst_xvimagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
if (im_format == -1)
|
||||
goto invalid_format;
|
||||
|
||||
gst_xvcontext_set_colorimetry (context, &info.colorimetry);
|
||||
|
||||
size = info.size;
|
||||
|
||||
/* get aspect ratio from caps if it's present, and
|
||||
|
|
Loading…
Reference in a new issue