[FFmpeg-devel] [PATCH 1/2] Use WAVEFORMATEX from AM_MEDIA_TYPE for describing device capabilities. (Fixes #9420)

Brad Isbell brad at audiopump.co
Thu Nov 4 19:20:48 EET 2021


Re-sending with correct line endings.  Thanks!


>From fd6bfd237d4d25de04d8179ccb1ff2d2f0aa904f Mon Sep 17 00:00:00 2001
From: Brad Isbell <brad at audiopump.co>
Date: Sun, 3 Oct 2021 00:16:05 -0500
Subject: [PATCH 1/2] Use WAVEFORMATEX from AM_MEDIA_TYPE for describing device
 capabilities.  (Fixes #9420)

Signed-off-by: Brad Isbell <brad at audiopump.co>
---
 libavdevice/dshow.c | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index 8d0a6fc..5c1e494 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -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)
--
2.32.0.windows.1

On Wed, Nov 3, 2021 at 9:09 PM Brad Isbell <brad at audiopump.co> wrote:
>
> From fd6bfd237d4d25de04d8179ccb1ff2d2f0aa904f Mon Sep 17 00:00:00 2001
> From: Brad Isbell <brad at audiopump.co>
> Date: Sun, 3 Oct 2021 00:16:05 -0500
> Subject: [PATCH 1/2] Use WAVEFORMATEX from AM_MEDIA_TYPE for describing device
>  capabilities.  (Fixes #9420)
>
> Signed-off-by: Brad Isbell <brad at audiopump.co>
> ---
>  libavdevice/dshow.c | 32 ++++++++++++--------------------
>  1 file changed, 12 insertions(+), 20 deletions(-)
>
> diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
> index 8d0a6fc..5c1e494 100644
> --- a/libavdevice/dshow.c
> +++ b/libavdevice/dshow.c
> @@ -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)
> --
> 2.32.0.windows.1
>


More information about the ffmpeg-devel mailing list