#11163: avdevice_list_input_sources for dshow fails on machines with no video
capture devices.
----------------------------------+---------------------------------------
Reporter: Rishi | Type: enhancement
Status: new | Priority: normal
Component: avdevice | Version: 6.1.1
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
Summary of the bug: avdevice_list_input_sources fails on machines with no
video capture devices. While this sounds like by design, there are some
machines with audio only capture devices, which an api user can then
filter through.
How to reproduce:
It requires a Windows machine with no video capture devices.
const AVInputFormat* inputFormat = av_find_input_format("dshow");
AVDeviceInfoList* p;
__FFmpegReturnFalseIfFail(avdevice_list_input_sources(inputFormat,
nullptr, nullptr, &p));
This stems from here libavdevice/dshow.c
ret = dshow_cycle_devices(avctx, devenum, VideoDevice,
VideoSourceDevice, NULL, NULL, &device_list);
if (ret < S_OK)
goto error;
ret = dshow_cycle_devices(avctx, devenum, AudioDevice,
AudioSourceDevice, NULL, NULL, &device_list);
From https://learn.microsoft.com/en-us/previous-versions/ms784969(v=vs.85)
ICreateDevEnum::CreateClassEnumerator returns S_FALSE if the category does
not exist ...
So why not cycle the audio devices if the video category does not exist,
ie if specifically S_FALSE is returned. Happy to put in a patch, but does
this sound like a right ask?
My main scenario is to capture Stereo Mix Audio or any other recording
devices.
I am using this in my binary linked against FFmpeg 6_1 that I build on my
own.
$ git log -1
commit 36126e4c142e43cc703f4b8c535d388ac5e403a4 (HEAD -> master)
Author: Michael Niedermayer <[email protected]>
Date: Fri May 3 23:25:10 2024 +0200
avcodec/exr: Fix preview overflow
Fixes: CID1515456 Unintentional integer overflow
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <[email protected]>
rishi@DESKTOP-0NQHKQI MINGW64 ~/localgitrepos/ffmpeg (master)
$ git branch -vv
* master 36126e4c14 [origin/master: behind 1596] avcodec/exr: Fix preview
overflow
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11163>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker_______________________________________________
FFmpeg-trac mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".