diff --git a/libavcodec/aasc.c b/libavcodec/aasc.c
index fd63aba..58cc3c8 100644
--- a/libavcodec/aasc.c
+++ b/libavcodec/aasc.c
@@ -159,4 +159,5 @@ AVCodec ff_aasc_decoder = {
     .close          = aasc_decode_end,
     .decode         = aasc_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/aic.c b/libavcodec/aic.c
index ff8e392..4faa574 100644
--- a/libavcodec/aic.c
+++ b/libavcodec/aic.c
@@ -492,4 +492,5 @@ AVCodec ff_aic_decoder = {
     .decode         = aic_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
     .init_thread_copy = ONLY_IF_THREADS_ENABLED(aic_decode_init),
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/anm.c b/libavcodec/anm.c
index 29d59fb..7268418 100644
--- a/libavcodec/anm.c
+++ b/libavcodec/anm.c
@@ -199,4 +199,5 @@ AVCodec ff_anm_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/ansi.c b/libavcodec/ansi.c
index 19c88d8..3c82dcd 100644
--- a/libavcodec/ansi.c
+++ b/libavcodec/ansi.c
@@ -482,4 +482,5 @@ AVCodec ff_ansi_decoder = {
     .close          = decode_close,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/aura.c b/libavcodec/aura.c
index 5f84d95..5ef9316 100644
--- a/libavcodec/aura.c
+++ b/libavcodec/aura.c
@@ -105,4 +105,5 @@ AVCodec ff_aura2_decoder = {
     .init           = aura_decode_init,
     .decode         = aura_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/avrndec.c b/libavcodec/avrndec.c
index cdec99c..c37f996 100644
--- a/libavcodec/avrndec.c
+++ b/libavcodec/avrndec.c
@@ -170,4 +170,5 @@ AVCodec ff_avrn_decoder = {
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
     .max_lowres     = 3,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/avs.c b/libavcodec/avs.c
index 345d628..66724d4 100644
--- a/libavcodec/avs.c
+++ b/libavcodec/avs.c
@@ -186,4 +186,5 @@ AVCodec ff_avs_decoder = {
     .decode         = avs_decode_frame,
     .close          = avs_decode_end,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/avuidec.c b/libavcodec/avuidec.c
index 5117844..4cf620d 100644
--- a/libavcodec/avuidec.c
+++ b/libavcodec/avuidec.c
@@ -127,4 +127,5 @@ AVCodec ff_avui_decoder = {
     .init         = avui_decode_init,
     .decode       = avui_decode_frame,
     .capabilities = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/bethsoftvideo.c b/libavcodec/bethsoftvideo.c
index 97b745d..274516b 100644
--- a/libavcodec/bethsoftvideo.c
+++ b/libavcodec/bethsoftvideo.c
@@ -163,4 +163,5 @@ AVCodec ff_bethsoftvid_decoder = {
     .close          = bethsoftvid_decode_end,
     .decode         = bethsoftvid_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/bfi.c b/libavcodec/bfi.c
index 6727629..233a1d2 100644
--- a/libavcodec/bfi.c
+++ b/libavcodec/bfi.c
@@ -185,4 +185,5 @@ AVCodec ff_bfi_decoder = {
     .close          = bfi_decode_close,
     .decode         = bfi_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/bmvvideo.c b/libavcodec/bmvvideo.c
index 97f850d..dbbc100 100644
--- a/libavcodec/bmvvideo.c
+++ b/libavcodec/bmvvideo.c
@@ -295,4 +295,5 @@ AVCodec ff_bmv_video_decoder = {
     .init           = decode_init,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/c93.c b/libavcodec/c93.c
index fd026ac..b708659 100644
--- a/libavcodec/c93.c
+++ b/libavcodec/c93.c
@@ -269,4 +269,5 @@ AVCodec ff_c93_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/cllc.c b/libavcodec/cllc.c
index 1c6902a..80b0498 100644
--- a/libavcodec/cllc.c
+++ b/libavcodec/cllc.c
@@ -496,4 +496,5 @@ AVCodec ff_cllc_decoder = {
     .decode         = cllc_decode_frame,
     .close          = cllc_decode_close,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/cyuv.c b/libavcodec/cyuv.c
index 8e6749b..f2b0a7c 100644
--- a/libavcodec/cyuv.c
+++ b/libavcodec/cyuv.c
@@ -185,6 +185,7 @@ AVCodec ff_aura_decoder = {
     .init           = cyuv_decode_init,
     .decode         = cyuv_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 
@@ -198,5 +199,6 @@ AVCodec ff_cyuv_decoder = {
     .init           = cyuv_decode_init,
     .decode         = cyuv_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
diff --git a/libavcodec/fraps.c b/libavcodec/fraps.c
index 5ca6aff..ed8cb18 100644
--- a/libavcodec/fraps.c
+++ b/libavcodec/fraps.c
@@ -350,4 +350,5 @@ AVCodec ff_fraps_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/lcldec.c b/libavcodec/lcldec.c
index b1335e1..f5040c6 100644
--- a/libavcodec/lcldec.c
+++ b/libavcodec/lcldec.c
@@ -642,6 +642,7 @@ AVCodec ff_mszh_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 
@@ -656,5 +657,6 @@ AVCodec ff_zlib_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index e87c2aa..601b8db 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -1525,6 +1525,7 @@ AVCodec ff_apng_decoder = {
     .init_thread_copy = ONLY_IF_THREADS_ENABLED(png_dec_init),
     .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context),
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 
@@ -1541,6 +1542,6 @@ AVCodec ff_png_decoder = {
     .init_thread_copy = ONLY_IF_THREADS_ENABLED(png_dec_init),
     .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context),
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/,
-    .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM,
+    .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
diff --git a/libavcodec/r210dec.c b/libavcodec/r210dec.c
index 9c868cd..dbc94c7 100644
--- a/libavcodec/r210dec.c
+++ b/libavcodec/r210dec.c
@@ -104,6 +104,7 @@ AVCodec ff_r210_decoder = {
     .init           = decode_init,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 #if CONFIG_R10K_DECODER
@@ -115,6 +116,7 @@ AVCodec ff_r10k_decoder = {
     .init           = decode_init,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 #if CONFIG_AVRP_DECODER
@@ -126,5 +128,6 @@ AVCodec ff_avrp_decoder = {
     .init           = decode_init,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c
index 38de2c8..d6f4dd0 100644
--- a/libavcodec/utvideodec.c
+++ b/libavcodec/utvideodec.c
@@ -941,4 +941,5 @@ AVCodec ff_utvideo_decoder = {
     .close          = decode_end,
     .decode         = decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/v408dec.c b/libavcodec/v408dec.c
index acff95d..196c575 100644
--- a/libavcodec/v408dec.c
+++ b/libavcodec/v408dec.c
@@ -88,6 +88,7 @@ AVCodec ff_ayuv_decoder = {
     .init         = v408_decode_init,
     .decode       = v408_decode_frame,
     .capabilities = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
 #if CONFIG_V408_DECODER
@@ -99,5 +100,6 @@ AVCodec ff_v408_decoder = {
     .init         = v408_decode_init,
     .decode       = v408_decode_frame,
     .capabilities = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
 #endif
diff --git a/libavcodec/vble.c b/libavcodec/vble.c
index 4a07ab3..c25ee98 100644
--- a/libavcodec/vble.c
+++ b/libavcodec/vble.c
@@ -215,4 +215,5 @@ AVCodec ff_vble_decoder = {
     .decode         = vble_decode_frame,
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
     .init_thread_copy = ONLY_IF_THREADS_ENABLED(vble_decode_init),
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c
index 55a9a91..e67eee4 100644
--- a/libavcodec/zerocodec.c
+++ b/libavcodec/zerocodec.c
@@ -149,4 +149,5 @@ AVCodec ff_zerocodec_decoder = {
     .decode         = zerocodec_decode_frame,
     .close          = zerocodec_decode_close,
     .capabilities   = AV_CODEC_CAP_DR1,
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
 };
