Commit cf16b459 authored by Matthieu Bouron's avatar Matthieu Bouron Committed by Michael Niedermayer

libavdevice/avfoundation: use pts/dts provided by the CMSampleBuffer API

Reviewed-by: 's avatarThilo Borgmann <thilo.borgmann@mail.de>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 021b0237
......@@ -908,9 +908,14 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR(EIO);
}
pkt->pts = pkt->dts = av_rescale_q(av_gettime() - ctx->first_pts,
AV_TIME_BASE_Q,
avf_time_base_q);
CMItemCount count;
CMSampleTimingInfo timing_info;
if (CMSampleBufferGetOutputSampleTimingInfoArray(ctx->current_frame, 1, &timing_info, &count) == noErr) {
AVRational timebase_q = av_make_q(1, timing_info.presentationTimeStamp.timescale);
pkt->pts = pkt->dts = av_rescale_q(timing_info.presentationTimeStamp.value, timebase_q, avf_time_base_q);
}
pkt->stream_index = ctx->video_stream_index;
pkt->flags |= AV_PKT_FLAG_KEY;
......@@ -938,9 +943,13 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR(EIO);
}
pkt->pts = pkt->dts = av_rescale_q(av_gettime() - ctx->first_audio_pts,
AV_TIME_BASE_Q,
avf_time_base_q);
CMItemCount count;
CMSampleTimingInfo timing_info;
if (CMSampleBufferGetOutputSampleTimingInfoArray(ctx->current_audio_frame, 1, &timing_info, &count) == noErr) {
AVRational timebase_q = av_make_q(1, timing_info.presentationTimeStamp.timescale);
pkt->pts = pkt->dts = av_rescale_q(timing_info.presentationTimeStamp.value, timebase_q, avf_time_base_q);
}
pkt->stream_index = ctx->audio_stream_index;
pkt->flags |= AV_PKT_FLAG_KEY;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment