mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-11-01 04:53:04 +08:00 
			
		
		
		
	fftools/ffmpeg: move do_video_stats() to avoid a forward declaration
This commit is contained in:
		| @@ -127,7 +127,6 @@ typedef struct BenchmarkTimeStamps { | |||||||
|     int64_t sys_usec; |     int64_t sys_usec; | ||||||
| } BenchmarkTimeStamps; | } BenchmarkTimeStamps; | ||||||
|  |  | ||||||
| static void do_video_stats(OutputStream *ost, int frame_size); |  | ||||||
| static BenchmarkTimeStamps get_benchmark_time_stamps(void); | static BenchmarkTimeStamps get_benchmark_time_stamps(void); | ||||||
| static int64_t getmaxrss(void); | static int64_t getmaxrss(void); | ||||||
| static int ifilter_has_all_input_formats(FilterGraph *fg); | static int ifilter_has_all_input_formats(FilterGraph *fg); | ||||||
| @@ -831,6 +830,52 @@ static int init_output_stream_wrapper(OutputStream *ost, AVFrame *frame, | |||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static double psnr(double d) | ||||||
|  | { | ||||||
|  |     return -10.0 * log10(d); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void do_video_stats(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->enc_ctx; | ||||||
|  |     frame_number = ost->st->nb_frames; | ||||||
|  |     if (vstats_version <= 1) { | ||||||
|  |         fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number, | ||||||
|  |                 ost->quality / (float)FF_QP2LAMBDA); | ||||||
|  |     } else  { | ||||||
|  |         fprintf(vstats_file, "out= %2d st= %2d frame= %5d q= %2.1f ", ost->file_index, ost->index, frame_number, | ||||||
|  |                 ost->quality / (float)FF_QP2LAMBDA); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (ost->error[0]>=0 && (enc->flags & AV_CODEC_FLAG_PSNR)) | ||||||
|  |         fprintf(vstats_file, "PSNR= %6.2f ", psnr(ost->error[0] / (enc->width * enc->height * 255.0 * 255.0))); | ||||||
|  |  | ||||||
|  |     fprintf(vstats_file,"f_size= %6d ", frame_size); | ||||||
|  |     /* compute pts value */ | ||||||
|  |     ti1 = av_stream_get_end_pts(ost->st) * av_q2d(ost->st->time_base); | ||||||
|  |     if (ti1 < 0.01) | ||||||
|  |         ti1 = 0.01; | ||||||
|  |  | ||||||
|  |     bitrate     = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0; | ||||||
|  |     avg_bitrate = (double)(ost->data_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)ost->data_size / 1024, ti1, bitrate, avg_bitrate); | ||||||
|  |     fprintf(vstats_file, "type= %c\n", av_get_picture_type_char(ost->pict_type)); | ||||||
|  | } | ||||||
|  |  | ||||||
| static int encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame) | static int encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame) | ||||||
| { | { | ||||||
|     AVCodecContext   *enc = ost->enc_ctx; |     AVCodecContext   *enc = ost->enc_ctx; | ||||||
| @@ -1231,52 +1276,6 @@ static void do_video_out(OutputFile *of, | |||||||
|         av_frame_move_ref(ost->last_frame, next_picture); |         av_frame_move_ref(ost->last_frame, next_picture); | ||||||
| } | } | ||||||
|  |  | ||||||
| static double psnr(double d) |  | ||||||
| { |  | ||||||
|     return -10.0 * log10(d); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void do_video_stats(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->enc_ctx; |  | ||||||
|     frame_number = ost->st->nb_frames; |  | ||||||
|     if (vstats_version <= 1) { |  | ||||||
|         fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number, |  | ||||||
|                 ost->quality / (float)FF_QP2LAMBDA); |  | ||||||
|     } else  { |  | ||||||
|         fprintf(vstats_file, "out= %2d st= %2d frame= %5d q= %2.1f ", ost->file_index, ost->index, frame_number, |  | ||||||
|                 ost->quality / (float)FF_QP2LAMBDA); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (ost->error[0]>=0 && (enc->flags & AV_CODEC_FLAG_PSNR)) |  | ||||||
|         fprintf(vstats_file, "PSNR= %6.2f ", psnr(ost->error[0] / (enc->width * enc->height * 255.0 * 255.0))); |  | ||||||
|  |  | ||||||
|     fprintf(vstats_file,"f_size= %6d ", frame_size); |  | ||||||
|     /* compute pts value */ |  | ||||||
|     ti1 = av_stream_get_end_pts(ost->st) * av_q2d(ost->st->time_base); |  | ||||||
|     if (ti1 < 0.01) |  | ||||||
|         ti1 = 0.01; |  | ||||||
|  |  | ||||||
|     bitrate     = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0; |  | ||||||
|     avg_bitrate = (double)(ost->data_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)ost->data_size / 1024, ti1, bitrate, avg_bitrate); |  | ||||||
|     fprintf(vstats_file, "type= %c\n", av_get_picture_type_char(ost->pict_type)); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void finish_output_stream(OutputStream *ost) | static void finish_output_stream(OutputStream *ost) | ||||||
| { | { | ||||||
|     OutputFile *of = output_files[ost->file_index]; |     OutputFile *of = output_files[ost->file_index]; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Anton Khirnov
					Anton Khirnov