00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00030 #ifndef AVDEVICE_ALSA_AUDIO_H
00031 #define AVDEVICE_ALSA_AUDIO_H
00032
00033 #include <alsa/asoundlib.h>
00034 #include "config.h"
00035 #include "libavutil/log.h"
00036 #include "timefilter.h"
00037 #include "avdevice.h"
00038
00039
00040
00041
00042 #define DEFAULT_CODEC_ID AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE)
00043
00044 typedef void (*ff_reorder_func)(const void *, void *, int);
00045
00046 #define ALSA_BUFFER_SIZE_MAX 65536
00047
00048 typedef struct {
00049 AVClass *class;
00050 snd_pcm_t *h;
00051 int frame_size;
00052 int period_size;
00053 int sample_rate;
00054 int channels;
00055 TimeFilter *timefilter;
00056 void (*reorder_func)(const void *, void *, int);
00057 void *reorder_buf;
00058 int reorder_buf_size;
00059 } AlsaData;
00060
00075 int ff_alsa_open(AVFormatContext *s, snd_pcm_stream_t mode,
00076 unsigned int *sample_rate,
00077 int channels, enum CodecID *codec_id);
00078
00086 int ff_alsa_close(AVFormatContext *s1);
00087
00096 int ff_alsa_xrun_recover(AVFormatContext *s1, int err);
00097
00098 int ff_alsa_extend_reorder_buf(AlsaData *s, int size);
00099
00100 #endif