[FFmpeg-devel] [PATCH v2 06/12] lavc/videotoolboxenc: Fix DTS
Rick Kern
kernrj at gmail.com
Fri Apr 22 18:14:08 CEST 2016
Some devices output an invalid DTS when B-frames aren't used. Using PTS for
the DTS in this case.
Signed-off-by: Rick Kern <kernrj at gmail.com>
---
libavcodec/videotoolboxenc.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 6a9a2fe..5594e69 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -1056,6 +1056,15 @@ static int vtenc_cm_to_avpacket(
pts = CMSampleBufferGetPresentationTimeStamp(sample_buffer);
dts = CMSampleBufferGetDecodeTimeStamp (sample_buffer);
+ if (CMTIME_IS_INVALID(dts)) {
+ if (!vtctx->has_b_frames) {
+ dts = pts;
+ } else {
+ av_log(avctx, AV_LOG_ERROR, "DTS is invalid.\n");
+ return AVERROR_EXTERNAL;
+ }
+ }
+
dts_delta = vtctx->dts_delta >= 0 ? vtctx->dts_delta : 0;
time_base_num = avctx->time_base.num;
pkt->pts = pts.value / time_base_num;
--
2.7.4
More information about the ffmpeg-devel
mailing list