[FFmpeg-cvslog] r11131 - trunk/libavcodec/dnxhdenc.c
bcoudurier
subversion
Sun Dec 2 20:20:46 CET 2007
Author: bcoudurier
Date: Sun Dec 2 20:20:46 2007
New Revision: 11131
Log:
fix corner case when qscale 1 bits < frame bits but max bits with worst padding > frame bits
Modified:
trunk/libavcodec/dnxhdenc.c
Modified: trunk/libavcodec/dnxhdenc.c
==============================================================================
--- trunk/libavcodec/dnxhdenc.c (original)
+++ trunk/libavcodec/dnxhdenc.c Sun Dec 2 20:20:46 2007
@@ -671,7 +671,7 @@ static int dnxhd_find_qscale(DNXHDEncCon
// ctx->m.avctx->frame_number, qscale, bits, ctx->frame_bits, last_higher, last_lower);
if (bits < ctx->frame_bits) {
if (qscale == 1)
- break;
+ return 1;
if (last_higher == qscale - 1) {
qscale = last_higher;
break;
@@ -710,8 +710,8 @@ static int dnxhd_rc_cmp(const void *a, c
static int dnxhd_encode_variance(AVCodecContext *avctx, DNXHDEncContext *ctx)
{
int max_bits = 0;
- int x, y;
- if (dnxhd_find_qscale(ctx) < 0)
+ int ret, x, y;
+ if ((ret = dnxhd_find_qscale(ctx)) < 0)
return -1;
for (y = 0; y < ctx->m.mb_height; y++) {
for (x = 0; x < ctx->m.mb_width; x++) {
@@ -730,7 +730,7 @@ static int dnxhd_encode_variance(AVCodec
}
max_bits += 31; //worst padding
}
- if (max_bits > ctx->frame_bits) {
+ if (!ret) {
if (RC_VARIANCE)
avctx->execute(avctx, dnxhd_mb_var_thread, (void**)&ctx->thread[0], NULL, avctx->thread_count);
qsort(ctx->mb_cmp, ctx->m.mb_num, sizeof(RCEntry), dnxhd_rc_cmp);
More information about the ffmpeg-cvslog
mailing list