diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index c99a4d5cd244a7e29d5160520dacda293f2b30de..f6d281755e6fe36dae4df5230d7b2091710d9f69 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -295,7 +295,7 @@ int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){
 
         for (i=0; i<3 && picture.data[i+1]; i++)
             size[i] = picture.data[i+1] - picture.data[i];
-        size[i] = tmpsize - size[i];
+        size[i] = tmpsize - (picture.data[i] - picture.data[0]);
 
         buf->last_pic_num= -256*256*256*64;
         memset(buf->base, 0, sizeof(buf->base));