[FFmpeg-cvslog] r21981 - trunk/libavcodec/bink.c
kostya
subversion
Tue Feb 23 08:01:13 CET 2010
Author: kostya
Date: Tue Feb 23 08:01:13 2010
New Revision: 21981
Log:
cosmetics: reindent after last commit
Modified:
trunk/libavcodec/bink.c
Modified: trunk/libavcodec/bink.c
==============================================================================
--- trunk/libavcodec/bink.c Tue Feb 23 08:00:46 2010 (r21980)
+++ trunk/libavcodec/bink.c Tue Feb 23 08:01:13 2010 (r21981)
@@ -685,131 +685,62 @@ static int bink_decode_plane(BinkContext
DECLARE_ALIGNED_16(uint8_t, ublock[64]);
int coordmap[64];
- const int stride = c->pic.linesize[plane_idx];
- int bw = is_chroma ? (c->avctx->width + 15) >> 4 : (c->avctx->width + 7) >> 3;
- int bh = is_chroma ? (c->avctx->height + 15) >> 4 : (c->avctx->height + 7) >> 3;
- int width = c->avctx->width >> is_chroma;
+ const int stride = c->pic.linesize[plane_idx];
+ int bw = is_chroma ? (c->avctx->width + 15) >> 4 : (c->avctx->width + 7) >> 3;
+ int bh = is_chroma ? (c->avctx->height + 15) >> 4 : (c->avctx->height + 7) >> 3;
+ int width = c->avctx->width >> is_chroma;
- init_lengths(c, FFMAX(width, 8), bw);
- for (i = 0; i < BINK_NB_SRC; i++)
- read_bundle(gb, c, i);
+ init_lengths(c, FFMAX(width, 8), bw);
+ for (i = 0; i < BINK_NB_SRC; i++)
+ read_bundle(gb, c, i);
- ref_start = c->last.data[plane_idx];
- ref_end = c->last.data[plane_idx]
- + (bw - 1 + c->last.linesize[plane_idx] * (bh - 1)) * 8;
+ ref_start = c->last.data[plane_idx];
+ ref_end = c->last.data[plane_idx]
+ + (bw - 1 + c->last.linesize[plane_idx] * (bh - 1)) * 8;
- for (i = 0; i < 64; i++)
- coordmap[i] = (i & 7) + (i >> 3) * stride;
+ for (i = 0; i < 64; i++)
+ coordmap[i] = (i & 7) + (i >> 3) * stride;
- for (by = 0; by < bh; by++) {
- if (read_block_types(c->avctx, gb, &c->bundle[BINK_SRC_BLOCK_TYPES]) < 0)
- return -1;
- if (read_block_types(c->avctx, gb, &c->bundle[BINK_SRC_SUB_BLOCK_TYPES]) < 0)
- return -1;
- if (read_colors(gb, &c->bundle[BINK_SRC_COLORS], c) < 0)
- return -1;
- if (read_patterns(c->avctx, gb, &c->bundle[BINK_SRC_PATTERN]) < 0)
- return -1;
- if (read_motion_values(c->avctx, gb, &c->bundle[BINK_SRC_X_OFF]) < 0)
- return -1;
- if (read_motion_values(c->avctx, gb, &c->bundle[BINK_SRC_Y_OFF]) < 0)
- return -1;
- if (read_dcs(c->avctx, gb, &c->bundle[BINK_SRC_INTRA_DC], DC_START_BITS, 0) < 0)
- return -1;
- if (read_dcs(c->avctx, gb, &c->bundle[BINK_SRC_INTER_DC], DC_START_BITS, 1) < 0)
- return -1;
- if (read_runs(c->avctx, gb, &c->bundle[BINK_SRC_RUN]) < 0)
- return -1;
+ for (by = 0; by < bh; by++) {
+ if (read_block_types(c->avctx, gb, &c->bundle[BINK_SRC_BLOCK_TYPES]) < 0)
+ return -1;
+ if (read_block_types(c->avctx, gb, &c->bundle[BINK_SRC_SUB_BLOCK_TYPES]) < 0)
+ return -1;
+ if (read_colors(gb, &c->bundle[BINK_SRC_COLORS], c) < 0)
+ return -1;
+ if (read_patterns(c->avctx, gb, &c->bundle[BINK_SRC_PATTERN]) < 0)
+ return -1;
+ if (read_motion_values(c->avctx, gb, &c->bundle[BINK_SRC_X_OFF]) < 0)
+ return -1;
+ if (read_motion_values(c->avctx, gb, &c->bundle[BINK_SRC_Y_OFF]) < 0)
+ return -1;
+ if (read_dcs(c->avctx, gb, &c->bundle[BINK_SRC_INTRA_DC], DC_START_BITS, 0) < 0)
+ return -1;
+ if (read_dcs(c->avctx, gb, &c->bundle[BINK_SRC_INTER_DC], DC_START_BITS, 1) < 0)
+ return -1;
+ if (read_runs(c->avctx, gb, &c->bundle[BINK_SRC_RUN]) < 0)
+ return -1;
- if (by == bh)
+ if (by == bh)
+ break;
+ dst = c->pic.data[plane_idx] + 8*by*stride;
+ prev = c->last.data[plane_idx] + 8*by*stride;
+ for (bx = 0; bx < bw; bx++, dst += 8, prev += 8) {
+ blk = get_value(c, BINK_SRC_BLOCK_TYPES);
+ // 16x16 block type on odd line means part of the already decoded block, so skip it
+ if ((by & 1) && blk == SCALED_BLOCK) {
+ bx++;
+ dst += 8;
+ prev += 8;
+ continue;
+ }
+ switch (blk) {
+ case SKIP_BLOCK:
+ c->dsp.put_pixels_tab[1][0](dst, prev, stride, 8);
break;
- dst = c->pic.data[plane_idx] + 8*by*stride;
- prev = c->last.data[plane_idx] + 8*by*stride;
- for (bx = 0; bx < bw; bx++, dst += 8, prev += 8) {
- blk = get_value(c, BINK_SRC_BLOCK_TYPES);
- // 16x16 block type on odd line means part of the already decoded block, so skip it
- if ((by & 1) && blk == SCALED_BLOCK) {
- bx++;
- dst += 8;
- prev += 8;
- continue;
- }
+ case SCALED_BLOCK:
+ blk = get_value(c, BINK_SRC_SUB_BLOCK_TYPES);
switch (blk) {
- case SKIP_BLOCK:
- c->dsp.put_pixels_tab[1][0](dst, prev, stride, 8);
- break;
- case SCALED_BLOCK:
- blk = get_value(c, BINK_SRC_SUB_BLOCK_TYPES);
- switch (blk) {
- case RUN_BLOCK:
- scan = bink_patterns[get_bits(gb, 4)];
- i = 0;
- do {
- int run = get_value(c, BINK_SRC_RUN) + 1;
-
- i += run;
- if (i > 64) {
- av_log(c->avctx, AV_LOG_ERROR, "Run went out of bounds\n");
- return -1;
- }
- if (get_bits1(gb)) {
- v = get_value(c, BINK_SRC_COLORS);
- for (j = 0; j < run; j++)
- ublock[*scan++] = v;
- } else {
- for (j = 0; j < run; j++)
- ublock[*scan++] = get_value(c, BINK_SRC_COLORS);
- }
- } while (i < 63);
- if (i == 63)
- ublock[*scan++] = get_value(c, BINK_SRC_COLORS);
- break;
- case INTRA_BLOCK:
- c->dsp.clear_block(block);
- block[0] = get_value(c, BINK_SRC_INTRA_DC);
- read_dct_coeffs(gb, block, c->scantable.permutated, 1);
- c->dsp.idct(block);
- c->dsp.put_pixels_nonclamped(block, ublock, 8);
- break;
- case FILL_BLOCK:
- v = get_value(c, BINK_SRC_COLORS);
- c->dsp.fill_block_tab[0](dst, v, stride, 16);
- break;
- case PATTERN_BLOCK:
- for (i = 0; i < 2; i++)
- col[i] = get_value(c, BINK_SRC_COLORS);
- for (j = 0; j < 8; j++) {
- v = get_value(c, BINK_SRC_PATTERN);
- for (i = 0; i < 8; i++, v >>= 1)
- ublock[i + j*8] = col[v & 1];
- }
- break;
- case RAW_BLOCK:
- for (j = 0; j < 8; j++)
- for (i = 0; i < 8; i++)
- ublock[i + j*8] = get_value(c, BINK_SRC_COLORS);
- break;
- default:
- av_log(c->avctx, AV_LOG_ERROR, "Incorrect 16x16 block type %d\n", blk);
- return -1;
- }
- if (blk != FILL_BLOCK)
- c->dsp.scale_block(ublock, dst, stride);
- bx++;
- dst += 8;
- prev += 8;
- break;
- case MOTION_BLOCK:
- xoff = get_value(c, BINK_SRC_X_OFF);
- yoff = get_value(c, BINK_SRC_Y_OFF);
- ref = prev + xoff + yoff * stride;
- if (ref < ref_start || ref > ref_end) {
- av_log(c->avctx, AV_LOG_ERROR, "Copy out of bounds @%d, %d\n",
- bx*8 + xoff, by*8 + yoff);
- return -1;
- }
- c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
- break;
case RUN_BLOCK:
scan = bink_patterns[get_bits(gb, 4)];
i = 0;
@@ -824,72 +755,141 @@ static int bink_decode_plane(BinkContext
if (get_bits1(gb)) {
v = get_value(c, BINK_SRC_COLORS);
for (j = 0; j < run; j++)
- dst[coordmap[*scan++]] = v;
+ ublock[*scan++] = v;
} else {
for (j = 0; j < run; j++)
- dst[coordmap[*scan++]] = get_value(c, BINK_SRC_COLORS);
+ ublock[*scan++] = get_value(c, BINK_SRC_COLORS);
}
} while (i < 63);
if (i == 63)
- dst[coordmap[*scan++]] = get_value(c, BINK_SRC_COLORS);
- break;
- case RESIDUE_BLOCK:
- xoff = get_value(c, BINK_SRC_X_OFF);
- yoff = get_value(c, BINK_SRC_Y_OFF);
- ref = prev + xoff + yoff * stride;
- if (ref < ref_start || ref > ref_end) {
- av_log(c->avctx, AV_LOG_ERROR, "Copy out of bounds @%d, %d\n",
- bx*8 + xoff, by*8 + yoff);
- return -1;
- }
- c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
- c->dsp.clear_block(block);
- v = get_bits(gb, 7);
- read_residue(gb, block, v);
- c->dsp.add_pixels8(dst, block, stride);
+ ublock[*scan++] = get_value(c, BINK_SRC_COLORS);
break;
case INTRA_BLOCK:
c->dsp.clear_block(block);
block[0] = get_value(c, BINK_SRC_INTRA_DC);
read_dct_coeffs(gb, block, c->scantable.permutated, 1);
- c->dsp.idct_put(dst, stride, block);
+ c->dsp.idct(block);
+ c->dsp.put_pixels_nonclamped(block, ublock, 8);
break;
case FILL_BLOCK:
v = get_value(c, BINK_SRC_COLORS);
- c->dsp.fill_block_tab[1](dst, v, stride, 8);
- break;
- case INTER_BLOCK:
- xoff = get_value(c, BINK_SRC_X_OFF);
- yoff = get_value(c, BINK_SRC_Y_OFF);
- ref = prev + xoff + yoff * stride;
- c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
- c->dsp.clear_block(block);
- block[0] = get_value(c, BINK_SRC_INTER_DC);
- read_dct_coeffs(gb, block, c->scantable.permutated, 0);
- c->dsp.idct_add(dst, stride, block);
+ c->dsp.fill_block_tab[0](dst, v, stride, 16);
break;
case PATTERN_BLOCK:
for (i = 0; i < 2; i++)
col[i] = get_value(c, BINK_SRC_COLORS);
- for (i = 0; i < 8; i++) {
+ for (j = 0; j < 8; j++) {
v = get_value(c, BINK_SRC_PATTERN);
- for (j = 0; j < 8; j++, v >>= 1)
- dst[i*stride + j] = col[v & 1];
+ for (i = 0; i < 8; i++, v >>= 1)
+ ublock[i + j*8] = col[v & 1];
}
break;
case RAW_BLOCK:
- for (i = 0; i < 8; i++)
- memcpy(dst + i*stride, c->bundle[BINK_SRC_COLORS].cur_ptr + i*8, 8);
- c->bundle[BINK_SRC_COLORS].cur_ptr += 64;
+ for (j = 0; j < 8; j++)
+ for (i = 0; i < 8; i++)
+ ublock[i + j*8] = get_value(c, BINK_SRC_COLORS);
break;
default:
- av_log(c->avctx, AV_LOG_ERROR, "Unknown block type %d\n", blk);
+ av_log(c->avctx, AV_LOG_ERROR, "Incorrect 16x16 block type %d\n", blk);
return -1;
}
+ if (blk != FILL_BLOCK)
+ c->dsp.scale_block(ublock, dst, stride);
+ bx++;
+ dst += 8;
+ prev += 8;
+ break;
+ case MOTION_BLOCK:
+ xoff = get_value(c, BINK_SRC_X_OFF);
+ yoff = get_value(c, BINK_SRC_Y_OFF);
+ ref = prev + xoff + yoff * stride;
+ if (ref < ref_start || ref > ref_end) {
+ av_log(c->avctx, AV_LOG_ERROR, "Copy out of bounds @%d, %d\n",
+ bx*8 + xoff, by*8 + yoff);
+ return -1;
+ }
+ c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
+ break;
+ case RUN_BLOCK:
+ scan = bink_patterns[get_bits(gb, 4)];
+ i = 0;
+ do {
+ int run = get_value(c, BINK_SRC_RUN) + 1;
+
+ i += run;
+ if (i > 64) {
+ av_log(c->avctx, AV_LOG_ERROR, "Run went out of bounds\n");
+ return -1;
+ }
+ if (get_bits1(gb)) {
+ v = get_value(c, BINK_SRC_COLORS);
+ for (j = 0; j < run; j++)
+ dst[coordmap[*scan++]] = v;
+ } else {
+ for (j = 0; j < run; j++)
+ dst[coordmap[*scan++]] = get_value(c, BINK_SRC_COLORS);
+ }
+ } while (i < 63);
+ if (i == 63)
+ dst[coordmap[*scan++]] = get_value(c, BINK_SRC_COLORS);
+ break;
+ case RESIDUE_BLOCK:
+ xoff = get_value(c, BINK_SRC_X_OFF);
+ yoff = get_value(c, BINK_SRC_Y_OFF);
+ ref = prev + xoff + yoff * stride;
+ if (ref < ref_start || ref > ref_end) {
+ av_log(c->avctx, AV_LOG_ERROR, "Copy out of bounds @%d, %d\n",
+ bx*8 + xoff, by*8 + yoff);
+ return -1;
+ }
+ c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
+ c->dsp.clear_block(block);
+ v = get_bits(gb, 7);
+ read_residue(gb, block, v);
+ c->dsp.add_pixels8(dst, block, stride);
+ break;
+ case INTRA_BLOCK:
+ c->dsp.clear_block(block);
+ block[0] = get_value(c, BINK_SRC_INTRA_DC);
+ read_dct_coeffs(gb, block, c->scantable.permutated, 1);
+ c->dsp.idct_put(dst, stride, block);
+ break;
+ case FILL_BLOCK:
+ v = get_value(c, BINK_SRC_COLORS);
+ c->dsp.fill_block_tab[1](dst, v, stride, 8);
+ break;
+ case INTER_BLOCK:
+ xoff = get_value(c, BINK_SRC_X_OFF);
+ yoff = get_value(c, BINK_SRC_Y_OFF);
+ ref = prev + xoff + yoff * stride;
+ c->dsp.put_pixels_tab[1][0](dst, ref, stride, 8);
+ c->dsp.clear_block(block);
+ block[0] = get_value(c, BINK_SRC_INTER_DC);
+ read_dct_coeffs(gb, block, c->scantable.permutated, 0);
+ c->dsp.idct_add(dst, stride, block);
+ break;
+ case PATTERN_BLOCK:
+ for (i = 0; i < 2; i++)
+ col[i] = get_value(c, BINK_SRC_COLORS);
+ for (i = 0; i < 8; i++) {
+ v = get_value(c, BINK_SRC_PATTERN);
+ for (j = 0; j < 8; j++, v >>= 1)
+ dst[i*stride + j] = col[v & 1];
+ }
+ break;
+ case RAW_BLOCK:
+ for (i = 0; i < 8; i++)
+ memcpy(dst + i*stride, c->bundle[BINK_SRC_COLORS].cur_ptr + i*8, 8);
+ c->bundle[BINK_SRC_COLORS].cur_ptr += 64;
+ break;
+ default:
+ av_log(c->avctx, AV_LOG_ERROR, "Unknown block type %d\n", blk);
+ return -1;
}
}
- if (get_bits_count(gb) & 0x1F) //next plane data starts at 32-bit boundary
- skip_bits_long(gb, 32 - (get_bits_count(gb) & 0x1F));
+ }
+ if (get_bits_count(gb) & 0x1F) //next plane data starts at 32-bit boundary
+ skip_bits_long(gb, 32 - (get_bits_count(gb) & 0x1F));
return 0;
}
More information about the ffmpeg-cvslog
mailing list