diff options
author | Thijs Vermeir <thijsvermeir@gmail.com> | 2007-09-21 14:55:19 +0000 |
---|---|---|
committer | Thijs Vermeir <thijsvermeir@gmail.com> | 2007-09-21 14:55:19 +0000 |
commit | ada7510fd7cbea1ed43523e04121fa1046e81378 (patch) | |
tree | cb37e2c8c43ed542c020a679b9f4c788ad41d8ca /gst/librfb/gstrfbsrc.c | |
parent | ab4038ce2e51ed2eddd3306b77a3e1b560aa5d03 (diff) | |
download | gst-plugins-bad-ada7510fd7cbea1ed43523e04121fa1046e81378.tar.gz gst-plugins-bad-ada7510fd7cbea1ed43523e04121fa1046e81378.tar.bz2 gst-plugins-bad-ada7510fd7cbea1ed43523e04121fa1046e81378.zip |
gst/librfb/: Added offset-x, offset-y, width and height property for selecting a region from the screen
Original commit message from CVS:
* gst/librfb/gstrfbsrc.c:
* gst/librfb/rfbdecoder.c:
* gst/librfb/rfbdecoder.h:
Added offset-x, offset-y, width and height property
for selecting a region from the screen
Diffstat (limited to 'gst/librfb/gstrfbsrc.c')
-rw-r--r-- | gst/librfb/gstrfbsrc.c | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c index a4323815..b207030e 100644 --- a/gst/librfb/gstrfbsrc.c +++ b/gst/librfb/gstrfbsrc.c @@ -38,6 +38,10 @@ enum ARG_PORT, ARG_VERSION, ARG_PASSWORD, + ARG_OFFSET_X, + ARG_OFFSET_Y, + ARG_WIDTH, + ARG_HEIGHT, }; GST_DEBUG_CATEGORY_STATIC (rfbsrc_debug); @@ -122,6 +126,18 @@ gst_rfb_src_class_init (GstRfbSrcClass * klass) g_object_class_install_property (gobject_class, ARG_PASSWORD, g_param_spec_string ("password", "Password for authentication", "Password for authentication", "", G_PARAM_WRITABLE)); + g_object_class_install_property (gobject_class, ARG_OFFSET_X, + g_param_spec_int ("offset-x", "x offset for screen scrapping", + "x offset for screen scrapping", 0, 65535, 0, G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, ARG_OFFSET_Y, + g_param_spec_int ("offset-y", "y offset for screen scrapping", + "y offset for screen scrapping", 0, 65535, 0, G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, ARG_WIDTH, + g_param_spec_int ("width", "width of screen", "width of screen", 0, 65535, + 0, G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, ARG_HEIGHT, + g_param_spec_int ("height", "height of screen", "height of screen", 0, + 65535, 0, G_PARAM_READWRITE)); gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rfb_src_start); gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rfb_src_stop); @@ -222,6 +238,18 @@ gst_rfb_src_set_property (GObject * object, guint prop_id, g_free (src->decoder->password); src->decoder->password = g_strdup (g_value_get_string (value)); break; + case ARG_OFFSET_X: + src->decoder->offset_x = g_value_get_int (value); + break; + case ARG_OFFSET_Y: + src->decoder->offset_y = g_value_get_int (value); + break; + case ARG_WIDTH: + src->decoder->rect_width = g_value_get_int (value); + break; + case ARG_HEIGHT: + src->decoder->rect_height = g_value_get_int (value); + break; default: break; } @@ -246,6 +274,18 @@ gst_rfb_src_get_property (GObject * object, guint prop_id, g_value_set_string (value, version); g_free (version); break; + case ARG_OFFSET_X: + g_value_set_int (value, src->decoder->offset_x); + break; + case ARG_OFFSET_Y: + g_value_set_int (value, src->decoder->offset_y); + break; + case ARG_WIDTH: + g_value_set_int (value, src->decoder->rect_width); + break; + case ARG_HEIGHT: + g_value_set_int (value, src->decoder->rect_height); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -270,7 +310,6 @@ gst_rfb_src_start (GstBaseSrc * bsrc) return FALSE; } - src->decoder = decoder; src->inter = FALSE; while (!decoder->inited) { @@ -322,8 +361,10 @@ gst_rfb_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) gulong newsize; GstFlowReturn ret; - rfb_decoder_send_update_request (decoder, src->inter, 0, 0, - decoder->width, decoder->height); + rfb_decoder_send_update_request (decoder, src->inter, decoder->offset_x, + decoder->offset_y, + (decoder->rect_width ? decoder->rect_width : decoder->width), + (decoder->rect_height ? decoder->rect_height : decoder->height)); // src->inter = TRUE; src->go = TRUE; |