libavdevice/dshow.c File Reference

#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "libavutil/opt.h"
#include "libavformat/internal.h"
#include "avdevice.h"
#include "dshow_capture.h"

Go to the source code of this file.

Data Structures

struct  dshow_ctx

Defines

#define OFFSET(x)   offsetof(struct dshow_ctx, x)
#define DEC   AV_OPT_FLAG_DECODING_PARAM

Functions

static enum PixelFormat dshow_pixfmt (DWORD biCompression, WORD biBitCount)
static enum AVCodecID dshow_codecid (DWORD biCompression)
static int dshow_read_close (AVFormatContext *s)
static char * dup_wchar_to_utf8 (wchar_t *w)
static int shall_we_drop (AVFormatContext *s)
static void callback (void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time)
static int dshow_cycle_devices (AVFormatContext *avctx, ICreateDevEnum *devenum, enum dshowDeviceType devtype, IBaseFilter **pfilter)
 Cycle through available devices using the device enumerator devenum, retrieve the device with type specified by devtype and return the pointer to the object found in *pfilter.
static void dshow_cycle_formats (AVFormatContext *avctx, enum dshowDeviceType devtype, IPin *pin, int *pformat_set)
 Cycle through available formats using the specified pin, try to set parameters specified through AVOptions and if successful return 1 in *pformat_set.
static int dshow_set_audio_buffer_size (AVFormatContext *avctx, IPin *pin)
 Set audio device buffer size in milliseconds (which can directly impact latency, depending on the device).
static int dshow_cycle_pins (AVFormatContext *avctx, enum dshowDeviceType devtype, IBaseFilter *device_filter, IPin **ppin)
 Cycle through available pins using the device_filter device, of type devtype, retrieve the first output pin and return the pointer to the object found in *ppin.
static int dshow_list_device_options (AVFormatContext *avctx, ICreateDevEnum *devenum, enum dshowDeviceType devtype)
 List options for device with type devtype.
static int dshow_open_device (AVFormatContext *avctx, ICreateDevEnum *devenum, enum dshowDeviceType devtype)
static enum AVCodecID waveform_codec_id (enum AVSampleFormat sample_fmt)
static enum AVSampleFormat sample_fmt_bits_per_sample (int bits)
static int dshow_add_device (AVFormatContext *avctx, enum dshowDeviceType devtype)
static int parse_device_name (AVFormatContext *avctx)
static int dshow_read_header (AVFormatContext *avctx)
static int dshow_read_packet (AVFormatContext *s, AVPacket *pkt)

Variables

static const AVOption options []
static const AVClass dshow_class
AVInputFormat ff_dshow_demuxer


Define Documentation

#define DEC   AV_OPT_FLAG_DECODING_PARAM

Definition at line 1018 of file dshow.c.

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

Definition at line 1017 of file dshow.c.


Function Documentation

static void callback ( void *  priv_data,
int  index,
uint8_t buf,
int  buf_size,
int64_t  time 
) [static]

Definition at line 205 of file dshow.c.

Referenced by av_log_set_callback(), dshow_open_device(), and libspeex_decode_init().

static int dshow_add_device ( AVFormatContext avctx,
enum dshowDeviceType  devtype 
) [static]

Definition at line 738 of file dshow.c.

Referenced by dshow_read_header().

static enum AVCodecID dshow_codecid ( DWORD  biCompression  )  [static]

Definition at line 98 of file dshow.c.

Referenced by dshow_add_device(), and dshow_cycle_formats().

static int dshow_cycle_devices ( AVFormatContext avctx,
ICreateDevEnum *  devenum,
enum dshowDeviceType  devtype,
IBaseFilter **  pfilter 
) [static]

Cycle through available devices using the device enumerator devenum, retrieve the device with type specified by devtype and return the pointer to the object found in *pfilter.

If pfilter is NULL, list all device names.

Definition at line 252 of file dshow.c.

Referenced by dshow_list_device_options(), dshow_open_device(), and dshow_read_header().

static void dshow_cycle_formats ( AVFormatContext avctx,
enum dshowDeviceType  devtype,
IPin *  pin,
int pformat_set 
) [static]

Cycle through available formats using the specified pin, try to set parameters specified through AVOptions and if successful return 1 in *pformat_set.

If pformat_set is NULL, list all pin capabilities.

Definition at line 331 of file dshow.c.

Referenced by dshow_cycle_pins().

static int dshow_cycle_pins ( AVFormatContext avctx,
enum dshowDeviceType  devtype,
IBaseFilter *  device_filter,
IPin **  ppin 
) [static]

