On Wed, Feb 17, 2021 at 12:33 PM Anton Khirnov <an...@khirnov.net> wrote:
> Quoting Paul B Mahol (2021-02-17 11:52:31) > > On Tue, Feb 16, 2021 at 9:26 PM Anton Khirnov <an...@khirnov.net> wrote: > > > @@ -1088,23 +1084,23 @@ static int handle_p_frame_apng(AVCodecContext > > > *avctx, PNGDecContext *s, > > > if (!buffer) > > > return AVERROR(ENOMEM); > > > > > > + ff_thread_await_progress(&s->last_picture, INT_MAX, 0); > > > > > > - // Do the disposal operation specified by the last frame on the > frame > > > - if (s->last_dispose_op != APNG_DISPOSE_OP_PREVIOUS) { > > > - ff_thread_await_progress(&s->last_picture, INT_MAX, 0); > > > - memcpy(buffer, s->last_picture.f->data[0], s->image_linesize * > > > s->height); > > > - > > > - if (s->last_dispose_op == APNG_DISPOSE_OP_BACKGROUND) > > > - for (y = s->last_y_offset; y < s->last_y_offset + > s->last_h; > > > ++y) > > > - memset(buffer + s->image_linesize * y + s->bpp * > > > s->last_x_offset, 0, s->bpp * s->last_w); > > > + // need to reset a rectangle to background: > > > + // create a new writable copy > > > + if (s->last_dispose_op == APNG_DISPOSE_OP_BACKGROUND) { > > > + int ret = av_frame_make_writable(s->last_picture.f); > > > + if (ret < 0) > > > + return ret; > > > > > > - memcpy(s->previous_picture.f->data[0], buffer, > s->image_linesize > > > * s->height); > > > - ff_thread_report_progress(&s->previous_picture, INT_MAX, 0); > > > - } else { > > > - ff_thread_await_progress(&s->previous_picture, INT_MAX, 0); > > > - memcpy(buffer, s->previous_picture.f->data[0], > s->image_linesize > > > * s->height); > > > + for (y = s->last_y_offset; y < s->last_y_offset + s->last_h; > y++) > > > { > > > + memset(s->last_picture.f->data[0] + s->image_linesize * y > + > > > + s->bpp * s->last_x_offset, 0, s->bpp * s->last_w); > > > + } > > > } > > > > > > + memcpy(buffer, s->last_picture.f->data[0], s->image_linesize * > > > s->height); > > > + > > > // Perform blending > > > if (s->blend_op == APNG_BLEND_OP_SOURCE) { > > > for (y = s->y_offset; y < s->y_offset + s->cur_h; ++y) { > > > @@ -1448,22 +1444,17 @@ exit_loop: > > > if (CONFIG_PNG_DECODER && avctx->codec_id != > AV_CODEC_ID_APNG) > > > handle_p_frame_png(s, p); > > > else if (CONFIG_APNG_DECODER && > > > - s->previous_picture.f->width == p->width && > > > - s->previous_picture.f->height== p->height && > > > - s->previous_picture.f->format== p->format && > > > > > > > No explanation provided why those line are removed. > > > > They are removed because previous_picture is removed. As is actually > explained in the commit message. > > But you just replaced previous with last? > -- > Anton Khirnov > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".