|
|
|
@ -1959,6 +1959,7 @@ static void do_video_out(AVFormatContext *s, OutputStream *ost, |
|
|
|
|
AVFrame *in_picture, float quality) |
|
|
|
|
{ |
|
|
|
|
int nb_frames, i, ret, format_video_sync; |
|
|
|
|
AVPacket pkt; |
|
|
|
|
AVCodecContext *enc; |
|
|
|
|
double sync_ipts, delta; |
|
|
|
|
double duration = 0; |
|
|
|
@ -2015,9 +2016,8 @@ static void do_video_out(AVFormatContext *s, OutputStream *ost, |
|
|
|
|
av_log(NULL, AV_LOG_VERBOSE, "*** %d dup!\n", nb_frames - 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* duplicates frame if needed */ |
|
|
|
|
for (i = 0; i < nb_frames; i++) { |
|
|
|
|
AVPacket pkt; |
|
|
|
|
|
|
|
|
|
duplicate_frame: |
|
|
|
|
av_init_packet(&pkt); |
|
|
|
|
pkt.data = NULL; |
|
|
|
|
pkt.size = 0; |
|
|
|
@ -2103,7 +2103,10 @@ static void do_video_out(AVFormatContext *s, OutputStream *ost, |
|
|
|
|
* flush, we need to limit them here, before they go into encoder. |
|
|
|
|
*/ |
|
|
|
|
ost->frame_number++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(--nb_frames) |
|
|
|
|
goto duplicate_frame; |
|
|
|
|
|
|
|
|
|
if (vstats_filename && frame_size) |
|
|
|
|
do_video_stats(output_files[ost->file_index]->ctx, ost, frame_size); |
|
|
|
|
} |
|
|
|
|