From b31328d008985f87f0a7c83c700847cef1a4f08c Mon Sep 17 00:00:00 2001
From: Luca Barbato <lu_zero@gentoo.org>
Date: Sun, 22 Feb 2015 20:36:08 +0100
Subject: [PATCH] xcbgrab: Provide better names for the y and x option

Incidentally `-y` also collides with avconv global options.

Update x11grab to match and document the option.

CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
---
 doc/indevs.texi       | 10 ++++++++++
 libavdevice/x11grab.c |  2 ++
 libavdevice/xcbgrab.c |  2 ++
 3 files changed, 14 insertions(+)

diff --git a/doc/indevs.texi b/doc/indevs.texi
index 8ff64a78ed2..e514b63af2d 100644
--- a/doc/indevs.texi
+++ b/doc/indevs.texi
@@ -359,4 +359,14 @@ avconv -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
 avconv -f x11grab -follow_mouse centered -show_region 1  -r 25 -s cif -i :0.0 out.mpg
 @end example
 
+@subsection @var{grab_x} @var{grab_y} AVOption
+
+The syntax is:
+@example
+-grab_x @var{x_offset} -grab_y @var{y_offset}
+@end example
+
+Set the grabing region coordinates. The are expressed as offset from the top left
+corner of the X11 window. The default value is 0.
+
 @c man end INPUT DEVICES
diff --git a/libavdevice/x11grab.c b/libavdevice/x11grab.c
index 3aa42940595..bb5d09db645 100644
--- a/libavdevice/x11grab.c
+++ b/libavdevice/x11grab.c
@@ -614,6 +614,8 @@ static int x11grab_read_close(AVFormatContext *s1)
 #define OFFSET(x) offsetof(X11GrabContext, x)
 #define DEC AV_OPT_FLAG_DECODING_PARAM
 static const AVOption options[] = {
+    { "grab_x", "Initial x coordinate.", OFFSET(x_off), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
+    { "grab_y", "Initial y coordinate.", OFFSET(y_off), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
     { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size), AV_OPT_TYPE_STRING, {.str = "vga"}, 0, 0, DEC },
     { "framerate", "", OFFSET(framerate), AV_OPT_TYPE_STRING, {.str = "ntsc"}, 0, 0, DEC },
     { "draw_mouse", "Draw the mouse pointer.", OFFSET(draw_mouse), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, DEC },
diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c
index 57450f24a83..a29cd9b921c 100644
--- a/libavdevice/xcbgrab.c
+++ b/libavdevice/xcbgrab.c
@@ -77,6 +77,8 @@ typedef struct XCBGrabContext {
 static const AVOption options[] = {
     { "x", "Initial x coordinate.", OFFSET(x), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
     { "y", "Initial y coordinate.", OFFSET(y), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
+    { "grab_x", "Initial x coordinate.", OFFSET(x), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
+    { "grab_y", "Initial y coordinate.", OFFSET(y), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, D },
     { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size), AV_OPT_TYPE_STRING, {.str = "vga" }, 0, 0, D },
     { "framerate", "", OFFSET(framerate), AV_OPT_TYPE_STRING, {.str = "ntsc" }, 0, 0, D },
     { "draw_mouse", "Draw the mouse pointer.", OFFSET(draw_mouse), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, D },
-- 
GitLab