FFmpeg
Data Structures | Macros | Functions | Variables
pulse_audio_dec.c File Reference
#include <pulse/rtclock.h>
#include <pulse/error.h>
#include "libavutil/internal.h"
#include "libavutil/opt.h"
#include "libavutil/time.h"
#include "libavformat/avformat.h"
#include "libavformat/internal.h"
#include "pulse_audio_common.h"
#include "timefilter.h"

Go to the source code of this file.

Data Structures

struct  PulseData
 

Macros

#define DEFAULT_CODEC_ID   AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE)
 
#define CHECK_SUCCESS_GOTO(rerror, expression, label)
 
#define CHECK_DEAD_GOTO(p, rerror, label)
 
#define OFFSET(a)   offsetof(PulseData, a)
 
#define D   AV_OPT_FLAG_DECODING_PARAM
 

Functions

static void context_state_cb (pa_context *c, void *userdata)
 
static void stream_state_cb (pa_stream *s, void *userdata)
 
static void stream_request_cb (pa_stream *s, size_t length, void *userdata)
 
static void stream_latency_update_cb (pa_stream *s, void *userdata)
 
static av_cold int pulse_close (AVFormatContext *s)
 
static av_cold int pulse_read_header (AVFormatContext *s)
 
static int pulse_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int pulse_get_device_list (AVFormatContext *h, AVDeviceInfoList *device_list)
 

Variables

static const AVOption options []
 
static const AVClass pulse_demuxer_class
 
AVInputFormat ff_pulse_demuxer
 

Macro Definition Documentation

#define DEFAULT_CODEC_ID   AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE)

Definition at line 36 of file pulse_audio_dec.c.

Referenced by pulse_read_header(), and pulse_read_packet().

#define CHECK_SUCCESS_GOTO (   rerror,
  expression,
  label 
)
Value:
do { \
if (!(expression)) { \
rerror = AVERROR_EXTERNAL; \
goto label; \
} \
} while (0)
if(ret)
#define AVERROR_EXTERNAL
Generic error in an external library.
Definition: error.h:57

Definition at line 58 of file pulse_audio_dec.c.

Referenced by pulse_read_packet().

#define CHECK_DEAD_GOTO (   p,
  rerror,
  label 
)
Value:
do { \
if (!(p)->context || !PA_CONTEXT_IS_GOOD(pa_context_get_state((p)->context)) || \
!(p)->stream || !PA_STREAM_IS_GOOD(pa_stream_get_state((p)->stream))) { \
rerror = AVERROR_EXTERNAL; \
goto label; \
} \
} while (0)
if(ret)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your local context
#define AVERROR_EXTERNAL
Generic error in an external library.
Definition: error.h:57

Definition at line 66 of file pulse_audio_dec.c.

Referenced by pulse_read_packet().

#define OFFSET (   a)    offsetof(PulseData, a)

Definition at line 346 of file pulse_audio_dec.c.

Definition at line 347 of file pulse_audio_dec.c.

Function Documentation

static void context_state_cb ( pa_context *  c,
void userdata 
)
static

Definition at line 75 of file pulse_audio_dec.c.

Referenced by pulse_read_header().

static void stream_state_cb ( pa_stream *  s,
void userdata 
)
static

Definition at line 87 of file pulse_audio_dec.c.

Referenced by pulse_read_header().

static void stream_request_cb ( pa_stream *  s,
size_t  length,
void userdata 
)
static

Definition at line 99 of file pulse_audio_dec.c.

Referenced by pulse_read_header().

static void stream_latency_update_cb ( pa_stream *  s,
void userdata 
)
static

Definition at line 105 of file pulse_audio_dec.c.

Referenced by pulse_read_header().

static av_cold int pulse_close ( AVFormatContext s)
static

Definition at line 111 of file pulse_audio_dec.c.

Referenced by pulse_read_header().

static av_cold int pulse_read_header ( AVFormatContext s)
static

Definition at line 138 of file pulse_audio_dec.c.

static int pulse_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 271 of file pulse_audio_dec.c.

static int pulse_get_device_list ( AVFormatContext h,
AVDeviceInfoList device_list 
)
static

Definition at line 340 of file pulse_audio_dec.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "server", "set PulseAudio server", OFFSET(server), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, D },
{ "name", "set application name", OFFSET(name), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, D },
{ "stream_name", "set stream description", OFFSET(stream_name), AV_OPT_TYPE_STRING, {.str = "record"}, 0, 0, D },
{ "sample_rate", "set sample rate in Hz", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = 48000}, 1, INT_MAX, D },
{ "channels", "set number of audio channels", OFFSET(channels), AV_OPT_TYPE_INT, {.i64 = 2}, 1, INT_MAX, D },
{ "frame_size", "set number of bytes per frame", OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = 1024}, 1, INT_MAX, D },
{ "fragment_size", "set buffering size, affects latency and cpu usage", OFFSET(fragment_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, D },
{ "wallclock", "set the initial pts using the current time", OFFSET(wallclock), AV_OPT_TYPE_INT, {.i64 = 1}, -1, 1, D },
{ NULL },
}
#define NULL
Definition: coverity.c:32
#define D
channels
Definition: aptx.c:30
#define LIBAVFORMAT_IDENT
Definition: version.h:46
#define OFFSET(a)
sample_rate
int frame_size
Definition: mxfenc.c:2150
const char * name
Definition: opengl_enc.c:102

Definition at line 349 of file pulse_audio_dec.c.

const AVClass pulse_demuxer_class
static
Initial value:
= {
.class_name = "Pulse indev",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]

Definition at line 361 of file pulse_audio_dec.c.

AVInputFormat ff_pulse_demuxer
Initial value:
= {
.name = "pulse",
.long_name = NULL_IF_CONFIG_SMALL("Pulse audio input"),
.priv_data_size = sizeof(PulseData),
.get_device_list = pulse_get_device_list,
.priv_class = &pulse_demuxer_class,
}
static av_cold int pulse_close(AVFormatContext *s)
static const AVClass pulse_demuxer_class
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:530
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
static av_cold int pulse_read_header(AVFormatContext *s)
#define flags(name, subs,...)
Definition: cbs_av1.c:561
#define AVFMT_NOFILE
Demuxer will use avio_open, no opened file should be provided by the caller.
Definition: avformat.h:463
static int pulse_get_device_list(AVFormatContext *h, AVDeviceInfoList *device_list)
static int pulse_read_packet(AVFormatContext *s, AVPacket *pkt)

Definition at line 369 of file pulse_audio_dec.c.