提交 7bcc57ad 编写于 作者: R Rostislav Pehlivanov

vc2enc: fix packet underallocation and minimum bitrate with interlacing

This was a regression introduced by commit e7345abe which
enabled full use of the allocated packet but due to the overhead of
using field coding the buffer was too small and triggered warnings and
crashes.
Signed-off-by: NRostislav Pehlivanov <atomnuker@gmail.com>
上级 41985d40
......@@ -987,7 +987,7 @@ static av_cold int vc2_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
s->slice_min_bytes = s->slice_max_bytes - s->slice_max_bytes*(s->tolerance/100.0f);
ret = ff_alloc_packet2(avctx, avpkt, max_frame_bytes*2, 0);
ret = ff_alloc_packet2(avctx, avpkt, max_frame_bytes*3, 0);
if (ret < 0) {
av_log(avctx, AV_LOG_ERROR, "Error getting output packet.\n");
return ret;
......@@ -1197,6 +1197,8 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx)
avctx->time_base.den);
min_bits_per_frame = minimum_frame_bits(s) + 8*sizeof(LIBAVCODEC_IDENT) + 8*40 + 8*20000;
if (bits_per_frame < min_bits_per_frame) {
if (s->interlaced)
min_bits_per_frame += min_bits_per_frame + min_bits_per_frame/2;
avctx->bit_rate = av_rescale(min_bits_per_frame, avctx->time_base.den,
avctx->time_base.num);
av_log(avctx, AV_LOG_WARNING,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册