[FFmpeg-devel] [PATCH v5 09/13] avdevice: add info about media types(s) to AVDeviceInfo

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Mon Dec 20 02:59:34 EET 2021


Diederick Niehorster:
> An avdevice, regardless of whether its category says its an audio or
> video device, may provide access to devices providing different media
> types, or even single devices providing multiple media types. Also, some
> devices may provide no media types. dshow is an example encompassing all
> of these cases. Users should be provided with this information, so
> AVDeviceInfo is extended to provide it.
> 
> Bump avdevice version
> 
> Signed-off-by: Diederick Niehorster <dcnieho at gmail.com>
> ---
>  libavdevice/avdevice.c | 2 ++
>  libavdevice/avdevice.h | 2 ++
>  libavdevice/version.h  | 2 +-
>  3 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c
> index 2ae26ab8e3..712ef1e80c 100644
> --- a/libavdevice/avdevice.c
> +++ b/libavdevice/avdevice.c
> @@ -157,6 +157,8 @@ void avdevice_free_list_devices(AVDeviceInfoList **device_list)
>          if (dev) {
>              av_freep(&dev->device_name);
>              av_freep(&dev->device_description);
> +            if (dev->media_types)
> +                av_freep(&dev->media_types);

av_freep() can handle the case of dev->media_types == NULL just fine, so
the check can be removed (yes, this might be a tiny bit slower in case
dev->media_types is NULL, but this is not hot code).

>              av_free(dev);
>          }
>      }
> diff --git a/libavdevice/avdevice.h b/libavdevice/avdevice.h
> index 8370bbc7f2..6f24976dcc 100644
> --- a/libavdevice/avdevice.h
> +++ b/libavdevice/avdevice.h
> @@ -457,6 +457,8 @@ void avdevice_capabilities_free(AVDeviceCapabilitiesQuery **caps, AVFormatContex
>  typedef struct AVDeviceInfo {
>      char *device_name;                   /**< device name, format depends on device */
>      char *device_description;            /**< human friendly name */
> +    enum AVMediaType *media_types;       /**< array indicating what media types(s), if any, a device can provide. If null, cannot provide any */
> +    int nb_media_types;                  /**< length of media_types array, 0 if device cannot provide any media types */

Personally, I'd prefer it if this were unsigned given that negative
values don't make sense. But this is just a personal preference.

>  } AVDeviceInfo;
>  
>  /**
> diff --git a/libavdevice/version.h b/libavdevice/version.h
> index 914e156ec7..c549768e12 100644
> --- a/libavdevice/version.h
> +++ b/libavdevice/version.h
> @@ -28,7 +28,7 @@
>  #include "libavutil/version.h"
>  
>  #define LIBAVDEVICE_VERSION_MAJOR  59
> -#define LIBAVDEVICE_VERSION_MINOR   0
> +#define LIBAVDEVICE_VERSION_MINOR   1
>  #define LIBAVDEVICE_VERSION_MICRO 101

MICRO should be reset if MINOR is bumped.

>  
>  #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
> 



More information about the ffmpeg-devel mailing list