X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fqtcapture.m;h=eac2e6f005426e7a80997989869887cfea21307a;hb=f04d366c93b97c8e910380f106f17b0a58741975;hp=bb99846bb493f326586cdfd00be0eb50c5f4f376;hpb=65b80858efa00f65e20a20c0518e2dc202da65d6;p=vlc diff --git a/modules/access/qtcapture.m b/modules/access/qtcapture.m index bb99846bb4..eac2e6f005 100644 --- a/modules/access/qtcapture.m +++ b/modules/access/qtcapture.m @@ -38,6 +38,7 @@ #include #import +#import /***************************************************************************** * Local prototypes @@ -109,7 +110,11 @@ vlc_module_end(); { imageBufferToRelease = currentImageBuffer; currentImageBuffer = videoFrame; - currentPts = 1000000L / [sampleBuffer presentationTime].timeScale * [sampleBuffer presentationTime].timeValue; + currentPts = (mtime_t)(1000000L / [sampleBuffer presentationTime].timeScale * [sampleBuffer presentationTime].timeValue); + + /* Try to use hosttime of the sample if available, because iSight Pts seems broken */ + NSNumber *hosttime = (NSNumber *)[sampleBuffer attributeForKey:QTSampleBufferHostTimeAttribute]; + if( hosttime ) currentPts = (mtime_t)AudioConvertHostTimeToNanos([hosttime unsignedLongLongValue])/1000; } CVBufferRelease(imageBufferToRelease); } @@ -323,7 +328,6 @@ static void Close( vlc_object_t *p_this ) if( vlc_object_alive(p_this->p_libvlc)) { [p_sys->session stopRunning]; - [p_sys->device release]; [p_sys->output release]; [p_sys->session release]; }