[FFmpeg-devel] [PATCH v2 14/33] avdevice/dshow: accept show config dialog control message
Diederick Niehorster
dcnieho at gmail.com
Fri Jun 11 23:30:45 EEST 2021
DirectShow source will pop up its configuration dialog when
AV_APP_TO_DEV_CONFIG is received. Implementation for several other
possible configuration dialogs is more involved and will be provided in
the next commit.
Signed-off-by: Diederick Niehorster <dcnieho at gmail.com>
---
libavdevice/dshow.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index 9f041e90f8..018792a886 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -1084,6 +1084,7 @@ static int dshow_control_message(AVFormatContext *avctx, int type, void *data, s
struct dshow_ctx *ctx = avctx->priv_data;
int run_state = ctx->is_running;
HRESULT hr;
+ int ret = 0;
switch (type) {
case AV_APP_TO_DEV_PAUSE:
@@ -1095,6 +1096,32 @@ static int dshow_control_message(AVFormatContext *avctx, int type, void *data, s
case AV_APP_TO_DEV_TOGGLE_PAUSE:
run_state = !run_state;
break;
+ case AV_APP_TO_DEV_CONFIG: {
+ /* For documentation of dialog variable, see ffmpeg-devices.html in docs */
+ int dialog;
+ enum dshowDeviceType devtype;
+
+ if (!data)
+ av_log(avctx, AV_LOG_ERROR, "Use the data argument to indicate which dialog should be shown.");
+ dialog = *(int *) data;
+ devtype = (dialog & 1) ? AudioDevice : VideoDevice;
+
+ if (dialog & 1<<1) {
+ // device_dialog
+ if (ctx->device_filter[devtype])
+ ff_dshow_show_filter_properties(ctx->device_filter[devtype], avctx);
+ } else if (dialog & 1<<2) {
+ // crossbar_connection_dialog
+ // TODO
+ } else if (dialog & 1<<3) {
+ // tv_tuner_dialog
+ // TODO
+ }
+ break;
+ }
+
+ default:
+ ret = AVERROR(ENOSYS);
}
// if play state change requested, apply
@@ -1115,7 +1142,7 @@ static int dshow_control_message(AVFormatContext *avctx, int type, void *data, s
ctx->is_running = run_state;
}
- return 0;
+ return ret;
}
static enum AVCodecID waveform_codec_id(enum AVSampleFormat sample_fmt)
--
2.28.0.windows.1
More information about the ffmpeg-devel
mailing list