Commit e5212354 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'b9ee5f2c'

* commit 'b9ee5f2c':
  indeo3: replace use of copy_block4 with put_pixels
  mjpegdec: use put_pixels instead of copy_block8

Conflicts:
	libavcodec/mjpegdec.c
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents bcb15e66 b9ee5f2c
...@@ -410,7 +410,8 @@ if (*data_ptr >= last_ptr) \ ...@@ -410,7 +410,8 @@ if (*data_ptr >= last_ptr) \
} }
static int decode_cell_data(Cell *cell, uint8_t *block, uint8_t *ref_block, static int decode_cell_data(Indeo3DecodeContext *ctx, Cell *cell,
uint8_t *block, uint8_t *ref_block,
int pitch, int h_zoom, int v_zoom, int mode, int pitch, int h_zoom, int v_zoom, int mode,
const vqEntry *delta[2], int swap_quads[2], const vqEntry *delta[2], int swap_quads[2],
const uint8_t **data_ptr, const uint8_t *last_ptr) const uint8_t **data_ptr, const uint8_t *last_ptr)
...@@ -656,14 +657,16 @@ static int decode_cell(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ...@@ -656,14 +657,16 @@ static int decode_cell(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
} }
zoom_fac = mode >= 3; zoom_fac = mode >= 3;
error = decode_cell_data(cell, block, ref_block, plane->pitch, 0, zoom_fac, error = decode_cell_data(ctx, cell, block, ref_block, plane->pitch,
mode, delta, swap_quads, &data_ptr, last_ptr); 0, zoom_fac, mode, delta, swap_quads,
&data_ptr, last_ptr);
break; break;
case 10: /*-------------------- MODE 10 (8x8 block processing) ---------------------*/ case 10: /*-------------------- MODE 10 (8x8 block processing) ---------------------*/
case 11: /*----------------- MODE 11 (4x8 INTER block processing) ------------------*/ case 11: /*----------------- MODE 11 (4x8 INTER block processing) ------------------*/
if (mode == 10 && !cell->mv_ptr) { /* MODE 10 INTRA processing */ if (mode == 10 && !cell->mv_ptr) { /* MODE 10 INTRA processing */
error = decode_cell_data(cell, block, ref_block, plane->pitch, 1, 1, error = decode_cell_data(ctx, cell, block, ref_block, plane->pitch,
mode, delta, swap_quads, &data_ptr, last_ptr); 1, 1, mode, delta, swap_quads,
&data_ptr, last_ptr);
} else { /* mode 10 and 11 INTER processing */ } else { /* mode 10 and 11 INTER processing */
if (mode == 11 && !cell->mv_ptr) { if (mode == 11 && !cell->mv_ptr) {
av_log(avctx, AV_LOG_ERROR, "Attempt to use Mode 11 for an INTRA cell!\n"); av_log(avctx, AV_LOG_ERROR, "Attempt to use Mode 11 for an INTRA cell!\n");
...@@ -671,7 +674,7 @@ static int decode_cell(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ...@@ -671,7 +674,7 @@ static int decode_cell(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
} }
zoom_fac = mode == 10; zoom_fac = mode == 10;
error = decode_cell_data(cell, block, ref_block, plane->pitch, error = decode_cell_data(ctx, cell, block, ref_block, plane->pitch,
zoom_fac, 1, mode, delta, swap_quads, zoom_fac, 1, mode, delta, swap_quads,
&data_ptr, last_ptr); &data_ptr, last_ptr);
} }
......
...@@ -987,11 +987,12 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, ...@@ -987,11 +987,12 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor,
return 0; return 0;
} }
static av_always_inline void mjpeg_copy_block(uint8_t *dst, const uint8_t *src, static av_always_inline void mjpeg_copy_block(MJpegDecodeContext *s,
uint8_t *dst, const uint8_t *src,
int linesize, int lowres) int linesize, int lowres)
{ {
switch (lowres) { switch (lowres) {
case 0: copy_block8(dst, src, linesize, linesize, 8); case 0: s->dsp.put_pixels_tab[1][0](dst, src, linesize, 8);
break; break;
case 1: copy_block4(dst, src, linesize, linesize, 4); case 1: copy_block4(dst, src, linesize, linesize, 4);
break; break;
...@@ -1067,8 +1068,9 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah, ...@@ -1067,8 +1068,9 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah,
ptr = data[c] + block_offset; ptr = data[c] + block_offset;
if (!s->progressive) { if (!s->progressive) {
if (copy_mb) if (copy_mb)
mjpeg_copy_block(ptr, reference_data[c] + block_offset, mjpeg_copy_block(s, ptr, reference_data[c] + block_offset,
linesize[c], s->avctx->lowres); linesize[c], s->avctx->lowres);
else { else {
s->dsp.clear_block(s->block); s->dsp.clear_block(s->block);
if (decode_block(s, s->block, i, if (decode_block(s, s->block, i,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment