ffmpeg: factorize quality calculation
Calculate quality value once per stream in print_report(). Also fix segfault, as coded_frame can be NULL. Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
committed by
Anton Khirnov
parent
bbc572a2c4
commit
5da116a3fd
13
ffmpeg.c
13
ffmpeg.c
@@ -1322,26 +1322,25 @@ static void print_report(AVFormatContext **output_files,
|
|||||||
ti1 = 1e10;
|
ti1 = 1e10;
|
||||||
vid = 0;
|
vid = 0;
|
||||||
for(i=0;i<nb_ostreams;i++) {
|
for(i=0;i<nb_ostreams;i++) {
|
||||||
|
float q = -1;
|
||||||
ost = ost_table[i];
|
ost = ost_table[i];
|
||||||
enc = ost->st->codec;
|
enc = ost->st->codec;
|
||||||
|
if (!ost->st->stream_copy && enc->coded_frame)
|
||||||
|
q = enc->coded_frame->quality/(float)FF_QP2LAMBDA;
|
||||||
if (vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
if (vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||||
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "q=%2.1f ",
|
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "q=%2.1f ", q);
|
||||||
!ost->st->stream_copy ?
|
|
||||||
enc->coded_frame->quality/(float)FF_QP2LAMBDA : -1);
|
|
||||||
}
|
}
|
||||||
if (!vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
if (!vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||||
float t = (av_gettime()-timer_start) / 1000000.0;
|
float t = (av_gettime()-timer_start) / 1000000.0;
|
||||||
|
|
||||||
frame_number = ost->frame_number;
|
frame_number = ost->frame_number;
|
||||||
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "frame=%5d fps=%3d q=%3.1f ",
|
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "frame=%5d fps=%3d q=%3.1f ",
|
||||||
frame_number, (t>1)?(int)(frame_number/t+0.5) : 0,
|
frame_number, (t>1)?(int)(frame_number/t+0.5) : 0, q);
|
||||||
!ost->st->stream_copy ?
|
|
||||||
enc->coded_frame->quality/(float)FF_QP2LAMBDA : -1);
|
|
||||||
if(is_last_report)
|
if(is_last_report)
|
||||||
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "L");
|
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "L");
|
||||||
if(qp_hist){
|
if(qp_hist){
|
||||||
int j;
|
int j;
|
||||||
int qp= lrintf(enc->coded_frame->quality/(float)FF_QP2LAMBDA);
|
int qp = lrintf(q);
|
||||||
if(qp>=0 && qp<FF_ARRAY_ELEMS(qp_histogram))
|
if(qp>=0 && qp<FF_ARRAY_ELEMS(qp_histogram))
|
||||||
qp_histogram[qp]++;
|
qp_histogram[qp]++;
|
||||||
for(j=0; j<32; j++)
|
for(j=0; j<32; j++)
|
||||||
|
Reference in New Issue
Block a user