FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
pulse_audio_enc.c File Reference
#include <math.h>
#include <pulse/pulseaudio.h>
#include <pulse/error.h>
#include "libavformat/avformat.h"
#include "libavformat/internal.h"
#include "libavutil/opt.h"
#include "libavutil/time.h"
#include "libavutil/log.h"
#include "libavutil/attributes.h"
#include "pulse_audio_common.h"

Go to the source code of this file.

Data Structures

struct  PulseData
 

Macros

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

Functions

static void pulse_audio_sink_device_cb (pa_context *ctx, const pa_sink_info *dev, int eol, void *userdata)
 
static int pulse_update_sink_info (AVFormatContext *h)
 
static void pulse_audio_sink_input_cb (pa_context *ctx, const pa_sink_input_info *i, int eol, void *userdata)
 
static int pulse_update_sink_input_info (AVFormatContext *h)
 
static void pulse_event (pa_context *ctx, pa_subscription_event_type_t t, uint32_t idx, void *userdata)
 
static void pulse_stream_writable (pa_stream *stream, size_t nbytes, void *userdata)
 
static void pulse_overflow (pa_stream *stream, void *userdata)
 
static void pulse_underflow (pa_stream *stream, void *userdata)
 
static void pulse_stream_state (pa_stream *stream, void *userdata)
 
static int pulse_stream_wait (PulseData *s)
 
static void pulse_context_state (pa_context *ctx, void *userdata)
 
static int pulse_context_wait (PulseData *s)
 
static void pulse_stream_result (pa_stream *stream, int success, void *userdata)
 
static int pulse_finish_stream_operation (PulseData *s, pa_operation *op, const char *name)
 
static int pulse_set_pause (PulseData *s, int pause)
 
static int pulse_flash_stream (PulseData *s)
 
static void pulse_context_result (pa_context *ctx, int success, void *userdata)
 
static int pulse_finish_context_operation (PulseData *s, pa_operation *op, const char *name)
 
static int pulse_set_mute (PulseData *s)
 
static int pulse_set_volume (PulseData *s, double volume)
 
static int pulse_subscribe_events (PulseData *s)
 
static void pulse_map_channels_to_pulse (int64_t channel_layout, pa_channel_map *channel_map)
 
static av_cold int pulse_write_trailer (AVFormatContext *h)
 
static av_cold int pulse_write_header (AVFormatContext *h)
 
static int pulse_write_packet (AVFormatContext *h, AVPacket *pkt)
 
static int pulse_write_frame (AVFormatContext *h, int stream_index, AVFrame **frame, unsigned flags)
 
static void pulse_get_output_timestamp (AVFormatContext *h, int stream, int64_t *dts, int64_t *wall)
 
static int pulse_get_device_list (AVFormatContext *h, AVDeviceInfoList *device_list)
 
static int pulse_control_message (AVFormatContext *h, int type, void *data, size_t data_size)
 

Variables

static const AVOption options []
 
static const AVClass pulse_muxer_class
 
AVOutputFormat ff_pulse_muxer
 

Macro Definition Documentation

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

Definition at line 759 of file pulse_audio_enc.c.

Definition at line 760 of file pulse_audio_enc.c.

Function Documentation

static void pulse_audio_sink_device_cb ( pa_context *  ctx,
const pa_sink_info *  dev,
int  eol,
void userdata 
)
static

Definition at line 53 of file pulse_audio_enc.c.

Referenced by pulse_update_sink_info().

static int pulse_update_sink_info ( AVFormatContext h)
static

Definition at line 73 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_audio_sink_input_cb ( pa_context *  ctx,
const pa_sink_input_info *  i,
int  eol,
void userdata 
)
static

Definition at line 88 of file pulse_audio_enc.c.

Referenced by pulse_update_sink_input_info().

static int pulse_update_sink_input_info ( AVFormatContext h)
static

Definition at line 116 of file pulse_audio_enc.c.

Referenced by pulse_control_message(), pulse_event(), and pulse_write_header().

static void pulse_event ( pa_context *  ctx,
pa_subscription_event_type_t  t,
uint32_t  idx,
void userdata 
)
static

Definition at line 149 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_stream_writable ( pa_stream *  stream,
size_t  nbytes,
void userdata 
)
static

Definition at line 165 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_overflow ( pa_stream *  stream,
void userdata 
)
static

Definition at line 178 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_underflow ( pa_stream *  stream,
void userdata 
)
static

Definition at line 184 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_stream_state ( pa_stream *  stream,
void userdata 
)
static

Definition at line 190 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static int pulse_stream_wait ( PulseData s)
static

Definition at line 207 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_context_state ( pa_context *  ctx,
void userdata 
)
static

Definition at line 219 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static int pulse_context_wait ( PulseData s)
static

Definition at line 236 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_stream_result ( pa_stream *  stream,
int  success,
void userdata 
)
static

Definition at line 248 of file pulse_audio_enc.c.

Referenced by pulse_flash_stream(), and pulse_set_pause().

static int pulse_finish_stream_operation ( PulseData s,
pa_operation *  op,
const char *  name 
)
static

Definition at line 259 of file pulse_audio_enc.c.

Referenced by pulse_flash_stream(), and pulse_set_pause().

static int pulse_set_pause ( PulseData s,
int  pause 
)
static

Definition at line 276 of file pulse_audio_enc.c.

Referenced by pulse_control_message().

static int pulse_flash_stream ( PulseData s)
static

Definition at line 284 of file pulse_audio_enc.c.

Referenced by pulse_write_packet().

static void pulse_context_result ( pa_context *  ctx,
int  success,
void userdata 
)
static

Definition at line 292 of file pulse_audio_enc.c.

Referenced by pulse_set_mute(), pulse_set_volume(), and pulse_subscribe_events().

static int pulse_finish_context_operation ( PulseData s,
pa_operation *  op,
const char *  name 
)
static

Definition at line 303 of file pulse_audio_enc.c.

Referenced by pulse_set_mute(), pulse_set_volume(), and pulse_subscribe_events().

static int pulse_set_mute ( PulseData s)
static

Definition at line 320 of file pulse_audio_enc.c.

Referenced by pulse_control_message().

static int pulse_set_volume ( PulseData s,
double  volume 
)
static

Definition at line 329 of file pulse_audio_enc.c.

Referenced by pulse_control_message().

static int pulse_subscribe_events ( PulseData s)
static

Definition at line 345 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static void pulse_map_channels_to_pulse ( int64_t  channel_layout,
pa_channel_map *  channel_map 
)
static

Definition at line 354 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static av_cold int pulse_write_trailer ( AVFormatContext h)
static

Definition at line 409 of file pulse_audio_enc.c.

Referenced by pulse_write_header().

static av_cold int pulse_write_header ( AVFormatContext h)
static

Definition at line 440 of file pulse_audio_enc.c.

static int pulse_write_packet ( AVFormatContext h,
AVPacket pkt 
)
static

Definition at line 623 of file pulse_audio_enc.c.

Referenced by pulse_write_frame().

static int pulse_write_frame ( AVFormatContext h,
int  stream_index,
AVFrame **  frame,
unsigned  flags 
)
static

Definition at line 673 of file pulse_audio_enc.c.

static void pulse_get_output_timestamp ( AVFormatContext h,
int  stream,
int64_t *  dts,
int64_t *  wall 
)
static

Definition at line 691 of file pulse_audio_enc.c.

static int pulse_get_device_list ( AVFormatContext h,
AVDeviceInfoList device_list 
)
static

Definition at line 705 of file pulse_audio_enc.c.

static int pulse_control_message ( AVFormatContext h,
int  type,
void data,
size_t  data_size 
)
static

Definition at line 711 of file pulse_audio_enc.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "server", "set PulseAudio server", OFFSET(server), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E },
{ "name", "set application name", OFFSET(name), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, E },
{ "stream_name", "set stream description", OFFSET(stream_name), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E },
{ "device", "set device name", OFFSET(device), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E },
{ "buffer_size", "set buffer size in bytes", OFFSET(buffer_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E },
{ "buffer_duration", "set buffer duration in millisecs", OFFSET(buffer_duration), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E },
{ "prebuf", "set pre-buffering size", OFFSET(prebuf), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E },
{ "minreq", "set minimum request size", OFFSET(minreq), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E },
{ NULL }
}

Definition at line 761 of file pulse_audio_enc.c.

const AVClass pulse_muxer_class
static
Initial value:
= {
.class_name = "PulseAudio muxer",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 773 of file pulse_audio_enc.c.

AVOutputFormat ff_pulse_muxer
Initial value:
= {
.name = "pulse",
.long_name = NULL_IF_CONFIG_SMALL("Pulse audio output"),
.priv_data_size = sizeof(PulseData),
.video_codec = AV_CODEC_ID_NONE,
.write_header = pulse_write_header,
.write_packet = pulse_write_packet,
.write_uncoded_frame = pulse_write_frame,
.write_trailer = pulse_write_trailer,
.get_output_timestamp = pulse_get_output_timestamp,
.get_device_list = pulse_get_device_list,
.control_message = pulse_control_message,
.priv_class = &pulse_muxer_class,
}

Definition at line 781 of file pulse_audio_enc.c.