[FFmpeg-cvslog] avdevice/avdevice: fix return value of avdevice_list_devices()

Marton Balint git at videolan.org
Sun Jul 17 23:16:34 EEST 2022


ffmpeg | branch: release/5.1 | Marton Balint <cus at passwd.hu> | Sun Jul 10 20:32:55 2022 +0200| [83feded4926272904e4abcecaa573e61d457a0db] | committer: Marton Balint

avdevice/avdevice: fix return value of avdevice_list_devices()

According to API docs avdevice_list_devices(), avdevice_list_input_sources()
and avdevice_list_input_sinks() should return the number of autodetected
devices on success. This is redundant with AVDeviceInfoList->nb_devices so it
was not noticed earlier that none of the underlying device list functions work
like that.

Let's fix it in generic code to make it in line with the API docs.

Fixes ticket #9820.

Signed-off-by: Marton Balint <cus at passwd.hu>
(cherry picked from commit 64f04df37942c1b1fc11df0f99ffba7834c33f34)

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

 libavdevice/avdevice.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c
index b4fb272eb6..58996404b3 100644
--- a/libavdevice/avdevice.c
+++ b/libavdevice/avdevice.c
@@ -75,9 +75,11 @@ int avdevice_list_devices(AVFormatContext *s, AVDeviceInfoList **device_list)
         ret = s->oformat->get_device_list(s, *device_list);
     else
         ret = s->iformat->get_device_list(s, *device_list);
-    if (ret < 0)
+    if (ret < 0) {
         avdevice_free_list_devices(device_list);
-    return ret;
+        return ret;
+    }
+    return (*device_list)->nb_devices;
 }
 
 static int list_devices_for_context(AVFormatContext *s, AVDictionary *options,



More information about the ffmpeg-cvslog mailing list