[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