|
|
|
@ -3149,6 +3149,15 @@ static int transcode_init(void) |
|
|
|
|
ist->decoding_needed = 1; |
|
|
|
|
ost->encoding_needed = 1; |
|
|
|
|
|
|
|
|
|
if (codec->codec_type == AVMEDIA_TYPE_VIDEO) { |
|
|
|
|
if (ist && !ost->frame_rate.num) |
|
|
|
|
ost->frame_rate = ist->st->r_frame_rate.num ? ist->st->r_frame_rate : (AVRational){25, 1}; |
|
|
|
|
if (ost->enc && ost->enc->supported_framerates && !ost->force_fps) { |
|
|
|
|
int idx = av_find_nearest_q_idx(ost->frame_rate, ost->enc->supported_framerates); |
|
|
|
|
ost->frame_rate = ost->enc->supported_framerates[idx]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!ost->filter && |
|
|
|
|
(codec->codec_type == AVMEDIA_TYPE_VIDEO || |
|
|
|
|
codec->codec_type == AVMEDIA_TYPE_AUDIO)) { |
|
|
|
@ -3169,12 +3178,6 @@ static int transcode_init(void) |
|
|
|
|
codec->time_base = (AVRational){ 1, codec->sample_rate }; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
if (ist && !ost->frame_rate.num) |
|
|
|
|
ost->frame_rate = ist->st->r_frame_rate.num ? ist->st->r_frame_rate : (AVRational){25, 1}; |
|
|
|
|
if (ost->enc && ost->enc->supported_framerates && !ost->force_fps) { |
|
|
|
|
int idx = av_find_nearest_q_idx(ost->frame_rate, ost->enc->supported_framerates); |
|
|
|
|
ost->frame_rate = ost->enc->supported_framerates[idx]; |
|
|
|
|
} |
|
|
|
|
codec->time_base = (AVRational){ost->frame_rate.den, ost->frame_rate.num}; |
|
|
|
|
if ( av_q2d(codec->time_base) < 0.001 && video_sync_method != VSYNC_PASSTHROUGH |
|
|
|
|
&& (video_sync_method == VSYNC_CFR || (video_sync_method == VSYNC_AUTO && !(oc->oformat->flags & AVFMT_VARIABLE_FPS)))){ |
|
|
|
|