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>
pull/2/head
Michael Niedermayer 14 years ago committed by Anton Khirnov
parent bbc572a2c4
commit 5da116a3fd
  1. 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++)

Loading…
Cancel
Save