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 int last_period;
00056 TimeFilter *timefilter;
00057 void (*reorder_func)(const void *, void *, int);
00058 void *reorder_buf;
00059 int reorder_buf_size;
00060 } AlsaData;
00061
00076 int ff_alsa_open(AVFormatContext *s, snd_pcm_stream_t mode,
00077 unsigned int *sample_rate,
00078 int channels, enum CodecID *codec_id);
00079
00087 int ff_alsa_close(AVFormatContext *s1);
00088
00097 int ff_alsa_xrun_recover(AVFormatContext *s1, int err);
00098
00099 int ff_alsa_extend_reorder_buf(AlsaData *s, int size);
00100
00101 #endif