summaryrefslogtreecommitdiff
path: root/libavcodec/svq3.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/svq3.c')
-rw-r--r--libavcodec/svq3.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index c8db08a32f..8a67836827 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -147,6 +147,7 @@ typedef struct SVQ3Context {
DECLARE_ALIGNED(8, uint8_t, non_zero_count_cache)[15 * 8];
uint32_t dequant4_coeff[QP_MAX_NUM + 1][16];
int block_offset[2 * (16 * 3)];
+ SVQ3Frame frames[3];
} SVQ3Context;
#define FULLPEL_MODE 1
@@ -1135,13 +1136,9 @@ static av_cold int svq3_decode_init(AVCodecContext *avctx)
int marker_found = 0;
int ret;
- s->cur_pic = av_mallocz(sizeof(*s->cur_pic));
- s->last_pic = av_mallocz(sizeof(*s->last_pic));
- s->next_pic = av_mallocz(sizeof(*s->next_pic));
- if (!s->next_pic || !s->last_pic || !s->cur_pic) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ s->cur_pic = &s->frames[0];
+ s->last_pic = &s->frames[1];
+ s->next_pic = &s->frames[2];
s->cur_pic->f = av_frame_alloc();
s->last_pic->f = av_frame_alloc();
@@ -1631,9 +1628,6 @@ static av_cold int svq3_decode_end(AVCodecContext *avctx)
av_frame_free(&s->cur_pic->f);
av_frame_free(&s->next_pic->f);
av_frame_free(&s->last_pic->f);
- av_freep(&s->cur_pic);
- av_freep(&s->next_pic);
- av_freep(&s->last_pic);
av_freep(&s->slice_buf);
av_freep(&s->intra4x4_pred_mode);
av_freep(&s->edge_emu_buffer);