mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
ffv1: store slice size with all slices in 1.3
This simplifies handling by removing a special case. Its also needed to make the next change possible. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
c24ca7b88e
commit
3ed6917ab8
@ -1290,7 +1290,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
|||||||
flush_put_bits(&fs->pb); //nicer padding FIXME
|
flush_put_bits(&fs->pb); //nicer padding FIXME
|
||||||
bytes= fs->ac_byte_count + (put_bits_count(&fs->pb)+7)/8;
|
bytes= fs->ac_byte_count + (put_bits_count(&fs->pb)+7)/8;
|
||||||
}
|
}
|
||||||
if(i>0 || f->ec){
|
if(i>0 || f->version>2){
|
||||||
av_assert0(bytes < pkt->size/f->slice_count);
|
av_assert0(bytes < pkt->size/f->slice_count);
|
||||||
memmove(buf_p, fs->c.bytestream_start, bytes);
|
memmove(buf_p, fs->c.bytestream_start, bytes);
|
||||||
av_assert0(bytes < (1<<24));
|
av_assert0(bytes < (1<<24));
|
||||||
@ -1992,8 +1992,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
|
|||||||
int trailer = 3 + 5*!!f->ec;
|
int trailer = 3 + 5*!!f->ec;
|
||||||
int v;
|
int v;
|
||||||
|
|
||||||
if(i || f->ec) v = AV_RB24(buf_p-trailer)+trailer;
|
if(i || f->version>2) v = AV_RB24(buf_p-trailer)+trailer;
|
||||||
else v = buf_p - c->bytestream_start;
|
else v = buf_p - c->bytestream_start;
|
||||||
if(buf_p - c->bytestream_start < v){
|
if(buf_p - c->bytestream_start < v){
|
||||||
av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n");
|
av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user