Decoders setting this capability allow the user to safely change the sample
rate, channel count, or channel layout parameters in AVCodecContext during
decoding. It is also used by libavcodec to determine whether to apply
parameter changes as signalled by packet side data.
---
 libavcodec/aacdec.c             |    6 ++++--
 libavcodec/ac3dec.c             |    4 ++--
 libavcodec/adpcm.c              |    2 +-
 libavcodec/g722dec.c            |    2 +-
 libavcodec/g726.c               |    2 +-
 libavcodec/gsmdec.c             |    4 ++--
 libavcodec/libgsm.c             |    4 ++--
 libavcodec/mace.c               |    4 ++--
 libavcodec/mlpdec.c             |    4 ++--
 libavcodec/mpegaudiodec.c       |    8 ++++----
 libavcodec/mpegaudiodec_float.c |    8 ++++----
 libavcodec/pcm-mpeg.c           |    2 +-
 libavcodec/pcm.c                |    2 +-
 libavcodec/qcelpdec.c           |    2 +-
 libavcodec/ra144dec.c           |    2 +-
 libavcodec/ra288.c              |    2 +-
 libavcodec/s302m.c              |    2 +-
 libavcodec/sipr.c               |    2 +-
 18 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index 1c59ec5..ac39b16 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -2850,7 +2850,8 @@ AVCodec ff_aac_decoder = {
     .sample_fmts     = (const enum AVSampleFormat[]) {
         AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE
     },
-    .capabilities    = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1,
+    .capabilities    = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1 |
+                       CODEC_CAP_PARAM_CHANGE,
     .channel_layouts = aac_channel_layout,
 };
 
@@ -2871,6 +2872,7 @@ AVCodec ff_aac_latm_decoder = {
     .sample_fmts     = (const enum AVSampleFormat[]) {
         AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE
     },
-    .capabilities    = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1,
+    .capabilities    = CODEC_CAP_CHANNEL_CONF | CODEC_CAP_DR1 |
+                       CODEC_CAP_PARAM_CHANGE,
     .channel_layouts = aac_channel_layout,
 };
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index 12770db..5ac0132 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -1438,7 +1438,7 @@ AVCodec ff_ac3_decoder = {
     .init           = ac3_decode_init,
     .close          = ac3_decode_end,
     .decode         = ac3_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"),
     .sample_fmts    = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLT,
                                                       AV_SAMPLE_FMT_S16,
@@ -1462,7 +1462,7 @@ AVCodec ff_eac3_decoder = {
     .init           = ac3_decode_init,
     .close          = ac3_decode_end,
     .decode         = ac3_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("ATSC A/52B (AC-3, E-AC-3)"),
     .sample_fmts    = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLT,
                                                       AV_SAMPLE_FMT_S16,
diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
index cf8c6cc..3c81a86 100644
--- a/libavcodec/adpcm.c
+++ b/libavcodec/adpcm.c
@@ -1295,7 +1295,7 @@ AVCodec ff_ ## name_ ## _decoder = {                      
  \
     .priv_data_size = sizeof(ADPCMDecodeContext),           \
     .init           = adpcm_decode_init,                    \
     .decode         = adpcm_decode_frame,                   \
-    .capabilities   = CODEC_CAP_DR1,                        \
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE, \
     .long_name      = NULL_IF_CONFIG_SMALL(long_name_),     \
     .sample_fmts    = sample_fmts_,                         \
 }
diff --git a/libavcodec/g722dec.c b/libavcodec/g722dec.c
index 9a9d2ba..5f49f59 100644
--- a/libavcodec/g722dec.c
+++ b/libavcodec/g722dec.c
@@ -149,7 +149,7 @@ AVCodec ff_adpcm_g722_decoder = {
     .priv_data_size = sizeof(G722Context),
     .init           = g722_decode_init,
     .decode         = g722_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("G.722 ADPCM"),
     .priv_class     = &g722_decoder_class,
 };
diff --git a/libavcodec/g726.c b/libavcodec/g726.c
index 1e946d4..82291b2 100644
--- a/libavcodec/g726.c
+++ b/libavcodec/g726.c
@@ -498,7 +498,7 @@ AVCodec ff_adpcm_g726_decoder = {
     .init           = g726_decode_init,
     .decode         = g726_decode_frame,
     .flush          = g726_decode_flush,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("G.726 ADPCM"),
 };
 #endif
diff --git a/libavcodec/gsmdec.c b/libavcodec/gsmdec.c
index 2333917..8be1c6b 100644
--- a/libavcodec/gsmdec.c
+++ b/libavcodec/gsmdec.c
@@ -117,7 +117,7 @@ AVCodec ff_gsm_decoder = {
     .init           = gsm_init,
     .decode         = gsm_decode_frame,
     .flush          = gsm_flush,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("GSM"),
 };
 
@@ -129,6 +129,6 @@ AVCodec ff_gsm_ms_decoder = {
     .init           = gsm_init,
     .decode         = gsm_decode_frame,
     .flush          = gsm_flush,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("GSM Microsoft variant"),
 };
diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c
index 37785fc..0269b39 100644
--- a/libavcodec/libgsm.c
+++ b/libavcodec/libgsm.c
@@ -243,7 +243,7 @@ AVCodec ff_libgsm_decoder = {
     .close          = libgsm_decode_close,
     .decode         = libgsm_decode_frame,
     .flush          = libgsm_flush,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("libgsm GSM"),
 };
 
@@ -256,6 +256,6 @@ AVCodec ff_libgsm_ms_decoder = {
     .close          = libgsm_decode_close,
     .decode         = libgsm_decode_frame,
     .flush          = libgsm_flush,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("libgsm GSM Microsoft variant"),
 };
diff --git a/libavcodec/mace.c b/libavcodec/mace.c
index a7c33b5..2917f1a 100644
--- a/libavcodec/mace.c
+++ b/libavcodec/mace.c
@@ -299,7 +299,7 @@ AVCodec ff_mace3_decoder = {
     .priv_data_size = sizeof(MACEContext),
     .init           = mace_decode_init,
     .decode         = mace_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("MACE (Macintosh Audio 
Compression/Expansion) 3:1"),
 };
 
@@ -310,6 +310,6 @@ AVCodec ff_mace6_decoder = {
     .priv_data_size = sizeof(MACEContext),
     .init           = mace_decode_init,
     .decode         = mace_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("MACE (Macintosh Audio 
Compression/Expansion) 6:1"),
 };
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
index afd8f88..f69c8fc 100644
--- a/libavcodec/mlpdec.c
+++ b/libavcodec/mlpdec.c
@@ -1151,7 +1151,7 @@ AVCodec ff_mlp_decoder = {
     .priv_data_size = sizeof(MLPDecodeContext),
     .init           = mlp_decode_init,
     .decode         = read_access_unit,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("MLP (Meridian Lossless Packing)"),
 };
 
@@ -1163,7 +1163,7 @@ AVCodec ff_truehd_decoder = {
     .priv_data_size = sizeof(MLPDecodeContext),
     .init           = mlp_decode_init,
     .decode         = read_access_unit,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("TrueHD"),
 };
 #endif /* CONFIG_TRUEHD_DECODER */
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 80acdad..4c6a5a5 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -1982,7 +1982,7 @@ AVCodec ff_mp1_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP1 (MPEG audio layer 1)"),
 };
@@ -1995,7 +1995,7 @@ AVCodec ff_mp2_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"),
 };
@@ -2008,7 +2008,7 @@ AVCodec ff_mp3_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
 };
@@ -2021,7 +2021,7 @@ AVCodec ff_mp3adu_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame_adu,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("ADU (Application Data Unit) MP3 
(MPEG audio layer 3)"),
 };
diff --git a/libavcodec/mpegaudiodec_float.c b/libavcodec/mpegaudiodec_float.c
index 93468f5..784e92d 100644
--- a/libavcodec/mpegaudiodec_float.c
+++ b/libavcodec/mpegaudiodec_float.c
@@ -30,7 +30,7 @@ AVCodec ff_mp1float_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP1 (MPEG audio layer 1)"),
 };
@@ -43,7 +43,7 @@ AVCodec ff_mp2float_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"),
 };
@@ -56,7 +56,7 @@ AVCodec ff_mp3float_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
 };
