aboutsummaryrefslogtreecommitdiffstats
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-05-20 14:12:48 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-05-20 19:36:00 +0200
commit318e39576444da0efadabc2db8d3898453d2f5bc (patch)
tree31f7e39fca4a1421789ec4a1625855caddefe185 /ffmpeg.c
parentb36a0a80fca1afe164ab97252d9f7f410869eff0 (diff)
downloadffmpeg-318e39576444da0efadabc2db8d3898453d2f5bc.tar.gz
ffmpeg: drop get_sync_ipts() and drop related special case for video
Idea found in a commit from Anton Khirnov Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 1c29f88c7b..7690e43cf7 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1680,13 +1680,6 @@ static void choose_sample_fmt(AVStream *st, AVCodec *codec)
}
}
-static double
-get_sync_ipts(const OutputStream *ost, int64_t pts)
-{
- OutputFile *of = output_files[ost->file_index];
- return (double)(pts - of->start_time) / AV_TIME_BASE;
-}
-
static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
{
AVBitStreamFilterContext *bsfc = ost->bitstream_filters;
@@ -1934,7 +1927,7 @@ static void do_video_out(AVFormatContext *s,
if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
duration = 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base));
- sync_ipts = get_sync_ipts(ost, in_picture->pts) / av_q2d(enc->time_base);
+ sync_ipts = in_picture->pts;
delta = sync_ipts - ost->sync_opts + duration;
/* by default, we output a single frame */
@@ -2162,22 +2155,22 @@ static int poll_filters(void)
break;
}
frame_pts = AV_NOPTS_VALUE;
- if (ost->enc->type == AVMEDIA_TYPE_VIDEO)
- filtered_frame->pts = frame_pts = av_rescale_q(picref->pts, ist_pts_tb, AV_TIME_BASE_Q);
- else if (picref->pts != AV_NOPTS_VALUE)
+ if (picref->pts != AV_NOPTS_VALUE) {
filtered_frame->pts = frame_pts = av_rescale_q(picref->pts,
ost->filter->filter->inputs[0]->time_base,
ost->st->codec->time_base) -
av_rescale_q(of->start_time,
AV_TIME_BASE_Q,
ost->st->codec->time_base);
+
+ if (of->start_time && filtered_frame->pts < 0) {
+ avfilter_unref_buffer(picref);
+ continue;
+ }
+ }
//if (ost->source_index >= 0)
// *filtered_frame= *input_streams[ost->source_index]->decoded_frame; //for me_threshold
- if (of->start_time && filtered_frame->pts < of->start_time) {
- avfilter_unref_buffer(picref);
- continue;
- }
switch (ost->filter->filter->inputs[0]->type) {
case AVMEDIA_TYPE_VIDEO: