diff --git a/libavformat/mxf.c b/libavformat/mxf.c
index d0fb2f0d94012f3d482c3dbb57cc8358a0522f29..95c7916ca6fa7f997c2c4fb9eae36c0b7a735050 100644
--- a/libavformat/mxf.c
+++ b/libavformat/mxf.c
@@ -866,6 +866,8 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
                     st->codec->codec_id = CODEC_ID_PCM_S24BE;
                 else if (descriptor->bits_per_sample == 32)
                     st->codec->codec_id = CODEC_ID_PCM_S32BE;
+            } else if (st->codec->codec_id == CODEC_ID_MP2) {
+                st->need_parsing = 1;
             }
         }
         if (container_ul && container_ul->wrapping == Clip) {