mirror of https://git.ffmpeg.org/ffmpeg.git
libavdevice/avfoundation: use pts/dts provided by the CMSampleBuffer API
Reviewed-by: Thilo Borgmann <thilo.borgmann@mail.de> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
021b023751
commit
cf16b459a8
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue