diff --git a/src/input/es_out.c b/src/input/es_out.c
index 66c3143e5ca9ebe422bc656aadb684baeb827765..fa05a16e91e5e6b2b6522a2e8254d3f331b076f7 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -2714,9 +2714,10 @@ static int EsOutVaControlLocked( es_out_t *out, int i_query, va_list args )
         {
             EsOutDrainDecoder( out, es );
             EsOutDestroyDecoder( out, es );
-            EsOutCreateDecoder( out, es );
         }
 
+        EsOutCreateDecoder( out, es );
+
         return VLC_SUCCESS;
     }