[FFmpeg-devel] [PATCH v2 10/33] fftools: provide media type info for devices

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Jun 17 04:18:53 EEST 2021


Diederick Niehorster:
> fftools now print info about what media type(s), if any, are provided by
> sink and source avdevices.
> 
> Signed-off-by: Diederick Niehorster <dcnieho at gmail.com>
> ---
>  fftools/cmdutils.c | 34 ++++++++++++++++++++++++----------
>  1 file changed, 24 insertions(+), 10 deletions(-)
> 
> diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
> index 4148285971..e7bd9f2644 100644
> --- a/fftools/cmdutils.c
> +++ b/fftools/cmdutils.c
> @@ -2205,9 +2205,29 @@ double get_rotation(AVStream *st)
>  }
>  
>  #if CONFIG_AVDEVICE
> +static void print_device_list(AVDeviceInfoList *device_list)

Missing const.

> +{
> +    // print devices
> +    for (int i = 0; i < device_list->nb_devices; i++) {

Accessing this via "const AVDeviceInfo *device =
&device_list->devices[i];" would improve readability.

> +        printf("%s %s [%s]", device_list->default_device == i ? "*" : " ",
> +            device_list->devices[i]->device_name, device_list->devices[i]->device_description);
> +        if (device_list->devices[i]->nb_media_types > 0 && device_list->devices[i]->media_types) {
> +            const char* media_type = av_get_media_type_string(device_list->devices[i]->media_types[0]);
> +            printf(" (%s", media_type ? media_type : "unknown");
> +            for (int i = 1; i < device_list->devices[i]->nb_media_types; ++i) {
> +                media_type = av_get_media_type_string(device_list->devices[i]->media_types[i]);
> +                printf(", %s", media_type ? media_type : "unknown");
> +            }
> +            printf(")");
> +        } else {
> +            printf(" (none)");
> +        }
> +        printf("\n");
> +    }
> +}
>  static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
>  {
> -    int ret, i;
> +    int ret;
>      AVDeviceInfoList *device_list = NULL;
>  
>      if (!fmt || !fmt->priv_class  || !AV_IS_INPUT_DEVICE(fmt->priv_class->category))
> @@ -2225,10 +2245,7 @@ static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
>          goto fail;
>      }
>  
> -    for (i = 0; i < device_list->nb_devices; i++) {
> -        printf("%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
> -               device_list->devices[i]->device_name, device_list->devices[i]->device_description);
> -    }
> +    print_device_list(device_list);
>  
>    fail:
>      avdevice_free_list_devices(&device_list);
> @@ -2237,7 +2254,7 @@ static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
>  
>  static int print_device_sinks(const AVOutputFormat *fmt, AVDictionary *opts)
>  {
> -    int ret, i;
> +    int ret;
>      AVDeviceInfoList *device_list = NULL;
>  
>      if (!fmt || !fmt->priv_class  || !AV_IS_OUTPUT_DEVICE(fmt->priv_class->category))
> @@ -2255,10 +2272,7 @@ static int print_device_sinks(const AVOutputFormat *fmt, AVDictionary *opts)
>          goto fail;
>      }
>  
> -    for (i = 0; i < device_list->nb_devices; i++) {
> -        printf("%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
> -               device_list->devices[i]->device_name, device_list->devices[i]->device_description);
> -    }
> +    print_device_list(device_list);
>  
>    fail:
>      avdevice_free_list_devices(&device_list);
> 



More information about the ffmpeg-devel mailing list