<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>