mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
flashsv: Refactor a little
This commit is contained in:
parent
50aef03b24
commit
4a64e67988
@ -197,12 +197,15 @@ static int flashsv_decode_block(AVCodecContext *avctx, AVPacket *avpkt,
|
||||
s->blocks[blk_idx].pos = s->keyframedata + (get_bits_count(gb) / 8);
|
||||
s->blocks[blk_idx].size = block_size;
|
||||
}
|
||||
|
||||
y_pos += s->diff_start;
|
||||
|
||||
if (!s->color_depth) {
|
||||
/* Flash Screen Video stores the image upside down, so copy
|
||||
* lines to destination in reverse order. */
|
||||
for (k = 1; k <= s->diff_height; k++) {
|
||||
memcpy(s->frame.data[0] + x_pos * 3 +
|
||||
(s->image_height - y_pos - s->diff_start - k) * s->frame.linesize[0],
|
||||
(s->image_height - y_pos - k) * s->frame.linesize[0],
|
||||
line, width * 3);
|
||||
/* advance source pointer to next line */
|
||||
line += width * 3;
|
||||
@ -210,7 +213,7 @@ static int flashsv_decode_block(AVCodecContext *avctx, AVPacket *avpkt,
|
||||
} else {
|
||||
/* hybrid 15-bit/palette mode */
|
||||
decode_hybrid(s->tmpblock, s->frame.data[0],
|
||||
s->image_height - (y_pos + 1 + s->diff_start + s->diff_height),
|
||||
s->image_height - (y_pos + 1 + s->diff_height),
|
||||
x_pos, s->diff_height, width,
|
||||
s->frame.linesize[0], s->pal);
|
||||
}
|
||||
@ -409,10 +412,11 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
|
||||
int k;
|
||||
int off = (s->image_height - y_pos - 1) * s->frame.linesize[0];
|
||||
|
||||
for (k = 0; k < cur_blk_height; k++)
|
||||
memcpy(s->frame.data[0] + off - k*s->frame.linesize[0] + x_pos*3,
|
||||
s->keyframe + off - k*s->frame.linesize[0] + x_pos*3,
|
||||
for (k = 0; k < cur_blk_height; k++) {
|
||||
int x = off - k * s->frame.linesize[0] + x_pos * 3;
|
||||
memcpy(s->frame.data[0] + x, s->keyframe + x,
|
||||
cur_blk_width * 3);
|
||||
}
|
||||
}
|
||||
|
||||
/* skip unchanged blocks, which have size 0 */
|
||||
|
Loading…
Reference in New Issue
Block a user