diff options
author | Matthias Hunstock <atze@fem.tu-ilmenau.de> | 2015-12-20 11:57:32 +0000 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2016-02-03 00:34:26 +0100 |
commit | e9025573faf69416fcc29a689447e3296c3eaf58 (patch) | |
tree | d2eb65fafb2272a3ee8f244eb2e50e10697f695c /libavdevice/decklink_dec.cpp | |
parent | 5fc310f7ca2a5c76da8daadb38f2a4698bfb90b8 (diff) | |
download | ffmpeg-e9025573faf69416fcc29a689447e3296c3eaf58.tar.gz |
decklink: support all valid numbers of audio channels
As it is already written in the documentation, BMD DeckLink cards
are capable of capturing 2, 8 or 16 audio channels (for SDI Inputs).
Currently the value is hardcoded to 2. Introduces new option.
Reviewed-by: Deti Fliegl <deti@fliegl.de>
Signed-off-by: Matthias Hunstock <atze@fem.tu-ilmenau.de>
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavdevice/decklink_dec.cpp')
-rw-r--r-- | libavdevice/decklink_dec.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp index 9a721c9ffa..9d7dc97fd5 100644 --- a/libavdevice/decklink_dec.cpp +++ b/libavdevice/decklink_dec.cpp @@ -466,6 +466,17 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) } #endif + /* Check audio channel option for valid values: 2, 8 or 16 */ + switch (cctx->audio_channels) { + case 2: + case 8: + case 16: + break; + default: + av_log(avctx, AV_LOG_ERROR, "Value of channels option must be one of 2, 8 or 16\n"); + return AVERROR(EINVAL); + } + iter = CreateDeckLinkIteratorInstance(); if (!iter) { av_log(avctx, AV_LOG_ERROR, "Could not create DeckLink iterator\n"); @@ -543,7 +554,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) st->codec->codec_type = AVMEDIA_TYPE_AUDIO; st->codec->codec_id = AV_CODEC_ID_PCM_S16LE; st->codec->sample_rate = bmdAudioSampleRate48kHz; - st->codec->channels = 2; + st->codec->channels = cctx->audio_channels; avpriv_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */ ctx->audio_st=st; @@ -587,7 +598,8 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) ctx->teletext_st = st; } - result = ctx->dli->EnableAudioInput(bmdAudioSampleRate48kHz, bmdAudioSampleType16bitInteger, 2); + av_log(avctx, AV_LOG_VERBOSE, "Using %d input audio channels\n", ctx->audio_st->codec->channels); + result = ctx->dli->EnableAudioInput(bmdAudioSampleRate48kHz, bmdAudioSampleType16bitInteger, ctx->audio_st->codec->channels); if (result != S_OK) { av_log(avctx, AV_LOG_ERROR, "Cannot enable audio input\n"); |