- uint8_t *this_line = p-> data[0] + line*p-> linesize[0] +
- (width - 1)*s->pixel_size;
- uint8_t *prev_line = s->previous_frame->data[0] + line * s->previous_frame->linesize[0] +
- (width - 1)*s->pixel_size;
+ const uint8_t *this_line = p->data[0] + line * p->linesize[0] + width * s->pixel_size;
+ /* There might be no earlier frame if the current frame is a keyframe.
+ * So just use a pointer to the current frame to avoid a check
+ * to avoid NULL - s->pixel_size (which is undefined behaviour). */
+ const uint8_t *prev_line = s->key_frame ? this_line
+ : s->previous_frame->data[0]
+ + line * s->previous_frame->linesize[0]
+ + width * s->pixel_size;