[vlc-devel] [PATCH] avcommon: refactor usage of `quiet' variable

Marvin Scholz epirat07 at gmail.com
Thu Dec 12 11:04:14 CET 2019


On 12 Dec 2019, at 10:01, Alexandre Janniaux wrote:

> The `quiet' VLC variable is used although it is exposed only by other
> non-mandatory modules. Rename it to avcodec/avformat-quiet so as to
> prevent assertion on platform that won't ship with a module exposing a
> quiet variable.

Hi, thanks for the patch!

While this approach works to fix the issue and seems certainly like a 
possible
solution to me, I think it would be more convenient to have just one 
`quiet`
variable and not a per-module one. So maybe the variable should be 
„owned“ by
the core instead?

Although it seems we already have several module-specific quiet options
so maybe we want to keep it that way even though to me it seems weird…

> ---
>  modules/codec/avcodec/avcodec.c   |  6 ++++++
>  modules/codec/avcodec/avcommon.h  | 12 ++++++++----
>  modules/demux/avformat/avformat.c |  5 +++++
>  3 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/modules/codec/avcodec/avcodec.c 
> b/modules/codec/avcodec/avcodec.c
> index ad2201cb1f..843a076162 100644
> --- a/modules/codec/avcodec/avcodec.c
> +++ b/modules/codec/avcodec/avcodec.c
> @@ -71,6 +71,9 @@ static const char *const enc_hq_list_text[] = {
>          "delivered by the FFmpeg library. This includes (MS)MPEG4, 
> DivX, SV1,"\
>          "H261, H263, H264, WMV, WMA, AAC, AMR, DV, MJPEG and other 
> codecs")
>
> +#define AVCODEC_QUIET_TEXT "Force quiet mode"
> +#define AVCODEC_QUIET_LONGTEXT "Force avcodec logs to quiet mode"
> +
>  vlc_module_begin ()
>      set_shortname( "FFmpeg")
>      set_category( CAT_INPUT )
> @@ -80,6 +83,9 @@ vlc_module_begin ()
>      set_help( MODULE_DESCRIPTION )
>      set_section( N_("Decoding") , NULL )
>
> +    add_bool("avcodec-quiet", false, AVCODEC_QUIET_TEXT,
> +             AVCODEC_QUIET_LONGTEXT, true)
> +
>      add_shortcut("ffmpeg")
>      set_capability("video decoder", 70)
>      set_callbacks(InitVideoDec, EndVideoDec)
> diff --git a/modules/codec/avcodec/avcommon.h 
> b/modules/codec/avcodec/avcommon.h
> index 1962162a7e..7d6bd7a473 100644
> --- a/modules/codec/avcodec/avcommon.h
> +++ b/modules/codec/avcodec/avcommon.h
> @@ -76,11 +76,11 @@ static inline void vlc_av_get_options(const char 
> *psz_opts, AVDictionary** pp_di
>      }
>  }
>
> -static inline void vlc_init_avutil(vlc_object_t *obj)
> +static inline void vlc_init_avutil(vlc_object_t *obj, bool quiet)
>  {
>      int level = AV_LOG_QUIET;
>
> -    if (!var_InheritBool(obj, "quiet")) {
> +    if (!quiet) {
>          int64_t verbose = var_InheritInteger(obj, "verbose");
>          if (verbose >= 0) switch(verbose + VLC_MSG_ERR) {
>          case VLC_MSG_ERR:
> @@ -112,9 +112,11 @@ static inline void vlc_init_avutil(vlc_object_t 
> *obj)
>  # include <libavformat/avformat.h>
>  static inline void vlc_init_avformat(vlc_object_t *obj)
>  {
> +    bool quiet = var_InheritBool(obj, "avformat-quiet");
> +
>      vlc_avcodec_lock();
>
> -    vlc_init_avutil(obj);
> +    vlc_init_avutil(obj, quiet);
>
>      avformat_network_init();
>
> @@ -128,9 +130,11 @@ static inline void vlc_init_avformat(vlc_object_t 
> *obj)
>  # include <libavcodec/avcodec.h>
>  static inline void vlc_init_avcodec(vlc_object_t *obj)
>  {
> +    bool quiet = var_InheritBool(obj, "avcodec-quiet");
> +
>      vlc_avcodec_lock();
>
> -    vlc_init_avutil(obj);
> +    vlc_init_avutil(obj, quiet);
>
>      avcodec_register_all();
>
> diff --git a/modules/demux/avformat/avformat.c 
> b/modules/demux/avformat/avformat.c
> index ac34a377c5..b47fcc9294 100644
> --- a/modules/demux/avformat/avformat.c
> +++ b/modules/demux/avformat/avformat.c
> @@ -32,6 +32,9 @@
>  #include "avformat.h"
>  #include "../../codec/avcodec/avcommon.h"
>
> +#define AVFORMAT_QUIET_TEXT "Force quiet mode"
> +#define AVFORMAT_QUIET_LONGTEXT "Force avformat logs to quiet mode"
> +
>  vlc_module_begin ()
>  #endif /* MERGE_FFMPEG */
>      add_shortcut( "ffmpeg", "avformat" )
> @@ -45,6 +48,8 @@ vlc_module_begin ()
>      add_string( "avformat-format", NULL, FORMAT_TEXT, 
> FORMAT_LONGTEXT, true )
>      add_obsolete_string("ffmpeg-format") /* removed since 2.1.0 */
>      add_string( "avformat-options", NULL, AV_OPTIONS_TEXT, 
> AV_OPTIONS_LONGTEXT, true )
> +    add_bool( "avformat-quiet", false, AVFORMAT_QUIET_TEXT,
> +               AVFORMAT_QUIET_LONGTEXT, true )
>
>  #ifdef ENABLE_SOUT
>      /* mux submodule */
> -- 
> 2.24.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list