simple-firewire 0.1.2 → 0.1.3
raw patch · 3 files changed
+23/−4 lines, 3 files
Files
- Examples/Example1.hs +7/−3
- System/Camera/Firewire/Simple.hs +15/−0
- simple-firewire.cabal +1/−1
Examples/Example1.hs view
@@ -64,9 +64,13 @@ setupCamera cam 4 (defaultFlags) startVideoTransmission cam - run_ (saveClip cam)- -- getFrame cam >>= saveImage "testShot2-1.png"- -- getFrame cam >>= saveImage "testShot2-3.png"+ -- run_ (saveClip cam)+ getFrame cam >>= saveImage "testShot2-1.png"+ getFrame cam >>= saveImage "testShot2-3.png"+ threadDelay (1000000)+ flushCamera cam+ startVideoTransmission cam+ getFrame cam >>= saveImage "testShot2-4.png" stopVideoTransmission cam stopCapture cam
System/Camera/Firewire/Simple.hs view
@@ -74,6 +74,21 @@ (\_ -> peek list >>= c'dc1394_camera_free_list) (\_ -> peek list >>= peek >>= getIds) +-- | Stop the transmission, and poll frames until the camera buffer is empty. Notice that you+-- have to restart the transmission after this call+flushBuffer cam = alloca $ \(framePtrPtr :: Ptr (Ptr C'dc1394video_frame_t)) -> do+ stopVideoTransmission cam + withCameraPtr cam $ flushLoop framePtrPtr+ where+ flushLoop framePtrPtr cam = do+ c'dc1394_capture_dequeue cam c'DC1394_CAPTURE_POLICY_POLL framePtrPtr+ framePtr <- peek framePtrPtr + c'dc1394_capture_enqueue cam framePtr+ print "Flush!"+ when (framePtr /= nullPtr) $ flushLoop framePtrPtr cam+++ -- | Grab a frame from the camera. Currently does only 640x480 RGB D8 Images. getFrame :: Camera -> IO (Maybe (Image RGB D8)) getFrame camera' = alloca $ \(framePtr :: Ptr (Ptr C'dc1394video_frame_t)) ->
simple-firewire.cabal view
@@ -1,5 +1,5 @@ Name: simple-firewire-Version: 0.1.2+Version: 0.1.3 Synopsis: Simplified interface for firewire cameras Description: A simplified interface for firewire cameras based on libdc1394 <http://damien.douxchamps.net/ieee1394/libdc1394/> .