diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index b0580cb757e9fead3d24e112a56d94255866fdcb..0af668d053372943b20375adf512254321bc77f9 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -448,6 +448,7 @@ int MPV_common_init(MpegEncContext *s) CHECKED_ALLOCZ(s->q_intra_matrix16, 64*32*2 * sizeof(uint16_t)) CHECKED_ALLOCZ(s->q_inter_matrix16, 64*32*2 * sizeof(uint16_t)) } + CHECKED_ALLOCZ(s->blocks, 64*6*2 * sizeof(DCTELEM)) CHECKED_ALLOCZ(s->picture, MAX_PICTURE_COUNT * sizeof(Picture)) @@ -569,6 +570,7 @@ void MPV_common_end(MpegEncContext *s) av_freep(&s->q_inter_matrix); av_freep(&s->q_intra_matrix16); av_freep(&s->q_inter_matrix16); + av_freep(&s->blocks); for(i=0; ipicture[i]); diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index b7eed584f34930cf410faae8ec3fdef606ccc499..af01cba210e75dae49277ec4b8046952dc8c9fb7 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -657,7 +657,7 @@ typedef struct MpegEncContext { uint8_t *ptr_lastgob; DCTELEM (*block)[64]; ///< points to one of the following blocks - DCTELEM blocks[2][6][64] __align8; // for HQ mode we need to keep the best block + DCTELEM (*blocks)[6][64]; // for HQ mode we need to keep the best block int (*decode_mb)(struct MpegEncContext *s, DCTELEM block[6][64]); // used by some codecs to avoid a switch() #define SLICE_OK 0 #define SLICE_ERROR -1