Unable to get raw timestamp from multipart image

Hi all,
I am running the acquisition stack as GenTL using CVB++ on my area scan camera and streaming the data as ImageStream. I am acquiring the images as multipart image. With this, the rawtimestamp of the image is Nan. When I try to acquire the images as Vin Acquisition, I am able to see the time stamp.

Any idea how i can get the rawtimestamp with GenTL ?

The TimeStamp should be part of one of the Nodemaps (Statistics maybe) on your ImageStream.
The way this data is handled changed from the vin acquisition to the GenTL.

auto devices = DeviceFactory::Discover(DiscoverFlags::IgnoreVins);
auto device = DeviceFactory::Open<GenICamDevice>(discoveryInfo[0].AccessToken(),
AcquisitionStack::GenTL);
auto stream = device->Stream<ImageStream>();
stream->RegisterManagedFlowSetPool(200);
stream->Start();
for (int i = 0; i < 10; ++i)
{
auto [image, result, nodeMaps] = stream->Wait();
}
stream->Abort();

Hi @Chris
Thank you for the response. Can you share a link to the documentation where I can see what all nodemaps I can access from the below line of code ?

Unfortunately not, because they might differ from device to device.
You should be able to iterate through the ā€˜nodeMapsā€™ you received from the line you are referring to to see what NodeMaps you have available though.

Generally speaking, there should be three(or four) nodes available:

  • ā€œIsIncompleteā€: indicates whether the buffer is not delivered completely
  • ā€œTimestampā€: the buffer timestamp as delivered from the camera
  • ā€œSizeFilledā€: An information of the total size of the delivered data
    in newer releases (> 13.04.004):
  • ā€œFrameIDā€: the assigned unique id of the frame.

You may look at the migration guide to the new acquisition stack at this .

I forgot to mention that these nodes are available in a nodemap called ā€œVinBufferā€, which is returned inside the nodeMaps from stream->Wait()

Hi @s-woe
Thank you for the solution. I can access the timestamp now.

For anyone looking to access the time stamp of the buffer from multipart image, here is the piece of code

C++:

Cvb::MultiPartImagePtr multiPartImage;
Cvb::WaitStatus waitStatus;
Cvb::NodeMapEnumerator enumeratorNodeMap;

std::tie(multiPartImage, waitStatus, enumeratorNodeMap) = streams[streamIndex]->WaitFor(TIMEOUT);

auto vinBufferNodemap = enumeratorNodeMap["VinBuffer"];

auto timeStamp = vinBufferNodemap->Node<Cvb::IntegerNode>("Timestamp")->Value();
1 Like