Cycle through available pins using the device_filter device, of type devtype, retrieve the first output pin and return the pointer to the object found in *ppin.

If ppin is NULL, cycle through all pins listing audio/video capabilities.

Definition at line 524 of file dshow.c.

Referenced by dshow_list_device_options(), and dshow_open_device().

static int dshow_list_device_options ( AVFormatContext avctx,
ICreateDevEnum *  devenum,
enum dshowDeviceType  devtype 
) [static]

List options for device with type devtype.

Parameters:
devenum device enumerator used for accessing the device

Definition at line 637 of file dshow.c.

Referenced by dshow_read_header().

static int dshow_open_device ( AVFormatContext avctx,
ICreateDevEnum *  devenum,
enum dshowDeviceType  devtype 
) [static]

Definition at line 654 of file dshow.c.

Referenced by dshow_read_header().

static enum PixelFormat dshow_pixfmt ( DWORD  biCompression,
WORD  biBitCount 
) [static]

Definition at line 69 of file dshow.c.

Referenced by dshow_add_device(), and dshow_cycle_formats().

static int dshow_read_close ( AVFormatContext s  )  [static]

Definition at line 111 of file dshow.c.

Referenced by dshow_add_device(), and dshow_read_header().

static int dshow_read_header ( AVFormatContext avctx  )  [static]

Definition at line 865 of file dshow.c.

static int dshow_read_packet ( AVFormatContext s,
AVPacket pkt 
) [static]

Definition at line 989 of file dshow.c.

static int dshow_set_audio_buffer_size ( AVFormatContext avctx,
IPin *  pin 
) [static]

Set audio device buffer size in milliseconds (which can directly impact latency, depending on the device).

Definition at line 477 of file dshow.c.

Referenced by dshow_cycle_pins().

static char* dup_wchar_to_utf8 ( wchar_t *  w  )  [static]

Definition at line 178 of file dshow.c.

Referenced by dshow_cycle_pins().

static int parse_device_name ( AVFormatContext avctx  )  [static]

Definition at line 828 of file dshow.c.

Referenced by dshow_read_header().

static enum AVSampleFormat sample_fmt_bits_per_sample ( int  bits  )  [static]

Definition at line 727 of file dshow.c.

Referenced by dshow_add_device().

static int shall_we_drop ( AVFormatContext s  )  [static]

Definition at line 188 of file dshow.c.

Referenced by callback(), and videostream_cb().

static enum AVCodecID waveform_codec_id ( enum AVSampleFormat  sample_fmt  )  [static]

Definition at line 717 of file dshow.c.

Referenced by dshow_add_device().


Variable Documentation

const AVClass dshow_class [static]

Initial value:

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

Definition at line 1038 of file dshow.c.

Initial value:

 {
    .name           = "dshow",
    .long_name      = NULL_IF_CONFIG_SMALL("DirectShow capture"),
    .priv_data_size = sizeof(struct dshow_ctx),
    .read_header    = dshow_read_header,
    .read_packet    = dshow_read_packet,
    .read_close     = dshow_read_close,
    .flags          = AVFMT_NOFILE,
    .priv_class     = &dshow_class,
}

Definition at line 1045 of file dshow.c.

const AVOption options[] [static]

Initial value:

 {
    { "video_size", "set video size given a string such as 640x480 or hd720.", OFFSET(requested_width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC },
    { "pixel_format", "set video pixel format", OFFSET(pixel_format), AV_OPT_TYPE_PIXEL_FMT, {.str = NULL}, 0, 0, DEC },
    { "framerate", "set video frame rate", OFFSET(framerate), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
    { "sample_rate", "set audio sample rate", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
    { "sample_size", "set audio sample size", OFFSET(sample_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 16, DEC },
    { "channels", "set number of audio channels, such as 1 or 2", OFFSET(channels), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
    { "list_devices", "list available devices", OFFSET(list_devices), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, DEC, "list_devices" },
    { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "list_devices" },
    { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "list_devices" },
    { "list_options", "list available options for specified device", OFFSET(list_options), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, DEC, "list_options" },
    { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "list_options" },
    { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "list_options" },
    { "video_device_number", "set video device number for devices with same name (starts at 0)", OFFSET(video_device_number), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
    { "audio_device_number", "set audio device number for devices with same name (starts at 0)", OFFSET(audio_device_number), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
    { "audio_buffer_size", "set audio device buffer latency size in milliseconds (default is the device's default)", OFFSET(audio_buffer_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
    { NULL },
}

Definition at line 1019 of file dshow.c.


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