FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
x11grab.c File Reference

X11 frame device demuxer. More...

#include "config.h"
#include "libavformat/internal.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "libavutil/time.h"
#include <X11/cursorfont.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xlibint.h>
#include <X11/Xproto.h>
#include <X11/Xutil.h>
#include <sys/shm.h>
#include <X11/extensions/shape.h>
#include <X11/extensions/XShm.h>
#include <X11/extensions/Xfixes.h>
#include "avdevice.h"

Go to the source code of this file.

Data Structures

struct  x11grab
 X11 Device Demuxer context. More...
 

Macros

#define REGION_WIN_BORDER   3
 
#define OFFSET(x)   offsetof(struct x11grab, x)
 
#define DEC   AV_OPT_FLAG_DECODING_PARAM
 

Functions

static void x11grab_draw_region_win (struct x11grab *s)
 Draw grabbing region window.
 
static void x11grab_region_win_init (struct x11grab *s)
 Initialize grabbing region window.
 
static int x11grab_read_header (AVFormatContext *s1)
 Initialize the x11 grab device demuxer (public device demuxer API).
 
static void paint_mouse_pointer (XImage *image, struct x11grab *s)
 Paint a mouse pointer in an X11 image.
 
static int xget_zpixmap (Display *dpy, Drawable d, XImage *image, int x, int y)
 Read new data in the image structure.
 
static int x11grab_read_packet (AVFormatContext *s1, AVPacket *pkt)
 Grab a frame from x11 (public device demuxer API).
 
static int x11grab_read_close (AVFormatContext *s1)
 Close x11 frame grabber (public device demuxer API).
 

Variables

static const AVOption options []
 
static const AVClass x11_class
 
AVInputFormat ff_x11grab_demuxer
 x11 grabber device demuxer declaration
 

Detailed Description

X11 frame device demuxer.

Author
Clemens Fruhwirth cleme.nosp@m.ns@e.nosp@m.ndorp.nosp@m.hin..nosp@m.org
Edouard Gomez ed.go.nosp@m.mez@.nosp@m.free..nosp@m.fr

Definition in file x11grab.c.

Macro Definition Documentation

#define REGION_WIN_BORDER   3

Definition at line 87 of file x11grab.c.

Referenced by x11grab_draw_region_win(), x11grab_read_packet(), and x11grab_region_win_init().

#define OFFSET (   x)    offsetof(struct x11grab, x)

Definition at line 615 of file x11grab.c.

#define DEC   AV_OPT_FLAG_DECODING_PARAM

Definition at line 616 of file x11grab.c.

Function Documentation

static void x11grab_draw_region_win ( struct x11grab s)
static

Draw grabbing region window.

Parameters
sx11grab context

Definition at line 94 of file x11grab.c.

Referenced by x11grab_read_packet(), and x11grab_region_win_init().

static void x11grab_region_win_init ( struct x11grab s)
static

Initialize grabbing region window.

Parameters
sx11grab context

Definition at line 119 of file x11grab.c.

Referenced by x11grab_read_packet().

static int x11grab_read_header ( AVFormatContext s1)
static

Initialize the x11 grab device demuxer (public device demuxer API).

Parameters
s1Context from avformat core
Returns

Definition at line 159 of file x11grab.c.

static void paint_mouse_pointer ( XImage *  image,
struct x11grab s 
)
static

Paint a mouse pointer in an X11 image.

Parameters
imageimage to paint the mouse pointer to
scontext used to retrieve original grabbing rectangle coordinates

Definition at line 349 of file x11grab.c.

Referenced by x11grab_read_packet().

static int xget_zpixmap ( Display *  dpy,
Drawable  d,
XImage *  image,
int  x,
int  y 
)
static

Read new data in the image structure.

Parameters
dpyX11 display to grab from
d
imageImage where the grab will be put
xTop-Left grabbing rectangle horizontal coordinate
yTop-Left grabbing rectangle vertical coordinate
Returns
0 if error, !0 if successful

Definition at line 425 of file x11grab.c.

Referenced by x11grab_read_packet().

static int x11grab_read_packet ( AVFormatContext s1,
AVPacket pkt 
)
static

Grab a frame from x11 (public device demuxer API).

Parameters
s1Context from avformat core
pktPacket holding the brabbed frame
Returns
frame size in bytes

Definition at line 469 of file x11grab.c.

static int x11grab_read_close ( AVFormatContext s1)
static

Close x11 frame grabber (public device demuxer API).

Parameters
s1Context from avformat core
Returns
0 success, !0 failure

Definition at line 589 of file x11grab.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "draw_mouse", "draw the mouse pointer", OFFSET(draw_mouse), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, DEC },
{ "follow_mouse", "move the grabbing region when the mouse pointer reaches within specified amount of pixels to the edge of region",
OFFSET(follow_mouse), AV_OPT_TYPE_INT, {.i64 = 0}, -1, INT_MAX, DEC, "follow_mouse" },
{ "centered", "keep the mouse pointer at the center of grabbing region when following",
0, AV_OPT_TYPE_CONST, {.i64 = -1}, INT_MIN, INT_MAX, DEC, "follow_mouse" },
{ "framerate", "set video frame rate", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, {.str = "ntsc"}, 0, 0, DEC },
{ "show_region", "show the grabbing region", OFFSET(show_region), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC },
{ "video_size", "set video frame size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = "vga"}, 0, 0, DEC },
{ NULL },
}

Definition at line 617 of file x11grab.c.

const AVClass x11_class
static
Initial value:
= {
.class_name = "X11grab indev",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 631 of file x11grab.c.

AVInputFormat ff_x11grab_demuxer
Initial value:
= {
.name = "x11grab",
.long_name = NULL_IF_CONFIG_SMALL("X11grab"),
.priv_data_size = sizeof(struct x11grab),
.read_packet = x11grab_read_packet,
.read_close = x11grab_read_close,
.flags = AVFMT_NOFILE,
.priv_class = &x11_class,
}

x11 grabber device demuxer declaration

Definition at line 639 of file x11grab.c.