Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Michael Niedermayer authored on 2016/12/09 08:19:19... | ... |
@@ -1096,7 +1096,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
1096 | 1096 |
FFV1Context *f = avctx->priv_data; |
1097 | 1097 |
RangeCoder *const c = &f->slice_context[0]->c; |
1098 | 1098 |
AVFrame *const p = f->picture.f; |
1099 |
- int used_count = 0; |
|
1100 | 1099 |
uint8_t keystate = 128; |
1101 | 1100 |
uint8_t *buf_p; |
1102 | 1101 |
int i, ret; |
... | ... |
@@ -1185,11 +1184,17 @@ FF_ENABLE_DEPRECATION_WARNINGS |
1185 | 1185 |
} |
1186 | 1186 |
} |
1187 | 1187 |
|
1188 |
- for (i = 1; i < f->slice_count; i++) { |
|
1188 |
+ for (i = 0; i < f->slice_count; i++) { |
|
1189 | 1189 |
FFV1Context *fs = f->slice_context[i]; |
1190 |
- uint8_t *start = pkt->data + (pkt->size - used_count) * (int64_t)i / f->slice_count; |
|
1190 |
+ uint8_t *start = pkt->data + pkt->size * (int64_t)i / f->slice_count; |
|
1191 | 1191 |
int len = pkt->size / f->slice_count; |
1192 |
- ff_init_range_encoder(&fs->c, start, len); |
|
1192 |
+ if (i) { |
|
1193 |
+ ff_init_range_encoder(&fs->c, start, len); |
|
1194 |
+ } else { |
|
1195 |
+ av_assert0(fs->c.bytestream_end >= fs->c.bytestream_start + len); |
|
1196 |
+ av_assert0(fs->c.bytestream < fs->c.bytestream_start + len); |
|
1197 |
+ fs->c.bytestream_end = fs->c.bytestream_start + len; |
|
1198 |
+ } |
|
1193 | 1199 |
} |
1194 | 1200 |
avctx->execute(avctx, encode_slice, &f->slice_context[0], NULL, |
1195 | 1201 |
f->slice_count, sizeof(void *)); |