#include <alsa/asoundlib.h>
#include "avdevice.h"
#include "libavutil/avassert.h"
#include "libavutil/audioconvert.h"
#include "alsa-audio.h"
Go to the source code of this file.
Defines | |
#define | REORDER_OUT_50(NAME, TYPE) |
#define | REORDER_OUT_51(NAME, TYPE) |
#define | REORDER_OUT_71(NAME, TYPE) |
#define | FORMAT_I8 0 |
#define | FORMAT_I16 1 |
#define | FORMAT_I32 2 |
#define | FORMAT_F32 3 |
#define | PICK_REORDER(layout) |
Functions | |
static av_cold snd_pcm_format_t | codec_id_to_pcm_format (int codec_id) |
static av_cold int | find_reorder_func (AlsaData *s, int codec_id, uint64_t layout, int out) |
av_cold int | ff_alsa_open (AVFormatContext *ctx, snd_pcm_stream_t mode, unsigned int *sample_rate, int channels, enum AVCodecID *codec_id) |
Open an ALSA PCM. | |
av_cold int | ff_alsa_close (AVFormatContext *s1) |
Close the ALSA PCM. | |
int | ff_alsa_xrun_recover (AVFormatContext *s1, int err) |
Try to recover from ALSA buffer underrun. | |
int | ff_alsa_extend_reorder_buf (AlsaData *s, int min_size) |
Definition in file alsa-audio-common.c.
#define FORMAT_F32 3 |
#define FORMAT_I16 1 |
#define FORMAT_I32 2 |
#define FORMAT_I8 0 |
#define PICK_REORDER | ( | layout | ) |
Value:
switch(format) {\ case FORMAT_I8: s->reorder_func = alsa_reorder_int8_out_ ##layout; break;\ case FORMAT_I16: s->reorder_func = alsa_reorder_int16_out_ ##layout; break;\ case FORMAT_I32: s->reorder_func = alsa_reorder_int32_out_ ##layout; break;\ case FORMAT_F32: s->reorder_func = alsa_reorder_f32_out_ ##layout; break;\ }
Definition at line 138 of file alsa-audio-common.c.
Referenced by find_reorder_func().
#define REORDER_OUT_50 | ( | NAME, | |||
TYPE | ) |
Value:
static void alsa_reorder_ ## NAME ## _out_50(const void *in_v, void *out_v, int n) \ { \ const TYPE *in = in_v; \ TYPE *out = out_v; \ \ while (n-- > 0) { \ out[0] = in[0]; \ out[1] = in[1]; \ out[2] = in[3]; \ out[3] = in[4]; \ out[4] = in[2]; \ in += 5; \ out += 5; \ } \ }
Definition at line 65 of file alsa-audio-common.c.
#define REORDER_OUT_51 | ( | NAME, | |||
TYPE | ) |
Value:
static void alsa_reorder_ ## NAME ## _out_51(const void *in_v, void *out_v, int n) \ { \ const TYPE *in = in_v; \ TYPE *out = out_v; \ \ while (n-- > 0) { \ out[0] = in[0]; \ out[1] = in[1]; \ out[2] = in[4]; \ out[3] = in[5]; \ out[4] = in[2]; \ out[5] = in[3]; \ in += 6; \ out += 6; \ } \ }
Definition at line 82 of file alsa-audio-common.c.
#define REORDER_OUT_71 | ( | NAME, | |||
TYPE | ) |
Value:
static void alsa_reorder_ ## NAME ## _out_71(const void *in_v, void *out_v, int n) \ { \ const TYPE *in = in_v; \ TYPE *out = out_v; \ \ while (n-- > 0) { \ out[0] = in[0]; \ out[1] = in[1]; \ out[2] = in[4]; \ out[3] = in[5]; \ out[4] = in[2]; \ out[5] = in[3]; \ out[6] = in[6]; \ out[7] = in[7]; \ in += 8; \ out += 8; \ } \ }
Definition at line 100 of file alsa-audio-common.c.
static av_cold snd_pcm_format_t codec_id_to_pcm_format | ( | int | codec_id | ) | [static] |
av_cold int ff_alsa_close | ( | AVFormatContext * | s1 | ) |
Close the ALSA PCM.
s1 | media file handle |
Definition at line 318 of file alsa-audio-common.c.
av_cold int ff_alsa_open | ( | AVFormatContext * | s, | |
snd_pcm_stream_t | mode, | |||
unsigned int * | sample_rate, | |||
int | channels, | |||
enum AVCodecID * | codec_id | |||
) |
Open an ALSA PCM.
s | media file handle | |
mode | either SND_PCM_STREAM_CAPTURE or SND_PCM_STREAM_PLAYBACK | |
sample_rate | in: requested sample rate; out: actually selected sample rate | |
channels | number of channels | |
codec_id | in: requested AVCodecID or AV_CODEC_ID_NONE; out: actually selected AVCodecID, changed only if AV_CODEC_ID_NONE was requested |
Definition at line 186 of file alsa-audio-common.c.
Referenced by audio_read_header(), and audio_write_header().
int ff_alsa_xrun_recover | ( | AVFormatContext * | s1, | |
int | err | |||
) |
Try to recover from ALSA buffer underrun.
s1 | media file handle | |
err | error code reported by the previous ALSA call |
Definition at line 329 of file alsa-audio-common.c.
Referenced by audio_read_packet(), and audio_write_packet().