diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index ec8ac40913f3d02a88f6fa105150e0e752fe15d5..266b3ec93a28f2c56ef90abdf2c0e19432edc1ba 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -359,9 +359,6 @@ void ff_h264_free_tables(H264Context *h, int free_rbsp)
         for (i = 0; i < H264_MAX_PICTURE_COUNT; i++)
             ff_h264_unref_picture(h, &h->DPB[i]);
         av_freep(&h->DPB);
-    } else if (h->DPB) {
-        for (i = 0; i < H264_MAX_PICTURE_COUNT; i++)
-            h->DPB[i].needs_realloc = 1;
     }
 
     h->cur_pic_ptr = NULL;
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 94fc029ab9d37bc37673147799d708e8c64abecd..fc2ee4bb09f00ed9ec17cbb81ae1b376fab50270 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -292,7 +292,6 @@ typedef struct H264Picture {
     int mbaff;              ///< 1 -> MBAFF frame 0-> not MBAFF
     int field_picture;      ///< whether or not picture was encoded in separate fields
 
-    int needs_realloc;      ///< picture needs to be reallocated (eg due to a frame size change)
     int reference;
     int recovered;          ///< picture at IDR or recovery point + recovery count
 } H264Picture;
diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index 694ddb9c8f23ee79eec04617d9ec19e34bd1968d..0263e6eed4e4098e7341c954a4e03c4e6eef3f86 100644
--- a/libavcodec/h264_picture.c
+++ b/libavcodec/h264_picture.c
@@ -113,7 +113,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
     dst->long_ref      = src->long_ref;
     dst->mbaff         = src->mbaff;
     dst->field_picture = src->field_picture;
-    dst->needs_realloc = src->needs_realloc;
     dst->reference     = src->reference;
     dst->recovered     = src->recovered;
 
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 16d5878fe14f0dad2bd8edcc97feaa9d1f060e69..d5c0a6fa29882abdc34819dc7a62b01fdc16592c 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -273,8 +273,6 @@ static inline int pic_is_unused(H264Context *h, H264Picture *pic)
 {
     if (!pic->f.buf[0])
         return 1;
-    if (pic->needs_realloc && !(pic->reference & DELAYED_PIC_REF))
-        return 1;
     return 0;
 }
 
@@ -289,11 +287,6 @@ static int find_unused_picture(H264Context *h)
     if (i == H264_MAX_PICTURE_COUNT)
         return AVERROR_INVALIDDATA;
 
-    if (h->DPB[i].needs_realloc) {
-        h->DPB[i].needs_realloc = 0;
-        ff_h264_unref_picture(h, &h->DPB[i]);
-    }
-
     return i;
 }