Lines Matching refs:ximagesink

57 static void gst_x_image_sink_reset (GstRkXImageSink * ximagesink);
59 ximagesink);
61 static void gst_x_image_sink_xwindow_clear (GstRkXImageSink * ximagesink,
1049 xwindow_get_window_position (GstRkXImageSink * ximagesink, int *x, int *y) in xwindow_get_window_position() argument
1061 XGetWindowAttributes (ximagesink->xcontext->disp, in xwindow_get_window_position()
1062 ximagesink->xwindow->win, &attr); in xwindow_get_window_position()
1064 XTranslateCoordinates (ximagesink->xcontext->disp, ximagesink->xwindow->win, in xwindow_get_window_position()
1065 ximagesink->xcontext->root, 0, 0, x, y, &child); in xwindow_get_window_position()
1078 xwindow_get_render_rectangle (GstRkXImageSink * ximagesink, in xwindow_get_render_rectangle() argument
1081 if (ximagesink->save_rect.w != 0 && ximagesink->save_rect.h != 0) { in xwindow_get_render_rectangle()
1082 *width = ximagesink->save_rect.w; in xwindow_get_render_rectangle()
1083 *height = ximagesink->save_rect.h; in xwindow_get_render_rectangle()
1084 *x += ximagesink->save_rect.x; in xwindow_get_render_rectangle()
1085 *y += ximagesink->save_rect.y; in xwindow_get_render_rectangle()
1090 gst_x_image_sink_xwindow_fill_key (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_fill_key() argument
1093 XSetForeground (ximagesink->xcontext->disp, xwindow->gc, color); in gst_x_image_sink_xwindow_fill_key()
1094 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_fill_key()
1095 ximagesink->clip_rect.x, ximagesink->clip_rect.y, in gst_x_image_sink_xwindow_fill_key()
1096 ximagesink->clip_rect.x + ximagesink->clip_rect.w, in gst_x_image_sink_xwindow_fill_key()
1097 ximagesink->clip_rect.y + ximagesink->clip_rect.h); in gst_x_image_sink_xwindow_fill_key()
1102 gst_x_image_sink_xwindow_draw_borders (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_draw_borders() argument
1105 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_xwindow_draw_borders()
1108 XSetForeground (ximagesink->xcontext->disp, xwindow->gc, in gst_x_image_sink_xwindow_draw_borders()
1109 ximagesink->xcontext->black); in gst_x_image_sink_xwindow_draw_borders()
1113 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_draw_borders()
1119 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_draw_borders()
1125 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_draw_borders()
1131 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_draw_borders()
1138 gst_x_image_sink_ximage_put (GstRkXImageSink * ximagesink, GstBuffer * buf) in gst_x_image_sink_ximage_put() argument
1152 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_ximage_put()
1154 if (G_UNLIKELY (ximagesink->xwindow == NULL)) { in gst_x_image_sink_ximage_put()
1155 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_ximage_put()
1161 if (expose || !ximagesink->last_buffer || ximagesink->draw_border) in gst_x_image_sink_ximage_put()
1165 buffer = gst_kms_sink_get_input_buffer (ximagesink, buf); in gst_x_image_sink_ximage_put()
1166 else if (ximagesink->last_buffer) in gst_x_image_sink_ximage_put()
1167 buffer = gst_buffer_ref (ximagesink->last_buffer); in gst_x_image_sink_ximage_put()
1178 GST_TRACE_OBJECT (ximagesink, "displaying fb %d", fb_id); in gst_x_image_sink_ximage_put()
1186 GST_LOG_OBJECT (ximagesink, in gst_x_image_sink_ximage_put()
1189 src.w = GST_VIDEO_SINK_WIDTH (ximagesink); in gst_x_image_sink_ximage_put()
1190 src.h = GST_VIDEO_SINK_HEIGHT (ximagesink); in gst_x_image_sink_ximage_put()
1192 result.w = ximagesink->xwindow->width; in gst_x_image_sink_ximage_put()
1193 result.h = ximagesink->xwindow->height; in gst_x_image_sink_ximage_put()
1195 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_ximage_put()
1198 if (draw_border || !RECT_EQUAL (ximagesink->clip_rect, result)) { in gst_x_image_sink_ximage_put()
1199 ximagesink->clip_rect = result; in gst_x_image_sink_ximage_put()
1200 gst_x_image_sink_xwindow_fill_key (ximagesink, in gst_x_image_sink_ximage_put()
1201 ximagesink->xwindow, RKXIMAGE_COLOR_KEY); in gst_x_image_sink_ximage_put()
1205 memset (&ximagesink->clip_rect, 0, sizeof (GstVideoRectangle)); in gst_x_image_sink_ximage_put()
1209 gst_x_image_sink_xwindow_draw_borders (ximagesink, ximagesink->xwindow, in gst_x_image_sink_ximage_put()
1211 ximagesink->draw_border = FALSE; in gst_x_image_sink_ximage_put()
1214 xwindow_get_window_position (ximagesink, &result.x, &result.y); in gst_x_image_sink_ximage_put()
1216 xwindow_get_render_rectangle (ximagesink, &result.x, &result.y, &result.w, in gst_x_image_sink_ximage_put()
1218 xwindow_calculate_display_ratio (ximagesink, &result.x, &result.y, &result.w, in gst_x_image_sink_ximage_put()
1221 if (GST_VIDEO_INFO_IS_AFBC (&ximagesink->vinfo)) in gst_x_image_sink_ximage_put()
1225 GST_TRACE_OBJECT (ximagesink, in gst_x_image_sink_ximage_put()
1229 ret = drmModeSetPlane (ximagesink->fd, ximagesink->plane_id, in gst_x_image_sink_ximage_put()
1230 ximagesink->crtc_id, fb_id, 0, result.x, result.y, result.w, result.h, in gst_x_image_sink_ximage_put()
1235 GST_ERROR_OBJECT (ximagesink, "drmModesetplane failed: %d", ret); in gst_x_image_sink_ximage_put()
1243 if (!gst_kms_sink_sync (ximagesink)) in gst_x_image_sink_ximage_put()
1246 if (buffer != ximagesink->last_buffer) in gst_x_image_sink_ximage_put()
1247 gst_buffer_replace (&ximagesink->last_buffer, buffer); in gst_x_image_sink_ximage_put()
1254 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_ximage_put()
1255 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_ximage_put()
1259 gst_x_image_sink_xwindow_clear (ximagesink, ximagesink->xwindow); in gst_x_image_sink_ximage_put()
1262 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_ximage_put()
1268 gst_x_image_sink_xwindow_decorate (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_decorate() argument
1274 g_return_val_if_fail (GST_IS_X_IMAGE_SINK (ximagesink), FALSE); in gst_x_image_sink_xwindow_decorate()
1277 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_decorate()
1279 hints_atom = XInternAtom (ximagesink->xcontext->disp, "_MOTIF_WM_HINTS", in gst_x_image_sink_xwindow_decorate()
1282 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_decorate()
1291 XChangeProperty (ximagesink->xcontext->disp, window->win, in gst_x_image_sink_xwindow_decorate()
1295 XSync (ximagesink->xcontext->disp, FALSE); in gst_x_image_sink_xwindow_decorate()
1297 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_decorate()
1305 gst_x_image_sink_xwindow_set_title (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_set_title() argument
1309 g_free (ximagesink->media_title); in gst_x_image_sink_xwindow_set_title()
1310 ximagesink->media_title = g_strdup (media_title); in gst_x_image_sink_xwindow_set_title()
1324 if (app_name && ximagesink->media_title) { in gst_x_image_sink_xwindow_set_title()
1325 title = title_mem = g_strconcat (ximagesink->media_title, " : ", in gst_x_image_sink_xwindow_set_title()
1329 } else if (ximagesink->media_title) { in gst_x_image_sink_xwindow_set_title()
1330 title = ximagesink->media_title; in gst_x_image_sink_xwindow_set_title()
1336 XSetWMName (ximagesink->xcontext->disp, xwindow->win, &xproperty); in gst_x_image_sink_xwindow_set_title()
1346 XSetClassHint (ximagesink->xcontext->disp, xwindow->win, hint); in gst_x_image_sink_xwindow_set_title()
1355 gst_x_image_sink_xwindow_new (GstRkXImageSink * ximagesink, gint width, in gst_x_image_sink_xwindow_new() argument
1361 g_return_val_if_fail (GST_IS_X_IMAGE_SINK (ximagesink), NULL); in gst_x_image_sink_xwindow_new()
1369 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_new()
1371 xwindow->win = XCreateSimpleWindow (ximagesink->xcontext->disp, in gst_x_image_sink_xwindow_new()
1372 ximagesink->xcontext->root, in gst_x_image_sink_xwindow_new()
1373 0, 0, width, height, 0, 0, ximagesink->xcontext->black); in gst_x_image_sink_xwindow_new()
1377 XSetWindowBackgroundPixmap (ximagesink->xcontext->disp, xwindow->win, None); in gst_x_image_sink_xwindow_new()
1380 gst_x_image_sink_xwindow_set_title (ximagesink, xwindow, NULL); in gst_x_image_sink_xwindow_new()
1382 if (ximagesink->handle_events) { in gst_x_image_sink_xwindow_new()
1385 XSelectInput (ximagesink->xcontext->disp, xwindow->win, ExposureMask | in gst_x_image_sink_xwindow_new()
1391 wm_delete = XInternAtom (ximagesink->xcontext->disp, in gst_x_image_sink_xwindow_new()
1393 (void) XSetWMProtocols (ximagesink->xcontext->disp, xwindow->win, in gst_x_image_sink_xwindow_new()
1397 xwindow->gc = XCreateGC (ximagesink->xcontext->disp, xwindow->win, in gst_x_image_sink_xwindow_new()
1400 XMapRaised (ximagesink->xcontext->disp, xwindow->win); in gst_x_image_sink_xwindow_new()
1402 XSync (ximagesink->xcontext->disp, FALSE); in gst_x_image_sink_xwindow_new()
1404 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_new()
1406 gst_x_image_sink_xwindow_decorate (ximagesink, xwindow); in gst_x_image_sink_xwindow_new()
1408 gst_video_overlay_got_window_handle (GST_VIDEO_OVERLAY (ximagesink), in gst_x_image_sink_xwindow_new()
1416 gst_x_image_sink_xwindow_destroy (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_destroy() argument
1420 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_xwindow_destroy()
1422 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_destroy()
1425 if (ximagesink->last_fb_id) { in gst_x_image_sink_xwindow_destroy()
1426 drmModeRmFB (ximagesink->fd, ximagesink->last_fb_id); in gst_x_image_sink_xwindow_destroy()
1427 ximagesink->last_fb_id = 0; in gst_x_image_sink_xwindow_destroy()
1432 XDestroyWindow (ximagesink->xcontext->disp, xwindow->win); in gst_x_image_sink_xwindow_destroy()
1434 XSelectInput (ximagesink->xcontext->disp, xwindow->win, 0); in gst_x_image_sink_xwindow_destroy()
1436 XFreeGC (ximagesink->xcontext->disp, xwindow->gc); in gst_x_image_sink_xwindow_destroy()
1438 XSync (ximagesink->xcontext->disp, FALSE); in gst_x_image_sink_xwindow_destroy()
1440 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_destroy()
1446 gst_x_image_sink_xwindow_update_geometry (GstRkXImageSink * ximagesink) in gst_x_image_sink_xwindow_update_geometry() argument
1451 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_xwindow_update_geometry()
1454 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_update_geometry()
1455 if (G_UNLIKELY (ximagesink->xwindow == NULL)) { in gst_x_image_sink_xwindow_update_geometry()
1456 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_update_geometry()
1460 XGetWindowAttributes (ximagesink->xcontext->disp, in gst_x_image_sink_xwindow_update_geometry()
1461 ximagesink->xwindow->win, &attr); in gst_x_image_sink_xwindow_update_geometry()
1464 reconfigure = (ximagesink->xwindow->width != attr.width) in gst_x_image_sink_xwindow_update_geometry()
1465 || (ximagesink->xwindow->height != attr.height); in gst_x_image_sink_xwindow_update_geometry()
1466 ximagesink->xwindow->width = attr.width; in gst_x_image_sink_xwindow_update_geometry()
1467 ximagesink->xwindow->height = attr.height; in gst_x_image_sink_xwindow_update_geometry()
1469 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_update_geometry()
1472 gst_pad_push_event (GST_BASE_SINK (ximagesink)->sinkpad, in gst_x_image_sink_xwindow_update_geometry()
1477 gst_x_image_sink_xwindow_clear (GstRkXImageSink * ximagesink, in gst_x_image_sink_xwindow_clear() argument
1481 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_xwindow_clear()
1483 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_clear()
1485 XSetForeground (ximagesink->xcontext->disp, xwindow->gc, in gst_x_image_sink_xwindow_clear()
1486 ximagesink->xcontext->black); in gst_x_image_sink_xwindow_clear()
1488 XFillRectangle (ximagesink->xcontext->disp, xwindow->win, xwindow->gc, in gst_x_image_sink_xwindow_clear()
1492 if (ximagesink->last_fb_id) { in gst_x_image_sink_xwindow_clear()
1493 drmModeRmFB (ximagesink->fd, ximagesink->last_fb_id); in gst_x_image_sink_xwindow_clear()
1494 ximagesink->last_fb_id = 0; in gst_x_image_sink_xwindow_clear()
1497 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xwindow_clear()
1504 gst_x_image_sink_handle_xevents (GstRkXImageSink * ximagesink) in gst_x_image_sink_handle_xevents() argument
1511 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_handle_xevents()
1515 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1516 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1517 while (XCheckWindowEvent (ximagesink->xcontext->disp, in gst_x_image_sink_handle_xevents()
1518 ximagesink->xwindow->win, PointerMotionMask, &e)) { in gst_x_image_sink_handle_xevents()
1519 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1520 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1531 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1532 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1536 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1537 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1541 gst_navigation_send_mouse_event (GST_NAVIGATION (ximagesink), in gst_x_image_sink_handle_xevents()
1544 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1545 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1549 while (XCheckWindowEvent (ximagesink->xcontext->disp, in gst_x_image_sink_handle_xevents()
1550 ximagesink->xwindow->win, in gst_x_image_sink_handle_xevents()
1557 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1558 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1566 gst_navigation_send_mouse_event (GST_NAVIGATION (ximagesink), in gst_x_image_sink_handle_xevents()
1572 gst_navigation_send_mouse_event (GST_NAVIGATION (ximagesink), in gst_x_image_sink_handle_xevents()
1579 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1580 keysym = XkbKeycodeToKeysym (ximagesink->xcontext->disp, in gst_x_image_sink_handle_xevents()
1587 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1588 GST_DEBUG_OBJECT (ximagesink, in gst_x_image_sink_handle_xevents()
1591 gst_navigation_send_key_event (GST_NAVIGATION (ximagesink), in gst_x_image_sink_handle_xevents()
1595 GST_DEBUG_OBJECT (ximagesink, "ximagesink unhandled X event (%d)", in gst_x_image_sink_handle_xevents()
1598 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1599 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1603 while (XCheckWindowEvent (ximagesink->xcontext->disp, in gst_x_image_sink_handle_xevents()
1604 ximagesink->xwindow->win, ExposureMask | StructureNotifyMask, &e)) { in gst_x_image_sink_handle_xevents()
1610 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1611 gst_x_image_sink_xwindow_update_geometry (ximagesink); in gst_x_image_sink_handle_xevents()
1612 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1621 if (ximagesink->handle_expose && (exposed || configured)) { in gst_x_image_sink_handle_xevents()
1622 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1623 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1625 gst_x_image_sink_expose (GST_VIDEO_OVERLAY (ximagesink)); in gst_x_image_sink_handle_xevents()
1627 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1628 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1632 while (XPending (ximagesink->xcontext->disp)) { in gst_x_image_sink_handle_xevents()
1633 XNextEvent (ximagesink->xcontext->disp, &e); in gst_x_image_sink_handle_xevents()
1639 wm_delete = XInternAtom (ximagesink->xcontext->disp, in gst_x_image_sink_handle_xevents()
1643 GST_ELEMENT_ERROR (ximagesink, RESOURCE, NOT_FOUND, in gst_x_image_sink_handle_xevents()
1646 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1647 gst_x_image_sink_xwindow_destroy (ximagesink, ximagesink->xwindow); in gst_x_image_sink_handle_xevents()
1648 ximagesink->xwindow = NULL; in gst_x_image_sink_handle_xevents()
1649 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1659 if (ximagesink->paused in gst_x_image_sink_handle_xevents()
1660 && xwindow_get_window_position (ximagesink, NULL, NULL)) { in gst_x_image_sink_handle_xevents()
1662 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1663 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1665 gst_x_image_sink_expose (GST_VIDEO_OVERLAY (ximagesink)); in gst_x_image_sink_handle_xevents()
1666 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1667 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1670 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_handle_xevents()
1671 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_handle_xevents()
1675 gst_x_image_sink_event_thread (GstRkXImageSink * ximagesink) in gst_x_image_sink_event_thread() argument
1677 g_return_val_if_fail (GST_IS_X_IMAGE_SINK (ximagesink), NULL); in gst_x_image_sink_event_thread()
1679 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_event_thread()
1680 while (ximagesink->running) { in gst_x_image_sink_event_thread()
1681 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_event_thread()
1683 if (ximagesink->xwindow) { in gst_x_image_sink_event_thread()
1684 gst_x_image_sink_handle_xevents (ximagesink); in gst_x_image_sink_event_thread()
1689 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_event_thread()
1691 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_event_thread()
1697 gst_x_image_sink_manage_event_thread (GstRkXImageSink * ximagesink) in gst_x_image_sink_manage_event_thread() argument
1702 if (ximagesink->xcontext == NULL) { in gst_x_image_sink_manage_event_thread()
1706 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_manage_event_thread()
1707 if (ximagesink->handle_expose || ximagesink->handle_events) { in gst_x_image_sink_manage_event_thread()
1708 if (!ximagesink->event_thread) { in gst_x_image_sink_manage_event_thread()
1710 GST_DEBUG_OBJECT (ximagesink, "run xevent thread, expose %d, events %d", in gst_x_image_sink_manage_event_thread()
1711 ximagesink->handle_expose, ximagesink->handle_events); in gst_x_image_sink_manage_event_thread()
1712 ximagesink->running = TRUE; in gst_x_image_sink_manage_event_thread()
1713 ximagesink->event_thread = g_thread_try_new ("ximagesink-events", in gst_x_image_sink_manage_event_thread()
1714 (GThreadFunc) gst_x_image_sink_event_thread, ximagesink, NULL); in gst_x_image_sink_manage_event_thread()
1717 if (ximagesink->event_thread) { in gst_x_image_sink_manage_event_thread()
1718 GST_DEBUG_OBJECT (ximagesink, "stop xevent thread, expose %d, events %d", in gst_x_image_sink_manage_event_thread()
1719 ximagesink->handle_expose, ximagesink->handle_events); in gst_x_image_sink_manage_event_thread()
1720 ximagesink->running = FALSE; in gst_x_image_sink_manage_event_thread()
1722 thread = ximagesink->event_thread; in gst_x_image_sink_manage_event_thread()
1723 ximagesink->event_thread = NULL; in gst_x_image_sink_manage_event_thread()
1726 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_manage_event_thread()
1739 gst_x_image_sink_xcontext_get (GstRkXImageSink * ximagesink) in gst_x_image_sink_xcontext_get() argument
1748 g_return_val_if_fail (GST_IS_X_IMAGE_SINK (ximagesink), NULL); in gst_x_image_sink_xcontext_get()
1752 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_get()
1754 xcontext->disp = XOpenDisplay (ximagesink->display_name); in gst_x_image_sink_xcontext_get()
1757 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_get()
1759 GST_ELEMENT_ERROR (ximagesink, RESOURCE, WRITE, in gst_x_image_sink_xcontext_get()
1777 GST_DEBUG_OBJECT (ximagesink, "X reports %dx%d pixels and %d mm x %d mm", in gst_x_image_sink_xcontext_get()
1785 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_get()
1787 GST_ELEMENT_ERROR (ximagesink, RESOURCE, SETTINGS, in gst_x_image_sink_xcontext_get()
1819 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_get()
1826 GST_ERROR_OBJECT (ximagesink, "unknown format"); in gst_x_image_sink_xcontext_get()
1834 gst_x_image_sink_xcontext_clear (GstRkXImageSink * ximagesink) in gst_x_image_sink_xcontext_clear() argument
1838 g_return_if_fail (GST_IS_X_IMAGE_SINK (ximagesink)); in gst_x_image_sink_xcontext_clear()
1840 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_xcontext_clear()
1841 if (ximagesink->xcontext == NULL) { in gst_x_image_sink_xcontext_clear()
1842 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_xcontext_clear()
1849 xcontext = ximagesink->xcontext; in gst_x_image_sink_xcontext_clear()
1850 ximagesink->xcontext = NULL; in gst_x_image_sink_xcontext_clear()
1852 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_xcontext_clear()
1854 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_clear()
1858 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_xcontext_clear()
1876 GstRkXImageSink *ximagesink; in gst_x_image_sink_getcaps() local
1879 ximagesink = GST_X_IMAGE_SINK (bsink); in gst_x_image_sink_getcaps()
1881 caps = gst_x_image_sink_get_allowed_caps (ximagesink); in gst_x_image_sink_getcaps()
1895 GstRkXImageSink *ximagesink; in gst_x_image_sink_setcaps() local
1901 ximagesink = GST_X_IMAGE_SINK (bsink); in gst_x_image_sink_setcaps()
1903 if (!ximagesink->xcontext) in gst_x_image_sink_setcaps()
1909 gst_kms_sink_drain (ximagesink); in gst_x_image_sink_setcaps()
1911 GST_DEBUG_OBJECT (ximagesink, "given caps %" GST_PTR_FORMAT, caps); in gst_x_image_sink_setcaps()
1925 GST_VIDEO_SINK_WIDTH (ximagesink) = info.width; in gst_x_image_sink_setcaps()
1926 GST_VIDEO_SINK_HEIGHT (ximagesink) = info.height; in gst_x_image_sink_setcaps()
1927 ximagesink->fps_n = info.fps_n; in gst_x_image_sink_setcaps()
1928 ximagesink->fps_d = info.fps_d; in gst_x_image_sink_setcaps()
1929 ximagesink->par_n = info.par_n; in gst_x_image_sink_setcaps()
1930 ximagesink->par_d = info.par_d; in gst_x_image_sink_setcaps()
1933 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_setcaps()
1934 if (!ximagesink->xwindow) { in gst_x_image_sink_setcaps()
1935 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_setcaps()
1936 gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (ximagesink)); in gst_x_image_sink_setcaps()
1938 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_setcaps()
1942 if (GST_VIDEO_SINK_WIDTH (ximagesink) <= 0 || in gst_x_image_sink_setcaps()
1943 GST_VIDEO_SINK_HEIGHT (ximagesink) <= 0) in gst_x_image_sink_setcaps()
1947 newpool = gst_kms_sink_create_pool (ximagesink, caps, in gst_x_image_sink_setcaps()
1953 oldpool = ximagesink->pool; in gst_x_image_sink_setcaps()
1954 ximagesink->pool = newpool; in gst_x_image_sink_setcaps()
1961 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_setcaps()
1962 if (!ximagesink->xwindow) { in gst_x_image_sink_setcaps()
1963 ximagesink->xwindow = gst_x_image_sink_xwindow_new (ximagesink, in gst_x_image_sink_setcaps()
1964 GST_VIDEO_SINK_WIDTH (ximagesink), GST_VIDEO_SINK_HEIGHT (ximagesink)); in gst_x_image_sink_setcaps()
1967 ximagesink->vinfo = info; in gst_x_image_sink_setcaps()
1970 ximagesink->draw_border = TRUE; in gst_x_image_sink_setcaps()
1972 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_setcaps()
1979 GST_ERROR_OBJECT (ximagesink, "caps invalid"); in gst_x_image_sink_setcaps()
1984 GST_ELEMENT_ERROR (ximagesink, CORE, NEGOTIATION, (NULL), in gst_x_image_sink_setcaps()
1999 GstRkXImageSink *ximagesink; in gst_x_image_sink_change_state() local
2002 ximagesink = GST_X_IMAGE_SINK (element); in gst_x_image_sink_change_state()
2007 if (ximagesink->xcontext == NULL) { in gst_x_image_sink_change_state()
2008 xcontext = gst_x_image_sink_xcontext_get (ximagesink); in gst_x_image_sink_change_state()
2013 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_change_state()
2015 ximagesink->xcontext = xcontext; in gst_x_image_sink_change_state()
2016 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_change_state()
2020 GST_DEBUG_OBJECT (ximagesink, "XSynchronize called with %s", in gst_x_image_sink_change_state()
2021 ximagesink->synchronous ? "TRUE" : "FALSE"); in gst_x_image_sink_change_state()
2022 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_change_state()
2023 XSynchronize (ximagesink->xcontext->disp, ximagesink->synchronous); in gst_x_image_sink_change_state()
2024 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_change_state()
2025 gst_x_image_sink_manage_event_thread (ximagesink); in gst_x_image_sink_change_state()
2028 ximagesink->paused = TRUE; in gst_x_image_sink_change_state()
2029 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_change_state()
2030 if (ximagesink->xwindow) in gst_x_image_sink_change_state()
2031 gst_x_image_sink_xwindow_clear (ximagesink, ximagesink->xwindow); in gst_x_image_sink_change_state()
2032 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_change_state()
2035 ximagesink->paused = FALSE; in gst_x_image_sink_change_state()
2045 ximagesink->paused = TRUE; in gst_x_image_sink_change_state()
2048 ximagesink->paused = FALSE; in gst_x_image_sink_change_state()
2049 ximagesink->fps_n = 0; in gst_x_image_sink_change_state()
2050 ximagesink->fps_d = 1; in gst_x_image_sink_change_state()
2051 GST_VIDEO_SINK_WIDTH (ximagesink) = 0; in gst_x_image_sink_change_state()
2052 GST_VIDEO_SINK_HEIGHT (ximagesink) = 0; in gst_x_image_sink_change_state()
2055 gst_x_image_sink_reset (ximagesink); in gst_x_image_sink_change_state()
2069 GstRkXImageSink *ximagesink; in gst_x_image_sink_get_times() local
2071 ximagesink = GST_X_IMAGE_SINK (bsink); in gst_x_image_sink_get_times()
2078 if (ximagesink->fps_n > 0) { in gst_x_image_sink_get_times()
2080 gst_util_uint64_scale_int (GST_SECOND, ximagesink->fps_d, in gst_x_image_sink_get_times()
2081 ximagesink->fps_n); in gst_x_image_sink_get_times()
2091 GstRkXImageSink *ximagesink; in gst_x_image_sink_show_frame() local
2093 ximagesink = GST_X_IMAGE_SINK (vsink); in gst_x_image_sink_show_frame()
2095 if (!gst_x_image_sink_ximage_put (ximagesink, buf)) { in gst_x_image_sink_show_frame()
2097 GST_WARNING_OBJECT (ximagesink, "could not output image - no window"); in gst_x_image_sink_show_frame()
2107 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (sink); in gst_x_image_sink_event() local
2118 GST_DEBUG_OBJECT (ximagesink, "got tags, title='%s'", title); in gst_x_image_sink_event()
2119 gst_x_image_sink_xwindow_set_title (ximagesink, ximagesink->xwindow, in gst_x_image_sink_event()
2138 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (navigation); in gst_x_image_sink_navigation_send_event() local
2151 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_navigation_send_event()
2153 if (!ximagesink->xwindow) { in gst_x_image_sink_navigation_send_event()
2154 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_navigation_send_event()
2159 x_offset = ximagesink->xwindow->width - GST_VIDEO_SINK_WIDTH (ximagesink); in gst_x_image_sink_navigation_send_event()
2160 y_offset = ximagesink->xwindow->height - GST_VIDEO_SINK_HEIGHT (ximagesink); in gst_x_image_sink_navigation_send_event()
2162 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_navigation_send_event()
2176 handled = gst_pad_push_event (GST_VIDEO_SINK_PAD (ximagesink), event); in gst_x_image_sink_navigation_send_event()
2179 gst_element_post_message (GST_ELEMENT_CAST (ximagesink), in gst_x_image_sink_navigation_send_event()
2180 gst_navigation_message_new_event (GST_OBJECT_CAST (ximagesink), in gst_x_image_sink_navigation_send_event()
2197 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (overlay); in gst_x_image_sink_set_window_handle() local
2203 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_set_window_handle()
2206 if (ximagesink->xwindow && (xwindow_id == ximagesink->xwindow->win)) { in gst_x_image_sink_set_window_handle()
2207 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_set_window_handle()
2212 if (!ximagesink->xcontext && in gst_x_image_sink_set_window_handle()
2213 !(ximagesink->xcontext = gst_x_image_sink_xcontext_get (ximagesink))) { in gst_x_image_sink_set_window_handle()
2214 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_set_window_handle()
2220 if (ximagesink->xwindow) { in gst_x_image_sink_set_window_handle()
2221 gst_x_image_sink_xwindow_destroy (ximagesink, ximagesink->xwindow); in gst_x_image_sink_set_window_handle()
2222 ximagesink->xwindow = NULL; in gst_x_image_sink_set_window_handle()
2229 if (GST_VIDEO_SINK_WIDTH (ximagesink) && GST_VIDEO_SINK_HEIGHT (ximagesink)) { in gst_x_image_sink_set_window_handle()
2230 xwindow = gst_x_image_sink_xwindow_new (ximagesink, in gst_x_image_sink_set_window_handle()
2231 GST_VIDEO_SINK_WIDTH (ximagesink), in gst_x_image_sink_set_window_handle()
2232 GST_VIDEO_SINK_HEIGHT (ximagesink)); in gst_x_image_sink_set_window_handle()
2240 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_set_window_handle()
2242 if (ximagesink->handle_events) { in gst_x_image_sink_set_window_handle()
2243 XSelectInput (ximagesink->xcontext->disp, xwindow->win, ExposureMask | in gst_x_image_sink_set_window_handle()
2248 xwindow->gc = XCreateGC (ximagesink->xcontext->disp, xwindow->win, 0, NULL); in gst_x_image_sink_set_window_handle()
2249 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_set_window_handle()
2253 ximagesink->xwindow = xwindow; in gst_x_image_sink_set_window_handle()
2255 gst_x_image_sink_xwindow_update_geometry (ximagesink); in gst_x_image_sink_set_window_handle()
2258 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_set_window_handle()
2264 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (overlay); in gst_x_image_sink_expose() local
2266 gst_x_image_sink_xwindow_update_geometry (ximagesink); in gst_x_image_sink_expose()
2267 gst_x_image_sink_ximage_put (ximagesink, NULL); in gst_x_image_sink_expose()
2274 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (overlay); in gst_x_image_sink_set_event_handling() local
2276 ximagesink->handle_events = handle_events; in gst_x_image_sink_set_event_handling()
2278 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_set_event_handling()
2280 if (G_UNLIKELY (!ximagesink->xwindow)) { in gst_x_image_sink_set_event_handling()
2281 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_set_event_handling()
2285 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_set_event_handling()
2288 if (ximagesink->xwindow->internal) { in gst_x_image_sink_set_event_handling()
2289 XSelectInput (ximagesink->xcontext->disp, ximagesink->xwindow->win, in gst_x_image_sink_set_event_handling()
2293 XSelectInput (ximagesink->xcontext->disp, ximagesink->xwindow->win, in gst_x_image_sink_set_event_handling()
2298 XSelectInput (ximagesink->xcontext->disp, ximagesink->xwindow->win, 0); in gst_x_image_sink_set_event_handling()
2301 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_set_event_handling()
2303 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_set_event_handling()
2310 GstRkXImageSink *ximagesink = GST_X_IMAGE_SINK (overlay); in gst_x_image_sink_set_render_rectangle() local
2311 GST_DEBUG_OBJECT (ximagesink, "Set Render Rectangle" in gst_x_image_sink_set_render_rectangle()
2314 ximagesink->save_rect.w = width; in gst_x_image_sink_set_render_rectangle()
2315 ximagesink->save_rect.h = height; in gst_x_image_sink_set_render_rectangle()
2316 ximagesink->save_rect.x = x; in gst_x_image_sink_set_render_rectangle()
2317 ximagesink->save_rect.y = y; in gst_x_image_sink_set_render_rectangle()
2319 gst_x_image_sink_expose (GST_VIDEO_OVERLAY (ximagesink)); in gst_x_image_sink_set_render_rectangle()
2341 GstRkXImageSink *ximagesink; in gst_x_image_sink_set_property() local
2345 ximagesink = GST_X_IMAGE_SINK (object); in gst_x_image_sink_set_property()
2349 ximagesink->display_name = g_strdup (g_value_get_string (value)); in gst_x_image_sink_set_property()
2352 ximagesink->synchronous = g_value_get_boolean (value); in gst_x_image_sink_set_property()
2353 if (ximagesink->xcontext) { in gst_x_image_sink_set_property()
2354 GST_DEBUG_OBJECT (ximagesink, "XSynchronize called with %s", in gst_x_image_sink_set_property()
2355 ximagesink->synchronous ? "TRUE" : "FALSE"); in gst_x_image_sink_set_property()
2356 g_mutex_lock (&ximagesink->x_lock); in gst_x_image_sink_set_property()
2357 XSynchronize (ximagesink->xcontext->disp, ximagesink->synchronous); in gst_x_image_sink_set_property()
2358 g_mutex_unlock (&ximagesink->x_lock); in gst_x_image_sink_set_property()
2362 gst_x_image_sink_set_event_handling (GST_VIDEO_OVERLAY (ximagesink), in gst_x_image_sink_set_property()
2364 gst_x_image_sink_manage_event_thread (ximagesink); in gst_x_image_sink_set_property()
2367 ximagesink->handle_expose = g_value_get_boolean (value); in gst_x_image_sink_set_property()
2368 gst_x_image_sink_manage_event_thread (ximagesink); in gst_x_image_sink_set_property()
2371 g_free (ximagesink->devname); in gst_x_image_sink_set_property()
2372 ximagesink->devname = g_value_dup_string (value); in gst_x_image_sink_set_property()
2375 g_free (ximagesink->bus_id); in gst_x_image_sink_set_property()
2376 ximagesink->bus_id = g_value_dup_string (value); in gst_x_image_sink_set_property()
2379 ximagesink->conn_id = g_value_get_int (value); in gst_x_image_sink_set_property()
2382 ximagesink->plane_id = g_value_get_int (value); in gst_x_image_sink_set_property()
2385 ximagesink->keep_aspect = g_value_get_boolean (value); in gst_x_image_sink_set_property()
2397 GstRkXImageSink *ximagesink; in gst_x_image_sink_get_property() local
2401 ximagesink = GST_X_IMAGE_SINK (object); in gst_x_image_sink_get_property()
2405 g_value_set_string (value, ximagesink->display_name); in gst_x_image_sink_get_property()
2408 g_value_set_boolean (value, ximagesink->synchronous); in gst_x_image_sink_get_property()
2411 g_value_set_boolean (value, ximagesink->handle_events); in gst_x_image_sink_get_property()
2414 g_value_set_boolean (value, ximagesink->handle_expose); in gst_x_image_sink_get_property()
2417 if (ximagesink->xwindow) in gst_x_image_sink_get_property()
2418 g_value_set_uint64 (value, ximagesink->xwindow->width); in gst_x_image_sink_get_property()
2423 if (ximagesink->xwindow) in gst_x_image_sink_get_property()
2424 g_value_set_uint64 (value, ximagesink->xwindow->height); in gst_x_image_sink_get_property()
2429 g_value_set_string (value, ximagesink->devname); in gst_x_image_sink_get_property()
2432 g_value_set_string (value, ximagesink->bus_id); in gst_x_image_sink_get_property()
2435 g_value_set_int (value, ximagesink->conn_id); in gst_x_image_sink_get_property()
2438 g_value_set_int (value, ximagesink->plane_id); in gst_x_image_sink_get_property()
2441 g_value_set_boolean (value, ximagesink->keep_aspect); in gst_x_image_sink_get_property()
2450 gst_x_image_sink_reset (GstRkXImageSink * ximagesink) in gst_x_image_sink_reset() argument
2454 GST_OBJECT_LOCK (ximagesink); in gst_x_image_sink_reset()
2455 ximagesink->running = FALSE; in gst_x_image_sink_reset()
2457 thread = ximagesink->event_thread; in gst_x_image_sink_reset()
2458 ximagesink->event_thread = NULL; in gst_x_image_sink_reset()
2459 GST_OBJECT_UNLOCK (ximagesink); in gst_x_image_sink_reset()
2465 gst_buffer_replace (&ximagesink->last_buffer, NULL); in gst_x_image_sink_reset()
2467 g_mutex_lock (&ximagesink->flow_lock); in gst_x_image_sink_reset()
2469 if (ximagesink->xwindow) { in gst_x_image_sink_reset()
2470 gst_x_image_sink_xwindow_clear (ximagesink, ximagesink->xwindow); in gst_x_image_sink_reset()
2471 gst_x_image_sink_xwindow_destroy (ximagesink, ximagesink->xwindow); in gst_x_image_sink_reset()
2472 ximagesink->xwindow = NULL; in gst_x_image_sink_reset()
2474 g_mutex_unlock (&ximagesink->flow_lock); in gst_x_image_sink_reset()
2476 gst_x_image_sink_xcontext_clear (ximagesink); in gst_x_image_sink_reset()
2482 GstRkXImageSink *ximagesink; in gst_x_image_sink_finalize() local
2484 ximagesink = GST_X_IMAGE_SINK (object); in gst_x_image_sink_finalize()
2486 gst_x_image_sink_reset (ximagesink); in gst_x_image_sink_finalize()
2488 if (ximagesink->display_name) { in gst_x_image_sink_finalize()
2489 g_free (ximagesink->display_name); in gst_x_image_sink_finalize()
2490 ximagesink->display_name = NULL; in gst_x_image_sink_finalize()
2492 g_mutex_clear (&ximagesink->x_lock); in gst_x_image_sink_finalize()
2493 g_mutex_clear (&ximagesink->flow_lock); in gst_x_image_sink_finalize()
2495 g_free (ximagesink->media_title); in gst_x_image_sink_finalize()
2497 gst_poll_free (ximagesink->poll); in gst_x_image_sink_finalize()
2499 g_clear_pointer (&ximagesink->devname, g_free); in gst_x_image_sink_finalize()
2500 g_clear_pointer (&ximagesink->bus_id, g_free); in gst_x_image_sink_finalize()
2506 gst_x_image_sink_init (GstRkXImageSink * ximagesink) in gst_x_image_sink_init() argument
2508 ximagesink->display_name = NULL; in gst_x_image_sink_init()
2509 ximagesink->xcontext = NULL; in gst_x_image_sink_init()
2510 ximagesink->xwindow = NULL; in gst_x_image_sink_init()
2511 ximagesink->last_buffer = NULL; in gst_x_image_sink_init()
2513 ximagesink->event_thread = NULL; in gst_x_image_sink_init()
2514 ximagesink->running = FALSE; in gst_x_image_sink_init()
2516 ximagesink->fps_n = 0; in gst_x_image_sink_init()
2517 ximagesink->fps_d = 1; in gst_x_image_sink_init()
2519 ximagesink->keep_aspect = TRUE; in gst_x_image_sink_init()
2521 g_mutex_init (&ximagesink->x_lock); in gst_x_image_sink_init()
2522 g_mutex_init (&ximagesink->flow_lock); in gst_x_image_sink_init()
2524 ximagesink->synchronous = FALSE; in gst_x_image_sink_init()
2525 ximagesink->handle_events = TRUE; in gst_x_image_sink_init()
2526 ximagesink->handle_expose = TRUE; in gst_x_image_sink_init()
2528 ximagesink->fd = -1; in gst_x_image_sink_init()
2529 ximagesink->conn_id = -1; in gst_x_image_sink_init()
2530 ximagesink->plane_id = -1; in gst_x_image_sink_init()
2531 gst_poll_fd_init (&ximagesink->pollfd); in gst_x_image_sink_init()
2532 ximagesink->poll = gst_poll_new (TRUE); in gst_x_image_sink_init()
2533 gst_video_info_init (&ximagesink->vinfo); in gst_x_image_sink_init()
2535 ximagesink->save_rect.x = 0; in gst_x_image_sink_init()
2536 ximagesink->save_rect.y = 0; in gst_x_image_sink_init()
2537 ximagesink->save_rect.w = 0; in gst_x_image_sink_init()
2538 ximagesink->save_rect.h = 0; in gst_x_image_sink_init()
2540 ximagesink->paused = FALSE; in gst_x_image_sink_init()
2542 ximagesink->devname = g_strdup ("rockchip"); in gst_x_image_sink_init()