Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
avdevice/dshow: Use WAVEFORMATEX from AM_MEDIA_TYPE for describing de…
…vice capabilities. (Fixes #9420)

Signed-off-by: Brad Isbell <brad@audiopump.co>
Reviewed-by: Roger Pack <rogerdpack2@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
  • Loading branch information
bradisbell authored and michaelni committed Nov 5, 2021
1 parent 7370f1f commit d9a9b4c
Showing 1 changed file with 12 additions and 20 deletions.
32 changes: 12 additions & 20 deletions libavdevice/dshow.c
Expand Up @@ -422,28 +422,20 @@ dshow_cycle_formats(AVFormatContext *avctx, enum dshowDeviceType devtype,
goto next;
}
if (!pformat_set) {
av_log(avctx, AV_LOG_INFO, " min ch=%lu bits=%lu rate=%6lu max ch=%lu bits=%lu rate=%6lu\n",
acaps->MinimumChannels, acaps->MinimumBitsPerSample, acaps->MinimumSampleFrequency,
acaps->MaximumChannels, acaps->MaximumBitsPerSample, acaps->MaximumSampleFrequency);
av_log(
avctx,
AV_LOG_INFO,
" ch=%2lu, bits=%2lu, rate=%6lu\n",
fx->nChannels, fx->wBitsPerSample, fx->nSamplesPerSec
);
continue;
}
if (ctx->sample_rate) {
if (ctx->sample_rate > acaps->MaximumSampleFrequency ||
ctx->sample_rate < acaps->MinimumSampleFrequency)
goto next;
fx->nSamplesPerSec = ctx->sample_rate;
}
if (ctx->sample_size) {
if (ctx->sample_size > acaps->MaximumBitsPerSample ||
ctx->sample_size < acaps->MinimumBitsPerSample)
goto next;
fx->wBitsPerSample = ctx->sample_size;
}
if (ctx->channels) {
if (ctx->channels > acaps->MaximumChannels ||
ctx->channels < acaps->MinimumChannels)
goto next;
fx->nChannels = ctx->channels;
if (
(ctx->sample_rate && ctx->sample_rate != fx->nSamplesPerSec) ||
(ctx->sample_size && ctx->sample_size != fx->wBitsPerSample) ||
(ctx->channels && ctx->channels != fx->nChannels )
) {
goto next;
}
}
if (IAMStreamConfig_SetFormat(config, type) != S_OK)
Expand Down

0 comments on commit d9a9b4c

Please sign in to comment.