summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2019-08-13 22:03:31 +0200
committerSebastian Dröge <slomo@coaxion.net>2019-08-13 20:32:47 +0000
commit06c249cabb41d5de6394569bfb545758fec07749 (patch)
treeb9a36ac5c1e116eceeda13d87a6d7970cae65f3f /ext
parent6382be0996ee92f8214c89d2028c28dc4806c84e (diff)
downloadgst-libav-06c249cabb41d5de6394569bfb545758fec07749.tar.gz
avvidenc: timestamp output buffers
Same approach as x264enc, with the one hour offset
Diffstat (limited to 'ext')
-rw-r--r--ext/libav/gstavvidenc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
index 5193a01..8211de2 100644
--- a/ext/libav/gstavvidenc.c
+++ b/ext/libav/gstavvidenc.c
@@ -682,6 +682,15 @@ gst_ffmpegvidenc_receive_packet (GstFFMpegVidEnc * ffmpegenc,
GST_VIDEO_CODEC_FRAME_UNSET_SYNC_POINT (frame);
}
+ frame->dts =
+ gst_ffmpeg_time_ff_to_gst (pkt->dts, ffmpegenc->context->time_base);
+ /* This will lose some precision compared to setting the PTS from the input
+ * buffer directly, but that way we're sure PTS and DTS are consistent, in
+ * particular DTS should always be <= PTS
+ */
+ frame->pts =
+ gst_ffmpeg_time_ff_to_gst (pkt->pts, ffmpegenc->context->time_base);
+
ret = gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (ffmpegenc), frame);
done:
@@ -836,6 +845,8 @@ gst_ffmpegvidenc_start (GstVideoEncoder * encoder)
return FALSE;
}
+ gst_video_encoder_set_min_pts (encoder, GST_SECOND * 60 * 60 * 1000);
+
return TRUE;
}