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 <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  x11_grab
 X11 Device Demuxer context. More...

Defines

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

Functions

static void x11grab_draw_region_win (struct x11_grab *s)
 Draw grabbing region window.
static void x11grab_region_win_init (struct x11_grab *s)
 Initialize grabbing region window.
static int x11grab_read_header (AVFormatContext *s1, AVFormatParameters *ap)
 Initialize the x11 grab device demuxer (public device demuxer API).
static void paint_mouse_pointer (XImage *image, struct x11_grab *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_x11_grab_device_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 586 of file x11grab.c.

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

Definition at line 585 of file x11grab.c.

#define REGION_WIN_BORDER   3

Definition at line 84 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 x11_grab 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 335 of file x11grab.c.

Referenced by x11grab_read_packet().

static void x11grab_draw_region_win ( struct x11_grab s  )  [static]

Draw grabbing region window.

Parameters:
s x11_grab context

Definition at line 91 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 559 of file x11grab.c.

static int x11grab_read_header ( AVFormatContext s1,
AVFormatParameters ap 
) [static]

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

Parameters:
s1 Context from avformat core
ap Parameters from avformat core
Returns:

Definition at line 157 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 447 of file x11grab.c.

static void x11grab_region_win_init ( struct x11_grab s  )  [static]

Initialize grabbing region window.

Parameters:
s x11_grab context

Definition at line 116 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 403 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 x11_grab),
    .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 606 of file x11grab.c.

const AVOption options[] [static]

Initial value:

 {
    { "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, { 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, { 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, { -1 }, INT_MIN, INT_MAX, DEC, "follow_mouse" },
    { "show_region", "Show the grabbing region.", OFFSET(show_region), AV_OPT_TYPE_INT, { 0 }, 0, 1, DEC },
    { NULL },
}

Definition at line 587 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 598 of file x11grab.c.


Generated on Fri Oct 26 02:46:11 2012 for FFmpeg by  doxygen 1.5.8