Commit 7f9ab6a7 authored by michael's avatar michael

Fix regression test failure with pthreads on multiprocessor systems.

Fixes issue517


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15976 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent a6bfceb1
...@@ -307,8 +307,6 @@ int ff_init_me(MpegEncContext *s){ ...@@ -307,8 +307,6 @@ int ff_init_me(MpegEncContext *s){
c->sub_motion_search= no_sub_motion_search; c->sub_motion_search= no_sub_motion_search;
} }
c->temp= c->scratchpad;
return 0; return 0;
} }
......
...@@ -289,6 +289,7 @@ static int init_duplicate_context(MpegEncContext *s, MpegEncContext *base){ ...@@ -289,6 +289,7 @@ static int init_duplicate_context(MpegEncContext *s, MpegEncContext *base){
//FIXME should be linesize instead of s->width*2 but that is not known before get_buffer() //FIXME should be linesize instead of s->width*2 but that is not known before get_buffer()
CHECKED_ALLOCZ(s->me.scratchpad, (s->width+64)*4*16*2*sizeof(uint8_t)) CHECKED_ALLOCZ(s->me.scratchpad, (s->width+64)*4*16*2*sizeof(uint8_t))
s->me.temp= s->me.scratchpad;
s->rd_scratchpad= s->me.scratchpad; s->rd_scratchpad= s->me.scratchpad;
s->b_scratchpad= s->me.scratchpad; s->b_scratchpad= s->me.scratchpad;
s->obmc_scratchpad= s->me.scratchpad + 16; s->obmc_scratchpad= s->me.scratchpad + 16;
...@@ -315,6 +316,7 @@ static void free_duplicate_context(MpegEncContext *s){ ...@@ -315,6 +316,7 @@ static void free_duplicate_context(MpegEncContext *s){
av_freep(&s->allocated_edge_emu_buffer); s->edge_emu_buffer= NULL; av_freep(&s->allocated_edge_emu_buffer); s->edge_emu_buffer= NULL;
av_freep(&s->me.scratchpad); av_freep(&s->me.scratchpad);
s->me.temp=
s->rd_scratchpad= s->rd_scratchpad=
s->b_scratchpad= s->b_scratchpad=
s->obmc_scratchpad= NULL; s->obmc_scratchpad= NULL;
...@@ -331,6 +333,7 @@ static void backup_duplicate_context(MpegEncContext *bak, MpegEncContext *src){ ...@@ -331,6 +333,7 @@ static void backup_duplicate_context(MpegEncContext *bak, MpegEncContext *src){
COPY(allocated_edge_emu_buffer); COPY(allocated_edge_emu_buffer);
COPY(edge_emu_buffer); COPY(edge_emu_buffer);
COPY(me.scratchpad); COPY(me.scratchpad);
COPY(me.temp);
COPY(rd_scratchpad); COPY(rd_scratchpad);
COPY(b_scratchpad); COPY(b_scratchpad);
COPY(obmc_scratchpad); COPY(obmc_scratchpad);
......
...@@ -4007,6 +4007,7 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -4007,6 +4007,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
s->m.flags = avctx->flags; s->m.flags = avctx->flags;
s->m.bit_rate= avctx->bit_rate; s->m.bit_rate= avctx->bit_rate;
s->m.me.temp =
s->m.me.scratchpad= av_mallocz((avctx->width+64)*2*16*2*sizeof(uint8_t)); s->m.me.scratchpad= av_mallocz((avctx->width+64)*2*16*2*sizeof(uint8_t));
s->m.me.map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t)); s->m.me.map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t));
s->m.me.score_map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t)); s->m.me.score_map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t));
...@@ -4435,6 +4436,7 @@ static av_cold void common_end(SnowContext *s){ ...@@ -4435,6 +4436,7 @@ static av_cold void common_end(SnowContext *s){
av_freep(&s->spatial_dwt_buffer); av_freep(&s->spatial_dwt_buffer);
av_freep(&s->spatial_idwt_buffer); av_freep(&s->spatial_idwt_buffer);
s->m.me.temp= NULL;
av_freep(&s->m.me.scratchpad); av_freep(&s->m.me.scratchpad);
av_freep(&s->m.me.map); av_freep(&s->m.me.map);
av_freep(&s->m.me.score_map); av_freep(&s->m.me.score_map);
......
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