diff --git a/libavformat/brstm.c b/libavformat/brstm.c
index 6ec4d89438978220d0f1fd9895116918dac27853..e9d64e4ba8b0ad008eaec6f0a44dd7a5713a4dbb 100644
--- a/libavformat/brstm.c
+++ b/libavformat/brstm.c
@@ -392,6 +392,10 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
         if (!b->adpc) {
             av_log(s, AV_LOG_ERROR, "adpcm_thp requires ADPC chunk, but none was found.\n");
             return AVERROR_INVALIDDATA;
+        if (!b->table) {
+            b->table = av_mallocz(32 * codec->channels);
+            if (!b->table)
+                return AVERROR(ENOMEM);
         }
 
         if (size > (INT_MAX - 32 - 4) ||