Fast Access to Camera Frames

New product: VCL components for displaying and controlling IP cameras, webcams, video conferencing, video chats
Post Reply
cjb
Posts: 12
Joined: Wed Jun 08, 2016 8:47 am

Fast Access to Camera Frames

Post by cjb » Thu Jul 14, 2016 2:26 pm

Hi,

I'm thinking of using RVMedia for my application for video capture from USB and IP cameras. The thing is I need fast access to the actual frames being captured, since I have to transfer these to 3D textures to build into another graphical framework.

Can you tell me if there is a solution to capture frame data in real-time, perhaps via an event e.g. OnNewFrame ? If not, would you be able to add this into the TRVCamera class or wherever appropriate?

Thanks

Sergey Tkachenko
Site Admin
Posts: 14212
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko » Thu Jul 14, 2016 5:17 pm

TRVCamera.OnGetImage event.
You can see how it can be used in Demos\Cameras\MotionDetect\ demo.

cjb
Posts: 12
Joined: Wed Jun 08, 2016 8:47 am

Post by cjb » Fri Jul 15, 2016 6:56 am

Ah thanks I will try this out...

cjb
Posts: 12
Joined: Wed Jun 08, 2016 8:47 am

Post by cjb » Wed Jul 20, 2016 1:07 pm

I've hit a problem integrating the OnGetImage handler into my application. It appears that the 'Img: TRVMBitmap' parameter is freed immediately after the event callback is called. Can you confirm this please?

The reason this causes a problem for me is that I want to wake up another processing thread from within the OnGetImage handler, then just pass across a pointer to the data buffer '@Img.Data[0]'. But when the processing thread wakes up to read the image data and copy it elsewhere, accessing the memory location gives an immediate AV error. If I call the same processing code from within the OnGetImage handler then there's no problem.

Is it possible that you could extend the lifetime of the TRVMBitmap instance, or maybe recycle it for successive frames, or use a small 'pool' of TRVMBitmap instances and cycle round them? Performance when processing large frame images is a big deal for my app and ideally I want to avoid unnecessary copying of frame image data.

Thanks.

Sergey Tkachenko
Site Admin
Posts: 14212
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko » Wed Jul 20, 2016 2:12 pm

Yes, it is freed by the component.
If you need a persistent image, copy it to your object.

Post Reply