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:
Justin Ruggles 2012-03-02 16:42:21 -05:00
parent dfc4fdedf8
commit 5d652e063b
1 changed files with 6 additions and 4 deletions

View File

@ -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);