mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 00:32:31 +00:00
factorize & 0x0F
Originally committed as revision 8675 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bee4f778ae
commit
fb12fca35b
@ -121,8 +121,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
||||
AVFrame * const oldpic = &c93->pictures[c93->currentpic^1];
|
||||
AVFrame *picture = data;
|
||||
uint8_t *out;
|
||||
int stride, i, x, y;
|
||||
C93BlockType bt = 0;
|
||||
int stride, i, x, y, bt = 0;
|
||||
|
||||
c93->currentpic ^= 1;
|
||||
|
||||
@ -161,11 +160,13 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
||||
uint8_t *copy_from = oldpic->data[0];
|
||||
unsigned int offset, j;
|
||||
uint8_t cols[4], grps[4];
|
||||
C93BlockType block_type;
|
||||
|
||||
if (!bt)
|
||||
bt = *buf++;
|
||||
|
||||
switch (bt & 0x0F) {
|
||||
block_type= bt & 0x0F;
|
||||
switch (block_type) {
|
||||
case C93_8X8_FROM_PREV:
|
||||
offset = bytestream_get_le16(&buf);
|
||||
if (copy_block(avctx, out, copy_from, offset, 8, stride))
|
||||
@ -199,11 +200,11 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
||||
case C93_4X4_4COLOR_GRP:
|
||||
for (j = 0; j < 8; j += 4) {
|
||||
for (i = 0; i < 8; i += 4) {
|
||||
if ((bt & 0x0F) == C93_4X4_2COLOR) {
|
||||
if (block_type == C93_4X4_2COLOR) {
|
||||
bytestream_get_buffer(&buf, cols, 2);
|
||||
draw_n_color(out + i + j*stride, stride, 4, 4,
|
||||
1, cols, NULL, bytestream_get_le16(&buf));
|
||||
} else if ((bt & 0x0F) == C93_4X4_4COLOR) {
|
||||
} else if (block_type == C93_4X4_4COLOR) {
|
||||
bytestream_get_buffer(&buf, cols, 4);
|
||||
draw_n_color(out + i + j*stride, stride, 4, 4,
|
||||
2, cols, NULL, bytestream_get_le32(&buf));
|
||||
@ -226,7 +227,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
||||
|
||||
default:
|
||||
av_log(avctx, AV_LOG_ERROR, "unexpected type %x at %dx%d\n",
|
||||
bt & 0x0F, x, y);
|
||||
block_type, x, y);
|
||||
return -1;
|
||||
}
|
||||
bt >>= 4;
|
||||
|
Loading…
Reference in New Issue
Block a user