diff options
author | Clément Bœsch <clement.boesch@smartjog.com> | 2012-02-07 16:22:20 +0400 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2012-02-10 23:12:52 +0400 |
commit | a78dd826ee7873df8f909d4e18de1f2d83230086 (patch) | |
tree | 6c88f9393b228c75f5af8873afdcbc8afeb07499 /ffmpeg.c | |
parent | cf31060127f486400219d93d67199fdc93b7b77d (diff) |
ffmpeg: move video stats code to do_video_out().
This will allow some simplifications in transcode_video().
Diffstat (limited to 'ffmpeg.c')
-rw-r--r-- | ffmpeg.c | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -1444,18 +1444,20 @@ static void do_video_resample(OutputStream *ost, #endif } +static void do_video_stats(AVFormatContext *os, OutputStream *ost, int frame_size); static void do_video_out(AVFormatContext *s, OutputStream *ost, InputStream *ist, AVFrame *in_picture, - int *frame_size, float quality) + float quality) { int nb_frames, i, ret, format_video_sync; AVFrame *final_picture; AVCodecContext *enc; double sync_ipts; double duration = 0; + int frame_size = 0; enc = ost->st->codec; @@ -1472,8 +1474,6 @@ static void do_video_out(AVFormatContext *s, /* by default, we output a single frame */ nb_frames = 1; - *frame_size = 0; - format_video_sync = video_sync_method; if (format_video_sync == VSYNC_AUTO) format_video_sync = (s->oformat->flags & AVFMT_VARIABLE_FPS) ? ((s->oformat->flags & AVFMT_NOTIMESTAMPS) ? VSYNC_PASSTHROUGH : VSYNC_VFR) : 1; @@ -1571,7 +1571,7 @@ static void do_video_out(AVFormatContext *s, pkt.pts = pkt.dts = AV_NOPTS_VALUE; write_frame(s, &pkt, ost); - *frame_size = pkt.size; + frame_size = pkt.size; video_size += pkt.size; /* if two pass, output log */ @@ -1588,6 +1588,8 @@ static void do_video_out(AVFormatContext *s, */ ost->frame_number++; } + if (vstats_filename && frame_size) + do_video_stats(output_files[ost->file_index].ctx, ost, frame_size); } static double psnr(double d) @@ -2121,7 +2123,6 @@ static int transcode_video(InputStream *ist, AVPacket *pkt, int *got_output, int for (i = 0; i < nb_output_streams; i++) { AVFrame *filtered_frame = NULL; OutputStream *ost = &output_streams[i]; - int frame_size; if (!check_output_constraints(ist, ost) || !ost->encoding_needed) continue; @@ -2150,10 +2151,8 @@ static int transcode_video(InputStream *ist, AVPacket *pkt, int *got_output, int filtered_frame = decoded_frame; #endif - do_video_out(output_files[ost->file_index].ctx, ost, ist, filtered_frame, &frame_size, + do_video_out(output_files[ost->file_index].ctx, ost, ist, filtered_frame, same_quant ? quality : ost->st->codec->global_quality); - if (vstats_filename && frame_size) - do_video_stats(output_files[ost->file_index].ctx, ost, frame_size); #if CONFIG_AVFILTER cont: avfilter_unref_buffer(ost->picref); |