mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-23 19:49:56 +00:00
ffmpeg: move do_video_stats() above do_video_out().
This avoid a forward declaration.
This commit is contained in:
parent
a78dd826ee
commit
9303b794b8
85
ffmpeg.c
85
ffmpeg.c
@ -1444,7 +1444,48 @@ static void do_video_resample(OutputStream *ost,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_video_stats(AVFormatContext *os, OutputStream *ost, int frame_size);
|
static double psnr(double d)
|
||||||
|
{
|
||||||
|
return -10.0 * log(d) / log(10.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void do_video_stats(AVFormatContext *os, OutputStream *ost,
|
||||||
|
int frame_size)
|
||||||
|
{
|
||||||
|
AVCodecContext *enc;
|
||||||
|
int frame_number;
|
||||||
|
double ti1, bitrate, avg_bitrate;
|
||||||
|
|
||||||
|
/* this is executed just the first time do_video_stats is called */
|
||||||
|
if (!vstats_file) {
|
||||||
|
vstats_file = fopen(vstats_filename, "w");
|
||||||
|
if (!vstats_file) {
|
||||||
|
perror("fopen");
|
||||||
|
exit_program(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enc = ost->st->codec;
|
||||||
|
if (enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||||
|
frame_number = ost->frame_number;
|
||||||
|
fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number, enc->coded_frame->quality / (float)FF_QP2LAMBDA);
|
||||||
|
if (enc->flags&CODEC_FLAG_PSNR)
|
||||||
|
fprintf(vstats_file, "PSNR= %6.2f ", psnr(enc->coded_frame->error[0] / (enc->width * enc->height * 255.0 * 255.0)));
|
||||||
|
|
||||||
|
fprintf(vstats_file,"f_size= %6d ", frame_size);
|
||||||
|
/* compute pts value */
|
||||||
|
ti1 = ost->sync_opts * av_q2d(enc->time_base);
|
||||||
|
if (ti1 < 0.01)
|
||||||
|
ti1 = 0.01;
|
||||||
|
|
||||||
|
bitrate = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0;
|
||||||
|
avg_bitrate = (double)(video_size * 8) / ti1 / 1000.0;
|
||||||
|
fprintf(vstats_file, "s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s ",
|
||||||
|
(double)video_size / 1024, ti1, bitrate, avg_bitrate);
|
||||||
|
fprintf(vstats_file, "type= %c\n", av_get_picture_type_char(enc->coded_frame->pict_type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void do_video_out(AVFormatContext *s,
|
static void do_video_out(AVFormatContext *s,
|
||||||
OutputStream *ost,
|
OutputStream *ost,
|
||||||
@ -1592,48 +1633,6 @@ static void do_video_out(AVFormatContext *s,
|
|||||||
do_video_stats(output_files[ost->file_index].ctx, ost, frame_size);
|
do_video_stats(output_files[ost->file_index].ctx, ost, frame_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static double psnr(double d)
|
|
||||||
{
|
|
||||||
return -10.0 * log(d) / log(10.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void do_video_stats(AVFormatContext *os, OutputStream *ost,
|
|
||||||
int frame_size)
|
|
||||||
{
|
|
||||||
AVCodecContext *enc;
|
|
||||||
int frame_number;
|
|
||||||
double ti1, bitrate, avg_bitrate;
|
|
||||||
|
|
||||||
/* this is executed just the first time do_video_stats is called */
|
|
||||||
if (!vstats_file) {
|
|
||||||
vstats_file = fopen(vstats_filename, "w");
|
|
||||||
if (!vstats_file) {
|
|
||||||
perror("fopen");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enc = ost->st->codec;
|
|
||||||
if (enc->codec_type == AVMEDIA_TYPE_VIDEO) {
|
|
||||||
frame_number = ost->frame_number;
|
|
||||||
fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number, enc->coded_frame->quality / (float)FF_QP2LAMBDA);
|
|
||||||
if (enc->flags&CODEC_FLAG_PSNR)
|
|
||||||
fprintf(vstats_file, "PSNR= %6.2f ", psnr(enc->coded_frame->error[0] / (enc->width * enc->height * 255.0 * 255.0)));
|
|
||||||
|
|
||||||
fprintf(vstats_file,"f_size= %6d ", frame_size);
|
|
||||||
/* compute pts value */
|
|
||||||
ti1 = ost->sync_opts * av_q2d(enc->time_base);
|
|
||||||
if (ti1 < 0.01)
|
|
||||||
ti1 = 0.01;
|
|
||||||
|
|
||||||
bitrate = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0;
|
|
||||||
avg_bitrate = (double)(video_size * 8) / ti1 / 1000.0;
|
|
||||||
fprintf(vstats_file, "s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s ",
|
|
||||||
(double)video_size / 1024, ti1, bitrate, avg_bitrate);
|
|
||||||
fprintf(vstats_file, "type= %c\n", av_get_picture_type_char(enc->coded_frame->pict_type));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_report(OutputFile *output_files,
|
static void print_report(OutputFile *output_files,
|
||||||
OutputStream *ost_table, int nb_ostreams,
|
OutputStream *ost_table, int nb_ostreams,
|
||||||
int is_last_report, int64_t timer_start, int64_t cur_time)
|
int is_last_report, int64_t timer_start, int64_t cur_time)
|
||||||
|
Loading…
Reference in New Issue
Block a user