summaryrefslogtreecommitdiff
path: root/libavcodec/wmaenc.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-03-02 16:42:21 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2012-03-03 18:20:10 -0500
commit5d652e063bd3a180f9de8915e5137aa4f938846d (patch)
tree9f5f74a7260c1e8aaaa182f7edd05eb0ffcf438b /libavcodec/wmaenc.c
parentdfc4fdedf8cfc56a505579b1f2c1c5efbce4b97e (diff)
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.
Diffstat (limited to 'libavcodec/wmaenc.c')
-rw-r--r--libavcodec/wmaenc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c
index 5135b982aa..c00f13623d 100644
--- a/libavcodec/wmaenc.c
+++ b/libavcodec/wmaenc.c
@@ -394,11 +394,13 @@ static int encode_superframe(AVCodecContext *avctx,
}
#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);
- i= s->block_align - (put_bits_count(&s->pb)+7)/8;
- assert(i>=0);
- while(i--)
+ while (i++)
put_bits(&s->pb, 8, 'N');
flush_put_bits(&s->pb);