Issues with Camera CommandMode set to noWait
Posted: Wed Dec 21, 2022 10:01 am
Hello,
I have a USB camera - ELP-USBFHD06H-L36.
The application is built with Embarcadero C++ Builder 10.3 Version 26.0.33219.4899
Using the TRVCamera components (version 8.2) I can start a video stream by invoking the TrvCamera->PlayVideoStream().
I use TRVCamView to view the stream.
The camera component CommandMode is set to rvsmNoWait.
To end the stream, TRVCamera->Abort() is called - this is where I observe some issues.
After the Abort() method is called the application freezes for certain amount of time, depending on the resolution set in the video mode. (Subtype is MJPEG, color depth 24 for all resolutions)
if set to 320x240 - almost instant return from Abort()
if set to 640x480 - returns after about a second.
if set to 1920x1080 - more than a minute to return
dfm:
object RVCamera1: TRVCamera
Agent = 'IP Camera'
CameraSearchTimeOut = 1000
CommandMode = rvsmNoWait
DeviceType = rvdtWebCamera
Left = 352
Top = 376
end
object RVCamView1: TRVCamView
Left = 11
Top = 11
Width = 1121
Height = 554
Align = alClient
CaptionFont.Charset = DEFAULT_CHARSET
CaptionFont.Color = clWindowText
CaptionFont.Height = -11
CaptionFont.Name = 'Segoe UI'
CaptionFont.Style = []
Color = clBtnFace
DoubleBuffered = False
TabOrder = 0
AllowEmptyGUID = False
CaptionColor = clBtnShadow
HoverLineColor = clBtnShadow
ShowCaption = False
ShowFrameRect = False
IsInFocus = False
end
According to RVMedia help file description of noWait mode - operations are performed in background threads, without waiting.
Is there a reason Abort() would return after a long time, increasing with higher resolutions? I would expect it to return instantly in all cases.
All operations are executed from VCL main thread.
Thanks,
Atanas
I have a USB camera - ELP-USBFHD06H-L36.
The application is built with Embarcadero C++ Builder 10.3 Version 26.0.33219.4899
Using the TRVCamera components (version 8.2) I can start a video stream by invoking the TrvCamera->PlayVideoStream().
I use TRVCamView to view the stream.
The camera component CommandMode is set to rvsmNoWait.
To end the stream, TRVCamera->Abort() is called - this is where I observe some issues.
After the Abort() method is called the application freezes for certain amount of time, depending on the resolution set in the video mode. (Subtype is MJPEG, color depth 24 for all resolutions)
if set to 320x240 - almost instant return from Abort()
if set to 640x480 - returns after about a second.
if set to 1920x1080 - more than a minute to return
dfm:
object RVCamera1: TRVCamera
Agent = 'IP Camera'
CameraSearchTimeOut = 1000
CommandMode = rvsmNoWait
DeviceType = rvdtWebCamera
Left = 352
Top = 376
end
object RVCamView1: TRVCamView
Left = 11
Top = 11
Width = 1121
Height = 554
Align = alClient
CaptionFont.Charset = DEFAULT_CHARSET
CaptionFont.Color = clWindowText
CaptionFont.Height = -11
CaptionFont.Name = 'Segoe UI'
CaptionFont.Style = []
Color = clBtnFace
DoubleBuffered = False
TabOrder = 0
AllowEmptyGUID = False
CaptionColor = clBtnShadow
HoverLineColor = clBtnShadow
ShowCaption = False
ShowFrameRect = False
IsInFocus = False
end
According to RVMedia help file description of noWait mode - operations are performed in background threads, without waiting.
Is there a reason Abort() would return after a long time, increasing with higher resolutions? I would expect it to return instantly in all cases.
All operations are executed from VCL main thread.
Thanks,
Atanas