On Thu, Mar 24, 2011 at 11:57:09AM -0400, Ronald S. Bultje wrote:
> Fixes "make THREADS=2 fate-mpeg2-field-enc".
> ---
> libavcodec/mpeg12.c | 12 +++++++++++-
> 1 files changed, 11 insertions(+), 1 deletions(-)
>
> diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
> index c60826b..3f12852 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,14 @@ 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[0], NULL, s->slice_count, sizeof(void*));
^^ =
s2->thread_context
and please break this line
> + for(i=0; i<s->slice_count; i++)
please add whitespaces (or remove around if above ;)
> + 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");
> --
Except for these nits looks reasonable
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel