projects
/
libav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
set constant QP from AVCodecContext.global_quality.
[libav.git]
/
libavcodec
/
x264.c
diff --git
a/libavcodec/x264.c
b/libavcodec/x264.c
index
3f3aba6
..
4fc2c64
100644
(file)
--- a/
libavcodec/x264.c
+++ b/
libavcodec/x264.c
@@
-104,7
+104,8
@@
X264_frame(AVCodecContext *ctx, uint8_t *buf, int bufsize, void *data)
break;
}
break;
}
- x4->out_pic.key_frame = x4->out_pic.key_frame == FF_I_TYPE;
+ x4->out_pic.key_frame = pic_out.i_type == X264_TYPE_IDR;
+ x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
return bufsize;
}
return bufsize;
}
@@
-139,6
+140,10
@@
X264_init(AVCodecContext *avctx)
x4->params.rc.i_qp_max = avctx->qmax;
x4->params.rc.i_qp_step = avctx->max_qdiff;
x4->params.rc.i_qp_max = avctx->qmax;
x4->params.rc.i_qp_step = avctx->max_qdiff;
+ if(avctx->flags & CODEC_FLAG_QSCALE && avctx->global_quality > 0)
+ x4->params.rc.i_qp_constant =
+ 12 + 6 * log2((double) avctx->global_quality / FF_QP2LAMBDA);
+
x4->params.i_width = avctx->width;
x4->params.i_height = avctx->height;
x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num;
x4->params.i_width = avctx->width;
x4->params.i_height = avctx->height;
x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num;