diff mbox series

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

Message ID 20220710184237.4435-1-cus@passwd.hu
State Accepted
Commit 64f04df37942c1b1fc11df0f99ffba7834c33f34
Headers show
Series [FFmpeg-devel] avdevice/avdevice: fix return value of avdevice_list_devices() | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

Marton Balint July 10, 2022, 6:42 p.m. UTC
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@passwd.hu>
---
 libavdevice/avdevice.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Marton Balint July 17, 2022, 8:10 p.m. UTC | #1
On Sun, 10 Jul 2022, Marton Balint wrote:

> 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.

Will apply.

Regards,
Marton

>
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
> 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,
> -- 
> 2.35.3
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
diff mbox series

Patch

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,