<html><head></head><body>Hi,<br><br>Conceptually okay but on the implementation level, why do you need to cache the value?<br><br><div class="gmail_quote">Le 20 janvier 2020 12:34:59 GMT+02:00, Thomas Guillem <thomas@gllm.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Enabled by default, this option be used to disable hardware decoders (with<br>"--no-decoder-hw"). This option can be set on input/media items and will be<br>forwarded to the decoder via the input_thread_t.<br><br>To disable hardware decoders, the core decoder have to disable decoder devices.<hr> src/input/decoder.c | 8 +++++++-<br> src/libvlc-module.c | 6 ++++++<br> 2 files changed, 13 insertions(+), 1 deletion(-)<br><br>diff --git a/src/input/decoder.c b/src/input/decoder.c<br>index 17a36df3c9b..03d92c429c2 100644<br>--- a/src/input/decoder.c<br>+++ b/src/input/decoder.c<br>@@ -129,6 +129,7 @@ struct decoder_owner<br>     vout_thread_t   *p_vout;<br>     enum vlc_vout_order vout_order;<br>     bool            vout_thread_started;<br>+    bool            use_hw;<br> <br>     /* -- Theses variables need locking on read *and* write -- */<br>     /* Preroll */<br>@@ -615,8 +616,12 @@ static vlc_decoder_device * ModuleThread_GetDecoderDevice( decoder_t *p_dec )<br>     struct decoder_owner *p_owner = dec_get_owner( p_dec );<br> <br>     enum vlc_vout_order vout_order;<br>+<br>+    /* Requesting a decoder device will automatically enable hw decoding */<br>     vlc_decoder_device *dec_device = NULL;<br>-    int created_vout = CreateVoutIfNeeded(p_owner, NULL, &vout_order, &dec_device);<br>+    vlc_decoder_device **dec_device_ptr = p_owner->use_hw ? &dec_device : NULL;<br>+<br>+    int created_vout = CreateVoutIfNeeded(p_owner, NULL, &vout_order, dec_device_ptr);<br>     if (created_vout == -1)<br>     {<br>         if ( dec_device )<br>@@ -1848,6 +1853,7 @@ static struct decoder_owner * CreateDecoder( vlc_object_t *p_parent,<br>     p_owner->p_aout = NULL;<br>     p_owner->p_vout = NULL;<br>     p_owner->vout_thread_started = false;<br>+    p_owner->use_hw = var_InheritBool( p_parent, "decoder-hw" );<br>     p_owner->i_spu_channel = VOUT_SPU_CHANNEL_INVALID;<br>     p_owner->i_spu_order = 0;<br>     p_owner->p_sout = p_sout;<br>diff --git a/src/libvlc-module.c b/src/libvlc-module.c<br>index 1e733662cf6..9839a8274a9 100644<br>--- a/src/libvlc-module.c<br>+++ b/src/libvlc-module.c<br>@@ -968,6 +968,11 @@ static const char *const ppsz_prefres[] = {<br>     "before trying the other ones. Only advanced users should " \<br>     "alter this option as it can break playback of all your streams." )<br> <br>+#define DECODER_HW_TEXT N_("Enable hardware decoders")<br>+#define DECODER_HW_LONGTEXT N_( \<br>+    "This will enable hardware decoders. VLC will fallback automatically to " \<br>+    "software decoders in case of hardware decoder failure." )<br>+<br> #define ENCODER_TEXT N_("Preferred encoders list")<br> #define ENCODER_LONGTEXT N_( \<br>     "This allows you to select a list of encoders that VLC will use in " \<br>@@ -2044,6 +2049,7 @@ vlc_module_begin ()<br>     add_category_hint(N_("Decoders"), CODEC_CAT_LONGTEXT)<br>     add_string( "codec", NULL, CODEC_TEXT,<br>                 CODEC_LONGTEXT, true )<br>+    add_bool( "decoder-hw", true, DECODER_HW_TEXT, DECODER_HW_LONGTEXT, true )<br>     add_string( "encoder",  NULL, ENCODER_TEXT,<br>                 ENCODER_LONGTEXT, true )<br>     add_module("dec-dev", "decoder device", "any", DEC_DEV_TEXT, DEC_DEV_LONGTEXT)</pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>