[FFmpeg-cvslog] dshow: crossbar dialog was frequently being displayed twice, split up option so it can be just once

rogerdpack git at videolan.org
Mon Jan 26 15:00:00 CET 2015


ffmpeg | branch: master | rogerdpack <rogerpack2005 at gmail.com> | Mon Jan 26 01:29:58 2015 -0700| [7c2e26270124fc81babcfc7b9d070bb8bd8ab6fa] | committer: rogerdpack

dshow: crossbar dialog was frequently being displayed twice, split up option so it can be just once

Signed-off-by: rogerdpack <rogerpack2005 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7c2e26270124fc81babcfc7b9d070bb8bd8ab6fa
---

 doc/indevs.texi              |    9 +++++++--
 libavdevice/dshow.c          |    9 ++++++---
 libavdevice/dshow_capture.h  |    3 ++-
 libavdevice/dshow_crossbar.c |    3 ++-
 4 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/doc/indevs.texi b/doc/indevs.texi
index a35c7a6..ae61331 100644
--- a/doc/indevs.texi
+++ b/doc/indevs.texi
@@ -255,10 +255,15 @@ If set to @option{true}, before capture starts, popup a display dialog
 to the end user, allowing them to change audio filter properties
 and configurations manually.
 
- at item show_crossbar_connection_dialog
+ at item show_video_crossbar_connection_dialog
 If set to @option{true}, before capture starts, popup a display
 dialog to the end user, allowing them to manually
-modify crossbar pin routings.
+modify crossbar pin routings, when it opens a video device.
+
+ at item show_audio_crossbar_connection_dialog
+If set to @option{true}, before capture starts, popup a display
+dialog to the end user, allowing them to manually
+modify crossbar pin routings, when it opens an audio device.
 
 @item show_analog_tv_tuner_dialog
 If set to @option{true}, before capture starts, popup a display
diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index d881bfa..9ca2519 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -1199,9 +1199,12 @@ static const AVOption options[] = {
     { "show_audio_device_dialog", "display property dialog for audio capture device", OFFSET(show_audio_device_dialog), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC, "show_audio_device_dialog" },
     { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "show_audio_device_dialog" },
     { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "show_audio_device_dialog" },
-    { "show_crossbar_connection_dialog", "display property dialog for crossbar connecting pins filter", OFFSET(show_crossbar_connection_dialog), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC, "show_crossbar_connection_dialog" },
-    { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "show_crossbar_connection_dialog" },
-    { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "show_crossbar_connection_dialog" },
+    { "show_video_crossbar_connection_dialog", "display property dialog for crossbar connecting pins filter on video device", OFFSET(show_video_crossbar_connection_dialog), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC, "show_video_crossbar_connection_dialog" },
+    { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "show_video_crossbar_connection_dialog" },
+    { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "show_video_crossbar_connection_dialog" },
+    { "show_audio_crossbar_connection_dialog", "display property dialog for crossbar connecting pins filter on audio device", OFFSET(show_audio_crossbar_connection_dialog), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC, "show_audio_crossbar_connection_dialog" },
+    { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "show_audio_crossbar_connection_dialog" },
+    { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "show_audio_crossbar_connection_dialog" },
     { "show_analog_tv_tuner_dialog", "display property dialog for analog tuner filter", OFFSET(show_analog_tv_tuner_dialog), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC, "show_analog_tv_tuner_dialog" },
     { "true", "", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, DEC, "show_analog_tv_tuner_dialog" },
     { "false", "", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, DEC, "show_analog_tv_tuner_dialog" },
diff --git a/libavdevice/dshow_capture.h b/libavdevice/dshow_capture.h
index 11ab23c..f258476 100644
--- a/libavdevice/dshow_capture.h
+++ b/libavdevice/dshow_capture.h
@@ -303,7 +303,8 @@ struct dshow_ctx {
     char *audio_pin_name;
     int   show_video_device_dialog;
     int   show_audio_device_dialog;
-    int   show_crossbar_connection_dialog;
+    int   show_video_crossbar_connection_dialog;
+    int   show_audio_crossbar_connection_dialog;
     int   show_analog_tv_tuner_dialog;
     int   show_analog_tv_tuner_audio_dialog;
 
diff --git a/libavdevice/dshow_crossbar.c b/libavdevice/dshow_crossbar.c
index e3012df..c0739da 100644
--- a/libavdevice/dshow_crossbar.c
+++ b/libavdevice/dshow_crossbar.c
@@ -158,7 +158,8 @@ dshow_try_setup_crossbar_options(ICaptureGraphBuilder2 *graph_builder2,
     }
     /* TODO some TV tuners apparently have multiple crossbars? */
 
-    if (ctx->show_crossbar_connection_dialog) {
+    if (devtype == VideoDevice && ctx->show_video_crossbar_connection_dialog ||
+        devtype == AudioDevice && ctx->show_audio_crossbar_connection_dialog) {
         hr = IAMCrossbar_QueryInterface(cross_bar, &IID_IBaseFilter, (void **) &cross_bar_base_filter);
         if (hr != S_OK)
             goto end;



More information about the ffmpeg-cvslog mailing list