]> git.sesse.net Git - vlc/blobdiff - modules/access/qtcapture.m
playlist: Handle vlc_InputItemErrorWhenReadingChanged events.
[vlc] / modules / access / qtcapture.m
index bb99846bb493f326586cdfd00be0eb50c5f4f376..eac2e6f005426e7a80997989869887cfea21307a 100644 (file)
@@ -38,6 +38,7 @@
 #include <vlc_interface.h>
 
 #import <QTKit/QTKit.h>
+#import <CoreAudio/CoreAudio.h>
 
 /*****************************************************************************
 * 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];
     }