libavdevice/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/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...

Defines

#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 <clemens@endorphin.org>

Edouard Gomez <ed.gomez@free.fr>

Definition in file x11grab.c.


Define Documentation

#define DEC   AV_OPT_FLAG_DECODING_PARAM

Definition at line 587 of file x11grab.c.

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

Definition at line 586 of file x11grab.c.

#define REGION_WIN_BORDER   3

Definition at line 83 of file x11grab.c.

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


Function Documentation

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

Paint a mouse pointer in an X11 image.

Parameters:
image image to paint the mouse pointer to
s context used to retrieve original grabbing rectangle coordinates

Definition at line 338 of file x11grab.c.

Referenced by x11grab_read_packet().

static void x11grab_draw_region_win ( struct x11grab s  )  [static]

Draw grabbing region window.

Parameters:
s x11grab context

Definition at line 90 of file x11grab.c.

Referenced by x11grab_read_packet(), and x11grab_region_win_init().

static int x11grab_read_close ( AVFormatContext s1  )  [static]

Close x11 frame grabber (public device demuxer API).

Parameters:
s1 Context from avformat core
Returns:
0 success, !0 failure

Definition at line 560 of file x11grab.c.

static int x11grab_read_header ( AVFormatContext s1  )  [static]

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

Parameters:
s1 Context from avformat core
Returns:

Definition at line 155 of file x11grab.c.

static int x11grab_read_packet ( AVFormatContext s1,
AVPacket pkt 
) [static]

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

Parameters:
s1 Context from avformat core
pkt Packet holding the brabbed frame
Returns:
frame size in bytes

Definition at line 450 of file x11grab.c.

static void x11grab_region_win_init ( struct x11grab s  )  [static]

Initialize grabbing region window.

Parameters:
s x11grab context

Definition at line 115 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:
dpy X11 display to grab from
d 
image Image where the grab will be put
x Top-Left grabbing rectangle horizontal coordinate
y Top-Left grabbing rectangle vertical coordinate
Returns:
0 if error, !0 if successful

Definition at line 406 of file x11grab.c.

Referenced by x11grab_read_packet().


Variable Documentation

Initial value:

 {
    .name           = "x11grab",
    .long_name      = NULL_IF_CONFIG_SMALL("X11grab"),
    .priv_data_size = sizeof(struct x11grab),
    .read_header    = x11grab_read_header,
    .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 610 of file x11grab.c.

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_STRING,     {.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 588 of file x11grab.c.

const AVClass x11_class [static]

Initial value:

 {
    .class_name = "X11grab indev",
    .item_name  = av_default_item_name,
    .option     = options,
    .version    = LIBAVUTIL_VERSION_INT,
}

Definition at line 602 of file x11grab.c.


Generated on Fri Oct 26 02:50:09 2012 for FFmpeg by  doxygen 1.5.8