mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 14:26:43 +00:00
sys/xvimage/xvimagesink.c: Better debug logging in port value handling. Merging separate port value loops into one.
Original commit message from CVS: * sys/xvimage/xvimagesink.c: Better debug logging in port value handling. Merging separate port value loops into one.
This commit is contained in:
parent
b9bc12afd8
commit
5965f5e8a9
2 changed files with 21 additions and 18 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2008-05-14 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
|
* sys/xvimage/xvimagesink.c:
|
||||||
|
Better debug logging in port value handling. Merging separate port
|
||||||
|
value loops into one.
|
||||||
|
|
||||||
2008-05-13 Wim Taymans <wim.taymans@collabora.co.uk>
|
2008-05-13 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
Patch by: Hannes Bistry <hannesb at gmx dot de>
|
Patch by: Hannes Bistry <hannesb at gmx dot de>
|
||||||
|
|
|
@ -117,6 +117,8 @@
|
||||||
* </refsect2>
|
* </refsect2>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* for developers: there are two useful tools : xvinfo and xvattr */
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -1343,34 +1345,30 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
|
||||||
|
|
||||||
/* Set XV_AUTOPAINT_COLORKEY and XV_DOUBLE_BUFFER and XV_COLORKEY */
|
/* Set XV_AUTOPAINT_COLORKEY and XV_DOUBLE_BUFFER and XV_COLORKEY */
|
||||||
{
|
{
|
||||||
int count;
|
int count, todo = 3;
|
||||||
XvAttribute *const attr = XvQueryPortAttributes (xcontext->disp,
|
XvAttribute *const attr = XvQueryPortAttributes (xcontext->disp,
|
||||||
xcontext->xv_port_id, &count);
|
xcontext->xv_port_id, &count);
|
||||||
static const char autopaint[] = "XV_AUTOPAINT_COLORKEY";
|
static const char autopaint[] = "XV_AUTOPAINT_COLORKEY";
|
||||||
static const char dbl_buffer[] = "XV_DOUBLE_BUFFER";
|
static const char dbl_buffer[] = "XV_DOUBLE_BUFFER";
|
||||||
static const char colorkey[] = "XV_COLORKEY";
|
static const char colorkey[] = "XV_COLORKEY";
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
GST_DEBUG_OBJECT (xvimagesink, "Checking %d Xv port attributes", count);
|
||||||
|
|
||||||
|
for (i = 0; ((i < count) && todo); i++)
|
||||||
if (!strcmp (attr[i].name, autopaint)) {
|
if (!strcmp (attr[i].name, autopaint)) {
|
||||||
const Atom atom = XInternAtom (xcontext->disp, autopaint, False);
|
const Atom atom = XInternAtom (xcontext->disp, autopaint, False);
|
||||||
|
|
||||||
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom, 1);
|
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom, 1);
|
||||||
break;
|
todo--;
|
||||||
}
|
} else if (!strcmp (attr[i].name, dbl_buffer)) {
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
if (!strcmp (attr[i].name, dbl_buffer)) {
|
|
||||||
const Atom atom = XInternAtom (xcontext->disp, dbl_buffer, False);
|
const Atom atom = XInternAtom (xcontext->disp, dbl_buffer, False);
|
||||||
|
|
||||||
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
|
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
|
||||||
(xvimagesink->double_buffer ? 1 : 0));
|
(xvimagesink->double_buffer ? 1 : 0));
|
||||||
break;
|
todo--;
|
||||||
}
|
} else if (!strcmp (attr[i].name, colorkey)) {
|
||||||
|
/* Set the colorkey to something that is dark but hopefully won't randomly
|
||||||
/* Set the colorkey to something that is dark but hopefully won't randomly
|
* appear on the screen elsewhere (ie not black or greys) */
|
||||||
* appear on the screen elsewhere (ie not black or greys) */
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
if (!strcmp (attr[i].name, colorkey)) {
|
|
||||||
const Atom atom = XInternAtom (xcontext->disp, colorkey, False);
|
const Atom atom = XInternAtom (xcontext->disp, colorkey, False);
|
||||||
guint32 ckey;
|
guint32 ckey;
|
||||||
guint32 keymask;
|
guint32 keymask;
|
||||||
|
@ -1395,7 +1393,6 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
|
||||||
else
|
else
|
||||||
set_attr = FALSE;
|
set_attr = FALSE;
|
||||||
|
|
||||||
|
|
||||||
if (set_attr) {
|
if (set_attr) {
|
||||||
ckey = CLAMP (ckey, (guint32) attr[i].min_value,
|
ckey = CLAMP (ckey, (guint32) attr[i].min_value,
|
||||||
(guint32) attr[i].max_value);
|
(guint32) attr[i].max_value);
|
||||||
|
@ -1406,10 +1403,10 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
|
||||||
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
|
XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
|
||||||
(gint) ckey);
|
(gint) ckey);
|
||||||
} else {
|
} else {
|
||||||
GST_LOG_OBJECT (xvimagesink,
|
GST_DEBUG_OBJECT (xvimagesink,
|
||||||
"Unknown bit depth for Xv Colorkey - not adjusting ");
|
"Unknown bit depth %d for Xv Colorkey - not adjusting", bits);
|
||||||
}
|
}
|
||||||
break;
|
todo--;
|
||||||
}
|
}
|
||||||
|
|
||||||
XFree (attr);
|
XFree (attr);
|
||||||
|
|
Loading…
Reference in a new issue