On Fri, Mar 13, 2015 at 8:16 PM, <matthieu.bou...@gmail.com> wrote:
> From: Matthieu Bouron <matthieu.bou...@gmail.com> > > --- > libavdevice/avfoundation.m | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m > index 8112229..5bcd6a4 100644 > --- a/libavdevice/avfoundation.m > +++ b/libavdevice/avfoundation.m > @@ -881,9 +881,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; > > @@ -911,9 +916,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; > -- > 2.3.2 > > ping _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel