FFmpeg
Loading...
Searching...
No Matches
alsa_enc.c File Reference

ALSA input and output: output. More...

#include <alsa/asoundlib.h>
#include "libavutil/frame.h"
#include "libavutil/internal.h"
#include "libavutil/time.h"
#include "libavformat/internal.h"
#include "libavformat/mux.h"
#include "avdevice.h"
#include "alsa.h"

Go to the source code of this file.

Functions

static av_cold int audio_write_header (AVFormatContext *s1)
 
static int audio_write_packet (AVFormatContext *s1, AVPacket *pkt)
 
static int audio_write_frame (AVFormatContext *s1, int stream_index, AVFrame **frame, unsigned flags)
 
static void audio_get_output_timestamp (AVFormatContext *s1, int stream, int64_t *dts, int64_t *wall)
 
static int audio_get_device_list (AVFormatContext *h, AVDeviceInfoList *device_list)
 

Variables

static const AVClass alsa_muxer_class
 
const FFOutputFormat ff_alsa_muxer
 

Detailed Description

ALSA input and output: output.

Author
Luca Abeni ( lucabe72 email it )
Benoit Fouet ( benoit fouet free fr )

This avdevice encoder can play audio to an ALSA (Advanced Linux Sound Architecture) device.

The filename parameter is the name of an ALSA PCM device capable of capture, for example "default" or "plughw:1"; see the ALSA documentation for naming conventions. The empty string is equivalent to "default".

The playback period is set to the lower value available for the device, which gives a low latency suitable for real-time playback.

Definition in file alsa_enc.c.

Function Documentation

◆ audio_write_header()

static av_cold int audio_write_header ( AVFormatContext * s1)
static

Definition at line 52 of file alsa_enc.c.

◆ audio_write_packet()

static int audio_write_packet ( AVFormatContext * s1,
AVPacket * pkt )
static

Definition at line 85 of file alsa_enc.c.

Referenced by audio_write_frame().

◆ audio_write_frame()

static int audio_write_frame ( AVFormatContext * s1,
int stream_index,
AVFrame ** frame,
unsigned flags )
static

Definition at line 121 of file alsa_enc.c.

◆ audio_get_output_timestamp()

static void audio_get_output_timestamp ( AVFormatContext * s1,
int stream,
int64_t * dts,
int64_t * wall )
static

Definition at line 140 of file alsa_enc.c.

◆ audio_get_device_list()

static int audio_get_device_list ( AVFormatContext * h,
AVDeviceInfoList * device_list )
static

Definition at line 150 of file alsa_enc.c.

Variable Documentation

◆ alsa_muxer_class

const AVClass alsa_muxer_class
static
Initial value:
= {
.class_name = "ALSA outdev",
.item_name = av_default_item_name,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85
@ AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT
Definition log.h:43

Definition at line 155 of file alsa_enc.c.

◆ ff_alsa_muxer

const FFOutputFormat ff_alsa_muxer
Initial value:
= {
.p.name = "alsa",
.p.long_name = NULL_IF_CONFIG_SMALL("ALSA audio output"),
.priv_data_size = sizeof(AlsaData),
.p.audio_codec = DEFAULT_CODEC_ID,
.p.video_codec = AV_CODEC_ID_NONE,
.write_header = audio_write_header,
.write_packet = audio_write_packet,
.write_trailer = ff_alsa_close,
.write_uncoded_frame = audio_write_frame,
.get_device_list = audio_get_device_list,
.get_output_timestamp = audio_get_output_timestamp,
.p.flags = AVFMT_NOFILE,
.p.priv_class = &alsa_muxer_class,
}
av_cold int ff_alsa_close(AVFormatContext *s1)
Close the ALSA PCM.
Definition alsa.c:421
#define DEFAULT_CODEC_ID
Definition alsa.h:43
static int audio_get_device_list(AVFormatContext *h, AVDeviceInfoList *device_list)
Definition alsa_dec.c:146
static av_cold int audio_write_header(AVFormatContext *s1)
Definition alsa_enc.c:52
static void audio_get_output_timestamp(AVFormatContext *s1, int stream, int64_t *dts, int64_t *wall)
Definition alsa_enc.c:140
static const AVClass alsa_muxer_class
Definition alsa_enc.c:155
static int audio_write_packet(AVFormatContext *s1, AVPacket *pkt)
Definition alsa_enc.c:85
static int audio_write_frame(AVFormatContext *s1, int stream_index, AVFrame **frame, unsigned flags)
Definition alsa_enc.c:121
#define AVFMT_NOFILE
Demuxer will use avio_open, no opened file should be provided by the caller.
Definition avformat.h:488
@ AV_CODEC_ID_NONE
Definition codec_id.h:48
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88

Definition at line 162 of file alsa_enc.c.