Commit 8eecae77 authored by Anton Khirnov's avatar Anton Khirnov

svq3: move edge_emu_buffer to the SVQ3Context

parent 527bf5f7
...@@ -103,6 +103,8 @@ typedef struct SVQ3Context { ...@@ -103,6 +103,8 @@ typedef struct SVQ3Context {
unsigned int top_samples_available; unsigned int top_samples_available;
unsigned int topright_samples_available; unsigned int topright_samples_available;
unsigned int left_samples_available; unsigned int left_samples_available;
uint8_t *edge_emu_buffer;
} SVQ3Context; } SVQ3Context;
#define FULLPEL_MODE 1 #define FULLPEL_MODE 1
...@@ -336,11 +338,11 @@ static inline void svq3_mc_dir_part(SVQ3Context *s, ...@@ -336,11 +338,11 @@ static inline void svq3_mc_dir_part(SVQ3Context *s,
src = pic->f->data[0] + mx + my * sl->linesize; src = pic->f->data[0] + mx + my * sl->linesize;
if (emu) { if (emu) {
s->vdsp.emulated_edge_mc(sl->edge_emu_buffer, src, s->vdsp.emulated_edge_mc(s->edge_emu_buffer, src,
sl->linesize, sl->linesize, sl->linesize, sl->linesize,
width + 1, height + 1, width + 1, height + 1,
mx, my, s->h_edge_pos, s->v_edge_pos); mx, my, s->h_edge_pos, s->v_edge_pos);
src = sl->edge_emu_buffer; src = s->edge_emu_buffer;
} }
if (thirdpel) if (thirdpel)
(avg ? s->tdsp.avg_tpel_pixels_tab (avg ? s->tdsp.avg_tpel_pixels_tab
...@@ -363,12 +365,12 @@ static inline void svq3_mc_dir_part(SVQ3Context *s, ...@@ -363,12 +365,12 @@ static inline void svq3_mc_dir_part(SVQ3Context *s,
src = pic->f->data[i] + mx + my * sl->uvlinesize; src = pic->f->data[i] + mx + my * sl->uvlinesize;
if (emu) { if (emu) {
s->vdsp.emulated_edge_mc(sl->edge_emu_buffer, src, s->vdsp.emulated_edge_mc(s->edge_emu_buffer, src,
sl->uvlinesize, sl->uvlinesize, sl->uvlinesize, sl->uvlinesize,
width + 1, height + 1, width + 1, height + 1,
mx, my, (s->h_edge_pos >> 1), mx, my, (s->h_edge_pos >> 1),
s->v_edge_pos >> 1); s->v_edge_pos >> 1);
src = sl->edge_emu_buffer; src = s->edge_emu_buffer;
} }
if (thirdpel) if (thirdpel)
(avg ? s->tdsp.avg_tpel_pixels_tab (avg ? s->tdsp.avg_tpel_pixels_tab
...@@ -1264,9 +1266,9 @@ static int get_buffer(AVCodecContext *avctx, H264Picture *pic) ...@@ -1264,9 +1266,9 @@ static int get_buffer(AVCodecContext *avctx, H264Picture *pic)
if (ret < 0) if (ret < 0)
goto fail; goto fail;
if (!sl->edge_emu_buffer) { if (!s->edge_emu_buffer) {
sl->edge_emu_buffer = av_mallocz(pic->f->linesize[0] * 17); s->edge_emu_buffer = av_mallocz(pic->f->linesize[0] * 17);
if (!sl->edge_emu_buffer) if (!s->edge_emu_buffer)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
...@@ -1491,6 +1493,7 @@ static av_cold int svq3_decode_end(AVCodecContext *avctx) ...@@ -1491,6 +1493,7 @@ static av_cold int svq3_decode_end(AVCodecContext *avctx)
av_freep(&s->last_pic); av_freep(&s->last_pic);
av_freep(&s->slice_buf); av_freep(&s->slice_buf);
av_freep(&s->intra4x4_pred_mode); av_freep(&s->intra4x4_pred_mode);
av_freep(&s->edge_emu_buffer);
memset(&h->cur_pic, 0, sizeof(h->cur_pic)); memset(&h->cur_pic, 0, sizeof(h->cur_pic));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment