dvenc: do not call dsputil functions with stride not a multiple of 16

Allowing dsputil functions to assume the stride is a multiple of 16
even for smaller block sizes can simplify their implementation.
This appears to be the only place this guarantee is not met.

Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
Mans Rullgard 2012-04-27 02:25:42 +01:00
parent f7ff099997
commit c75eca9d37

View File

@ -662,7 +662,7 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg)
int mb_x, mb_y, c_offset, linesize, y_stride; int mb_x, mb_y, c_offset, linesize, y_stride;
uint8_t* y_ptr; uint8_t* y_ptr;
uint8_t* dif; uint8_t* dif;
LOCAL_ALIGNED_8(uint8_t, scratch, [64]); LOCAL_ALIGNED_8(uint8_t, scratch, [128]);
EncBlockInfo enc_blks[5*DV_MAX_BPM]; EncBlockInfo enc_blks[5*DV_MAX_BPM];
PutBitContext pbs[5*DV_MAX_BPM]; PutBitContext pbs[5*DV_MAX_BPM];
PutBitContext* pb; PutBitContext* pb;
@ -717,10 +717,10 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg)
b[0] = c_ptr[0]; b[1] = c_ptr[1]; b[2] = c_ptr[2]; b[3] = c_ptr[3]; b[0] = c_ptr[0]; b[1] = c_ptr[1]; b[2] = c_ptr[2]; b[3] = c_ptr[3];
b[4] = d[0]; b[5] = d[1]; b[6] = d[2]; b[7] = d[3]; b[4] = d[0]; b[5] = d[1]; b[6] = d[2]; b[7] = d[3];
c_ptr += linesize; c_ptr += linesize;
b += 8; b += 16;
} }
c_ptr = scratch; c_ptr = scratch;
linesize = 8; linesize = 16;
} }
vs_bit_size += dv_init_enc_block( enc_blk++, c_ptr , linesize, s, 1); vs_bit_size += dv_init_enc_block( enc_blk++, c_ptr , linesize, s, 1);