mirror of https://git.ffmpeg.org/ffmpeg.git
wmaenc: check final frame size against output packet size
Currently we have an assert() that prevents the frame from being too large, but it is more user-friendly to give an error message instead of aborting on assert(). This condition is quite unlikely due to the minimum bit rate check in encode_init(), but it is still worth having.
This commit is contained in:
parent
dfc4fdedf8
commit
5d652e063b
|
@ -394,11 +394,13 @@ static int encode_superframe(AVCodecContext *avctx,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
encode_frame(s, s->coefs, buf, buf_size, total_gain);
|
if ((i = encode_frame(s, s->coefs, buf, buf_size, total_gain)) >= 0) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "required frame size too large. please "
|
||||||
|
"use a higher bit rate.\n");
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
}
|
||||||
assert((put_bits_count(&s->pb) & 7) == 0);
|
assert((put_bits_count(&s->pb) & 7) == 0);
|
||||||
i= s->block_align - (put_bits_count(&s->pb)+7)/8;
|
while (i++)
|
||||||
assert(i>=0);
|
|
||||||
while(i--)
|
|
||||||
put_bits(&s->pb, 8, 'N');
|
put_bits(&s->pb, 8, 'N');
|
||||||
|
|
||||||
flush_put_bits(&s->pb);
|
flush_put_bits(&s->pb);
|
||||||
|
|
Loading…
Reference in New Issue