Camera - Add Method Start, Stop, Destructor.

This commit is contained in:
DucDangAnh 2020-06-19 15:35:34 +07:00
parent f9fcca2902
commit 4648ac01fe

View File

@ -7,9 +7,8 @@ namespace AIParkingApplication
public class Camera public class Camera
{ {
private string streamUrl; private string streamUrl;
private bool isCapturing;
private object lockSyncObject;
private volatile bool isFrameRequested; private volatile bool isFrameRequested;
private Thread readStreamThread;
public event CameraEvent OnVideoFrameReceived; public event CameraEvent OnVideoFrameReceived;
public event CameraEvent OnOneVideoFrameRequested; public event CameraEvent OnOneVideoFrameRequested;
@ -17,16 +16,24 @@ namespace AIParkingApplication
public Camera(string streamUrl) public Camera(string streamUrl)
{ {
this.streamUrl = streamUrl; this.streamUrl = streamUrl;
isCapturing = true;
isFrameRequested = false; isFrameRequested = false;
lockSyncObject = new object(); readStreamThread = new Thread(new ThreadStart(ReadVideoStream));
readStreamThread.IsBackground = true;
} }
public void Startcapture() ~Camera()
{ {
Thread readVideoStreamThread = new Thread(new ThreadStart(ReadVideoStream)); Stop();
readVideoStreamThread.IsBackground = true; }
readVideoStreamThread.Start();
public void Start()
{
if (!readStreamThread.IsAlive)
{
readStreamThread = new Thread(new ThreadStart(ReadVideoStream));
readStreamThread.IsBackground = true;
readStreamThread.Start();
}
} }
public void RequestCaptureOneFrame() public void RequestCaptureOneFrame()
@ -47,10 +54,6 @@ namespace AIParkingApplication
{ {
Thread.Sleep(50); //Stream Thread Sleep Thread.Sleep(50); //Stream Thread Sleep
//Thread.Sleep(40); //Video Thread Sleep //Thread.Sleep(40); //Video Thread Sleep
if (!isCapturing)
{
continue;
}
if (videoCapture.Read(videoFrame) && videoFrame.Width > 0 && videoFrame.Height > 0) if (videoCapture.Read(videoFrame) && videoFrame.Width > 0 && videoFrame.Height > 0)
{ {
@ -64,11 +67,11 @@ namespace AIParkingApplication
} }
} }
public void PauseCapture() public void Stop()
{ {
lock (lockSyncObject) if (readStreamThread.IsAlive)
{ {
isCapturing = false; readStreamThread.Abort();
} }
} }
} }