Hi, On Thu, Mar 24, 2011 at 12:14 PM, Kostya <[email protected]> wrote: > On Thu, Mar 24, 2011 at 12:09:10PM -0400, Ronald S. Bultje wrote: >> Fixes "make THREADS=2 fate-mpeg2-field-enc". >> --- >> libavcodec/mpeg12.c | 14 +++++++++++++- >> 1 files changed, 13 insertions(+), 1 deletions(-) >> >> diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c >> index c60826b..baeb25d 100644 >> --- a/libavcodec/mpeg12.c >> +++ b/libavcodec/mpeg12.c >> @@ -1882,7 +1882,9 @@ static int slice_decode_thread(AVCodecContext *c, void >> *arg){ >> >> start_code= -1; >> buf = ff_find_start_code(buf, s->gb.buffer_end, &start_code); >> - mb_y= start_code - SLICE_MIN_START_CODE; >> + mb_y= (start_code - SLICE_MIN_START_CODE) << field_pic; >> + if(s->picture_structure == PICT_BOTTOM_FIELD) >> + mb_y++; >> if(mb_y < 0 || mb_y >= s->end_mb_y) >> return -1; >> } >> @@ -2299,6 +2301,16 @@ static int decode_chunks(AVCodecContext *avctx, >> break; >> >> case PICTURE_START_CODE: >> + if (avctx->thread_count > 1 && s->slice_count) { >> + int i; >> + >> + avctx->execute(avctx, slice_decode_thread, >> + s2->thread_context, NULL, >> + s->slice_count, sizeof(void*)); >> + for(i = 0; i < s->slice_count; i++) >> + s2->error_count += s2->thread_context[i]->error_count; >> + s->slice_count = 0; >> + } >> if(last_code == 0 || last_code == SLICE_MIN_START_CODE){ >> if(mpeg_decode_postinit(avctx) < 0){ >> av_log(avctx, AV_LOG_ERROR, "mpeg_decode_postinit() >> failure\n"); >> -- > > ok
Thanks, pushed with indenting changes suggested on IRC. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
