diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-05-26 03:00:37 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-05-26 03:28:22 +0200 |
commit | 39e4206dc672a596c742809c1466f8643a787208 (patch) | |
tree | 36b642fc5221090e5bd8d7bc1968a966a5c6c104 /libavdevice/alsa-audio-dec.c | |
parent | 189db9c9829b970b3e28006c9f00d6960f71cff1 (diff) | |
parent | a2ee2843c09a6116b090020eff8213b86ea98bdb (diff) | |
download | ffmpeg-streaming-39e4206dc672a596c742809c1466f8643a787208.zip ffmpeg-streaming-39e4206dc672a596c742809c1466f8643a787208.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master: (32 commits)
doc: create separate section for audio encoders
swscale: Remove orphaned, commented-out function declaration.
swscale: Eliminate rgb24toyv12_c() duplication.
Remove h263_msmpeg4 from MpegEncContext.
APIchanges: Fill in git hash for fps_probe_size (30315a8)
avformat: Add fpsprobesize as an AVOption.
avoptions: Return explicitly NAN or {0,0} if the option isn't found
rtmp: Reindent
rtmp: Don't try to do av_malloc(0)
tty: replace AVFormatParameters.sample_rate abuse with a private option.
Fix end time of last chapter in compute_chapters_end
ffmpeg: get rid of useless AVInputStream.nb_streams.
ffmpeg: simplify managing input files and streams
ffmpeg: purge redundant AVInputStream.index.
lavf: deprecate AVFormatParameters.channel.
libdc1394: add a private option for channel.
dv1394: add a private option for channel.
v4l2: reindent.
v4l2: add a private option for channel.
lavf: deprecate AVFormatParameters.standard.
...
Conflicts:
doc/APIchanges
doc/encoders.texi
ffmpeg.c
libavdevice/alsa-audio.h
libavformat/version.h
libavutil/opt.c
libswscale/rgb2rgb.h
libswscale/rgb2rgb_template.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavdevice/alsa-audio-dec.c')
-rw-r--r-- | libavdevice/alsa-audio-dec.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/libavdevice/alsa-audio-dec.c b/libavdevice/alsa-audio-dec.c index 8ee0e52..24abc7c 100644 --- a/libavdevice/alsa-audio-dec.c +++ b/libavdevice/alsa-audio-dec.c @@ -47,6 +47,7 @@ #include <alsa/asoundlib.h> #include "libavformat/avformat.h" +#include "libavutil/opt.h" #include "alsa-audio.h" @@ -56,21 +57,16 @@ static av_cold int audio_read_header(AVFormatContext *s1, AlsaData *s = s1->priv_data; AVStream *st; int ret; - unsigned int sample_rate; enum CodecID codec_id; snd_pcm_sw_params_t *sw_params; - if (ap->sample_rate <= 0) { - av_log(s1, AV_LOG_ERROR, "Bad sample rate %d\n", ap->sample_rate); +#if FF_API_FORMAT_PARAMETERS + if (ap->sample_rate > 0) + s->sample_rate = ap->sample_rate; - return AVERROR(EIO); - } - - if (ap->channels <= 0) { - av_log(s1, AV_LOG_ERROR, "Bad channels number %d\n", ap->channels); - - return AVERROR(EIO); - } + if (ap->channels > 0) + s->channels = ap->channels; +#endif st = av_new_stream(s1, 0); if (!st) { @@ -78,10 +74,9 @@ static av_cold int audio_read_header(AVFormatContext *s1, return AVERROR(ENOMEM); } - sample_rate = ap->sample_rate; codec_id = s1->audio_codec_id; - ret = ff_alsa_open(s1, SND_PCM_STREAM_CAPTURE, &sample_rate, ap->channels, + ret = ff_alsa_open(s1, SND_PCM_STREAM_CAPTURE, &s->sample_rate, s->channels, &codec_id); if (ret < 0) { return AVERROR(EIO); @@ -113,8 +108,8 @@ static av_cold int audio_read_header(AVFormatContext *s1, /* take real parameters */ st->codec->codec_type = AVMEDIA_TYPE_AUDIO; st->codec->codec_id = codec_id; - st->codec->sample_rate = sample_rate; - st->codec->channels = ap->channels; + st->codec->sample_rate = s->sample_rate; + st->codec->channels = s->channels; av_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */ return 0; @@ -163,6 +158,19 @@ static int audio_read_packet(AVFormatContext *s1, AVPacket *pkt) return 0; } +static const AVOption options[] = { + { "sample_rate", "", offsetof(AlsaData, sample_rate), FF_OPT_TYPE_INT, {.dbl = 48000}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, + { "channels", "", offsetof(AlsaData, channels), FF_OPT_TYPE_INT, {.dbl = 2}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, + { NULL }, +}; + +static const AVClass alsa_demuxer_class = { + .class_name = "ALSA demuxer", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + AVInputFormat ff_alsa_demuxer = { "alsa", NULL_IF_CONFIG_SMALL("ALSA audio input"), @@ -172,4 +180,5 @@ AVInputFormat ff_alsa_demuxer = { audio_read_packet, ff_alsa_close, .flags = AVFMT_NOFILE, + .priv_class = &alsa_demuxer_class, }; |