Unregistered
July 4, 2002, 23:29:58
I'm trying to track down a memory leak in my program. Do you have any suggestions as to improving this code? In particular, do I need to GlobalFree v or something? As you can see I call both .MemoryReleaseImageData v and Erase v
Public Sub GetImage(ctlIC As ICImagingControl, ctlPic As PictureBox)
Dim v() As Byte
Dim lBase As Long
lBase = (3& * PIX_WIDE * PIX_HIGH * iPtr) + (3& * PIX_WIDE * PIX_HIGH * NUM_FRAMES * iCam)
With ctlIC
.MemorySnapImage
'switches here as soon as image has been captured to allow maximum time to settle
'before returning to this routine for capturing next camera
Call SwitchCamera(ctlIC)
v = .MemoryGetImageData
If frmVidCapture.WindowState <> 1 Then
StretchDIBits ctlPic.hdc, 0, 0, PIX_WIDE, PIX_HIGH, 0, 0, PIX_WIDE, PIX_HIGH, _
VarPtr(v(0, 0)), VarPtr(g_bi24BitInfo.bmiBufPtr), 0, vbSrcCopy
End If
Put #1, lBase + 5, v
.MemoryReleaseImageData v
Erase v
End With
End Sub
Public Sub SwitchCamera(ctlIC As ICImagingControl)
Dim sTemp As String
With ctlIC
g_iCamera = (g_iCamera + 1) Mod NUM_CAMERAS
If g_iCamera = 1 Then
sTemp = "02 Video: Composite"
Else
sTemp = "01 Video: Tuner"
g_iBufPtr = (g_iBufPtr + 1) Mod NUM_FRAMES
End If
.InputChannel = sTemp
If .Brightness <> iBrightness(g_iCamera) Then
.Brightness = iBrightness(g_iCamera)
End If
If .Contrast <> iContrast(g_iCamera) Then
.Contrast = iContrast(g_iCamera)
End If
End With
End Sub
This message was originally posted by Paul Jackson in the old IC Imaging Control Support Forum.
Public Sub GetImage(ctlIC As ICImagingControl, ctlPic As PictureBox)
Dim v() As Byte
Dim lBase As Long
lBase = (3& * PIX_WIDE * PIX_HIGH * iPtr) + (3& * PIX_WIDE * PIX_HIGH * NUM_FRAMES * iCam)
With ctlIC
.MemorySnapImage
'switches here as soon as image has been captured to allow maximum time to settle
'before returning to this routine for capturing next camera
Call SwitchCamera(ctlIC)
v = .MemoryGetImageData
If frmVidCapture.WindowState <> 1 Then
StretchDIBits ctlPic.hdc, 0, 0, PIX_WIDE, PIX_HIGH, 0, 0, PIX_WIDE, PIX_HIGH, _
VarPtr(v(0, 0)), VarPtr(g_bi24BitInfo.bmiBufPtr), 0, vbSrcCopy
End If
Put #1, lBase + 5, v
.MemoryReleaseImageData v
Erase v
End With
End Sub
Public Sub SwitchCamera(ctlIC As ICImagingControl)
Dim sTemp As String
With ctlIC
g_iCamera = (g_iCamera + 1) Mod NUM_CAMERAS
If g_iCamera = 1 Then
sTemp = "02 Video: Composite"
Else
sTemp = "01 Video: Tuner"
g_iBufPtr = (g_iBufPtr + 1) Mod NUM_FRAMES
End If
.InputChannel = sTemp
If .Brightness <> iBrightness(g_iCamera) Then
.Brightness = iBrightness(g_iCamera)
End If
If .Contrast <> iContrast(g_iCamera) Then
.Contrast = iContrast(g_iCamera)
End If
End With
End Sub
This message was originally posted by Paul Jackson in the old IC Imaging Control Support Forum.