|
|
|
@ -475,8 +475,8 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) |
|
|
|
|
GetBitContext gb; |
|
|
|
|
BlockInfo mb_data[5 * DV_MAX_BPM], *mb, *mb1; |
|
|
|
|
LOCAL_ALIGNED_16(DCTELEM, sblock, [5*DV_MAX_BPM], [64]); |
|
|
|
|
LOCAL_ALIGNED_16(uint8_t, mb_bit_buffer, [80 + 4]); /* allow some slack */ |
|
|
|
|
LOCAL_ALIGNED_16(uint8_t, vs_bit_buffer, [5 * 80 + 4]); /* allow some slack */ |
|
|
|
|
LOCAL_ALIGNED_16(uint8_t, mb_bit_buffer, [ 80 + FF_INPUT_BUFFER_PADDING_SIZE]); /* allow some slack */ |
|
|
|
|
LOCAL_ALIGNED_16(uint8_t, vs_bit_buffer, [5*80 + FF_INPUT_BUFFER_PADDING_SIZE]); /* allow some slack */ |
|
|
|
|
const int log2_blocksize = 3-s->avctx->lowres; |
|
|
|
|
int is_field_mode[5]; |
|
|
|
|
|
|
|
|
@ -543,6 +543,7 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) |
|
|
|
|
block = block1; |
|
|
|
|
mb = mb1; |
|
|
|
|
init_get_bits(&gb, mb_bit_buffer, put_bits_count(&pb)); |
|
|
|
|
put_bits32(&pb, 0); // padding must be zero'ed
|
|
|
|
|
flush_put_bits(&pb); |
|
|
|
|
for (j = 0; j < s->sys->bpm; j++, block += 64, mb++) { |
|
|
|
|
if (mb->pos < 64 && get_bits_left(&gb) > 0) { |
|
|
|
@ -563,6 +564,7 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) |
|
|
|
|
block = &sblock[0][0]; |
|
|
|
|
mb = mb_data; |
|
|
|
|
init_get_bits(&gb, vs_bit_buffer, put_bits_count(&vs_pb)); |
|
|
|
|
put_bits32(&vs_pb, 0); // padding must be zero'ed
|
|
|
|
|
flush_put_bits(&vs_pb); |
|
|
|
|
for (mb_index = 0; mb_index < 5; mb_index++) { |
|
|
|
|
for (j = 0; j < s->sys->bpm; j++) { |
|
|
|
|