diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index d9f5eaf5f4..498c7c022c 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -60,7 +60,7 @@ typedef struct { typedef struct { AVCodecContext *avctx; - AVFrame picture; + const AVFrame *picture; int width, height; ///< image width and height uint8_t cbps[4]; ///< bits per sample in particular components @@ -390,18 +390,18 @@ static void copy_frame(Jpeg2000EncoderContext *s) for (compno = 0; compno < s->ncomponents; compno++){ Jpeg2000Component *comp = tile->comp + compno; int *dst = comp->i_data; - line = s->picture.data[compno] - + comp->coord[1][0] * s->picture.linesize[compno] + line = s->picture->data[compno] + + comp->coord[1][0] * s->picture->linesize[compno] + comp->coord[0][0]; for (y = comp->coord[1][0]; y < comp->coord[1][1]; y++){ uint8_t *ptr = line; for (x = comp->coord[0][0]; x < comp->coord[0][1]; x++) *dst++ = *ptr++ - (1 << 7); - line += s->picture.linesize[compno]; + line += s->picture->linesize[compno]; } } } else{ - line = s->picture.data[0] + tile->comp[0].coord[1][0] * s->picture.linesize[0] + line = s->picture->data[0] + tile->comp[0].coord[1][0] * s->picture->linesize[0] + tile->comp[0].coord[0][0] * s->ncomponents; i = 0; @@ -412,7 +412,7 @@ static void copy_frame(Jpeg2000EncoderContext *s) tile->comp[compno].i_data[i] = *ptr++ - (1 << 7); } } - line += s->picture.linesize[0]; + line += s->picture->linesize[0]; } } } @@ -927,10 +927,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, s->buf = s->buf_start = pkt->data; s->buf_end = pkt->data + pkt->size; - s->picture = *pict; - avctx->coded_frame= &s->picture; + s->picture = pict; - s->lambda = s->picture.quality * LAMBDA_SCALE; + s->lambda = s->picture->quality * LAMBDA_SCALE; copy_frame(s); reinit(s);