@@ -69,7 +69,7 @@ AVCodec ff_mp3adufloat_decoder = {
     .priv_data_size = sizeof(MPADecodeContext),
     .init           = decode_init,
     .decode         = decode_frame_adu,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .flush          = flush,
     .long_name      = NULL_IF_CONFIG_SMALL("ADU (Application Data Unit) MP3 
(MPEG audio layer 3)"),
 };
diff --git a/libavcodec/pcm-mpeg.c b/libavcodec/pcm-mpeg.c
index 4a38648..cf5ef6d 100644
--- a/libavcodec/pcm-mpeg.c
+++ b/libavcodec/pcm-mpeg.c
@@ -321,7 +321,7 @@ AVCodec ff_pcm_bluray_decoder = {
     .priv_data_size = sizeof(PCMBRDecode),
     .init           = pcm_bluray_decode_init,
     .decode         = pcm_bluray_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .sample_fmts    = (const enum AVSampleFormat[]){
         AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_NONE
     },
diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
index 618402d..bbf5a41 100644
--- a/libavcodec/pcm.c
+++ b/libavcodec/pcm.c
@@ -509,7 +509,7 @@ AVCodec ff_ ## name_ ## _decoder = {                        
                \
     .priv_data_size = sizeof(PCMDecode),                                    \
     .init           = pcm_decode_init,                                      \
     .decode         = pcm_decode_frame,                                     \
-    .capabilities   = CODEC_CAP_DR1,                                        \
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,               \
     .sample_fmts    = (const enum AVSampleFormat[]){ sample_fmt_,           \
                                                      AV_SAMPLE_FMT_NONE },  \
     .long_name      = NULL_IF_CONFIG_SMALL(long_name_),                     \
diff --git a/libavcodec/qcelpdec.c b/libavcodec/qcelpdec.c
index 4976726..394ee34 100644
--- a/libavcodec/qcelpdec.c
+++ b/libavcodec/qcelpdec.c
@@ -800,7 +800,7 @@ AVCodec ff_qcelp_decoder = {
     .id             = AV_CODEC_ID_QCELP,
     .init           = qcelp_decode_init,
     .decode         = qcelp_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .priv_data_size = sizeof(QCELPContext),
     .long_name      = NULL_IF_CONFIG_SMALL("QCELP / PureVoice"),
 };
diff --git a/libavcodec/ra144dec.c b/libavcodec/ra144dec.c
index 2be1b60..c414e4f 100644
--- a/libavcodec/ra144dec.c
+++ b/libavcodec/ra144dec.c
@@ -138,6 +138,6 @@ AVCodec ff_ra_144_decoder = {
     .priv_data_size = sizeof(RA144Context),
     .init           = ra144_decode_init,
     .decode         = ra144_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("RealAudio 1.0 (14.4K)"),
 };
diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c
index 908fa4d..dc5b536 100644
--- a/libavcodec/ra288.c
+++ b/libavcodec/ra288.c
@@ -233,6 +233,6 @@ AVCodec ff_ra_288_decoder = {
     .priv_data_size = sizeof(RA288Context),
     .init           = ra288_decode_init,
     .decode         = ra288_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("RealAudio 2.0 (28.8K)"),
 };
diff --git a/libavcodec/s302m.c b/libavcodec/s302m.c
index 087e948..7888349 100644
--- a/libavcodec/s302m.c
+++ b/libavcodec/s302m.c
@@ -161,6 +161,6 @@ AVCodec ff_s302m_decoder = {
     .priv_data_size = sizeof(S302MDecodeContext),
     .init           = s302m_decode_init,
     .decode         = s302m_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("SMPTE 302M"),
 };
diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c
index 7a449ae..9b56b5a 100644
--- a/libavcodec/sipr.c
+++ b/libavcodec/sipr.c
@@ -574,6 +574,6 @@ AVCodec ff_sipr_decoder = {
     .priv_data_size = sizeof(SiprContext),
     .init           = sipr_decoder_init,
     .decode         = sipr_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
+    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE,
     .long_name      = NULL_IF_CONFIG_SMALL("RealAudio SIPR / ACELP.NET"),
 };
-- 
1.7.1

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to