Video4Linux2 grab interface. More...
#include "config.h"
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <asm/types.h>
#include <linux/videodev2.h>
#include <time.h>
#include <strings.h>
#include "libavutil/imgutils.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "avdevice.h"
#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
Go to the source code of this file.
Video4Linux2 grab interface.
Part of this file is based on the V4L2 video capture example (http://v4l2spec.bytesex.org/v4l2spec/capture.c)
Thanks to Michael Niedermayer for providing the mapping between V4L2_PIX_FMT_* and PIX_FMT_*
Definition in file v4l2.c.
#define OFFSET | ( | x | ) | offsetof(struct video_data, x) |
static int device_init | ( | AVFormatContext * | ctx, | |
int * | width, | |||
int * | height, | |||
uint32_t | pix_fmt | |||
) | [static] |
Definition at line 153 of file v4l2.c.
Referenced by device_try_init().
static int device_open | ( | AVFormatContext * | ctx, | |
uint32_t * | capabilities | |||
) | [static] |
Definition at line 112 of file v4l2.c.
Referenced by v4l2_read_header().
static uint32_t device_try_init | ( | AVFormatContext * | s1, | |
enum PixelFormat | pix_fmt, | |||
int * | width, | |||
int * | height, | |||
enum CodecID * | codec_id | |||
) | [static] |
Definition at line 535 of file v4l2.c.
Referenced by v4l2_read_header().
static int first_field | ( | int | fd | ) | [static] |
Definition at line 180 of file v4l2.c.
Referenced by dnxhd_decode_frame(), dnxhd_encode_picture(), and v4l2_read_header().
static uint32_t fmt_ff2v4l | ( | enum PixelFormat | pix_fmt, | |
enum CodecID | codec_id | |||
) | [static] |
Definition at line 196 of file v4l2.c.
Referenced by device_try_init().
static enum CodecID fmt_v4l2codec | ( | uint32_t | v4l2_fmt | ) | [static] |
Definition at line 226 of file v4l2.c.
Referenced by device_try_init().
static enum PixelFormat fmt_v4l2ff | ( | uint32_t | v4l2_fmt, | |
enum CodecID | codec_id | |||
) | [static] |
Definition at line 212 of file v4l2.c.
Referenced by v4l2_read_header().
static void mmap_close | ( | struct video_data * | s | ) | [static] |
Definition at line 417 of file v4l2.c.
Referenced by v4l2_read_close().
static int mmap_init | ( | AVFormatContext * | ctx | ) | [static] |
Definition at line 239 of file v4l2.c.
Referenced by v4l2_read_header().
static int mmap_read_frame | ( | AVFormatContext * | ctx, | |
AVPacket * | pkt | |||
) | [static] |
Definition at line 333 of file v4l2.c.
Referenced by v4l2_read_packet().
static int mmap_start | ( | AVFormatContext * | ctx | ) | [static] |
Definition at line 387 of file v4l2.c.
Referenced by v4l2_read_header().
static int read_frame | ( | AVFormatContext * | ctx, | |
AVPacket * | pkt | |||
) | [static] |
Definition at line 382 of file v4l2.c.
Referenced by v4l2_read_packet().
static int read_init | ( | AVFormatContext * | ctx | ) | [static] |
Definition at line 304 of file v4l2.c.
Referenced by v4l2_read_header().
static int v4l2_read_close | ( | AVFormatContext * | s1 | ) | [static] |
static int v4l2_read_header | ( | AVFormatContext * | s1, | |
AVFormatParameters * | ap | |||
) | [static] |
static int v4l2_read_packet | ( | AVFormatContext * | s1, | |
AVPacket * | pkt | |||
) | [static] |
static int v4l2_set_parameters | ( | AVFormatContext * | s1, | |
AVFormatParameters * | ap | |||
) | [static] |
Definition at line 434 of file v4l2.c.
Referenced by v4l2_read_header().
const int desired_video_buffers = 256 [static] |
Definition at line 55 of file v4l2.c.
Referenced by mmap_init().
{ "video4linux2", NULL_IF_CONFIG_SMALL("Video4Linux2 device grab"), sizeof(struct video_data), NULL, v4l2_read_header, v4l2_read_packet, v4l2_read_close, .flags = AVFMT_NOFILE, .priv_class = &v4l2_class, }
struct fmt_map fmt_conversion_table[] [static] |
{ { PIX_FMT_YUV420P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV420 }, { PIX_FMT_YUV422P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV422P }, { PIX_FMT_YUYV422, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUYV }, { PIX_FMT_UYVY422, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_UYVY }, { PIX_FMT_YUV411P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV411P }, { PIX_FMT_YUV410P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV410 }, { PIX_FMT_RGB555, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB555 }, { PIX_FMT_RGB565, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB565 }, { PIX_FMT_BGR24, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR24 }, { PIX_FMT_RGB24, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB24 }, { PIX_FMT_BGRA, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR32 }, { PIX_FMT_GRAY8, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_GREY }, { PIX_FMT_NV12, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_NV12 }, { PIX_FMT_NONE, CODEC_ID_MJPEG, V4L2_PIX_FMT_MJPEG }, { PIX_FMT_NONE, CODEC_ID_MJPEG, V4L2_PIX_FMT_JPEG }, }
{ { "standard", "", OFFSET(standard), FF_OPT_TYPE_STRING, {.str = NULL }, 0, 0, AV_OPT_FLAG_DECODING_PARAM }, { "channel", "", OFFSET(channel), FF_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size), FF_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { "pixel_format", "", OFFSET(pixel_format), FF_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { "framerate", "", OFFSET(framerate), FF_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { NULL }, }
const AVClass v4l2_class [static] |
{ .class_name = "V4L2 indev", .item_name = av_default_item_name, .option = options, .version = LIBAVUTIL_VERSION_INT, }