Please enable JavaScript to view this site.

IDS peak 2.10.0 / uEye+ firmware 3.34

IDS Peak comfortSDK, genericSDK, IPL, and AFL developer manuals are external documents. Please contact us if you need them.

Specifies the available buffer handling mode of this DataStream.

Name

StreamBufferHandlingMode

Category

BufferHandlingControl

Interface

Enumeration

Access

Read/Write

Unit

-

Visibility

Beginner

Values

NewestOnly

OldestFirst

OldestFirstSingleBuffer

OldestFirstDependOnCameraFIFO

Standard

GenTL SFNC

Availability uEye+

icon-gev icon-u3v

Availability uEye

icon-ui-gige icon-ui-usb2 icon-ui-usb3

Values description

value

Availability

Visibility

Description

NewestOnly

icon-gev icon-u3v

icon-ui-gige icon-ui-usb2 icon-ui-usb3

Beginner

The application always gets the latest completed buffer (thus, the newest available buffer). If the Output Buffer Queue is empty, the application waits for a newly acquired buffer until the timeout expires.

This buffer handling mode is typically used in a live display GUI where it is important that there is no lag between camera and display.

OldestFirst

icon-gev icon-u3v

icon-ui-gige icon-ui-usb2 icon-ui-usb3

Beginner

The application always gets the buffer from the head of the Output Buffer Queue (thus, the oldest available one). If the Output Buffer Queue is empty, the application waits for a newly acquired buffer until the timeout expires.

When data for a new buffer is available, the acquisition engine looks for any available buffer in the Input Buffer Pool, fills it, and appends it to the tail of the Output Buffer Queue. If the Input Buffer Pool is empty, the new data is dropped in the host. This results in lost frames (StreamLostFrameCount).

This buffer handling mode is typically used if every image frame is to be acquired and the mean processing time is lower than the acquisition time.

No buffer is discarded or overwritten in the Output Buffer Queue and all filled buffers are delivered in the order they were acquired.

OldestFirstSingleBuffer

icon-u3v

Guru

The application always gets the buffer from the head of the Output Buffer Queue (thus, the oldest available one). If the Output Buffer Queue is empty, the application waits for a newly acquired buffer until the timeout expires.

When data for a new buffer is available, the acquisition engine looks for any available buffer in the Input Buffer Pool, fills it, and appends it to the tail of the Output Buffer Queue. If the Input Buffer Pool is empty, the acquisition engine stops receiving data until a buffer has been queued. This mode allows announcing one single buffer only. In this case there will be no double buffering in the transfer channel. This results in the camera dropping frames (StreamDroppedFrameCount) if the camera has insufficient buffering capabilities.

This buffer handling mode is typically used if the image frames are to be acquired to a predictable memory address. The mean processing time must be lower than the acquisition time.

No buffer is discarded or overwritten in the Output Buffer Queue and all filled buffers are delivered in the order they were acquired.

OldestFirstDependOnCameraFIFO

icon-u3v

Expert

The application always gets the buffer from the head of the Output Buffer Queue (thus, the oldest available one). If the Output Buffer Queue is empty, the application waits for a newly acquired buffer until the timeout expires.

When data for a new buffer is available, the acquisition engine looks for any available buffer in the Input Buffer Pool, fills it, and appends it to the tail of the Output Buffer Queue.

If the Input Buffer Pool is empty, the acquisition engine stops receiving data until a buffer has been queued.

This results in the camera dropping frames (StreamDroppedFrameCount) or discarding data (StreamIncompleteFrameCount) if the camera has insufficient buffering capabilities.

This buffer handling mode is typically used if every image frame is to be acquired and the mean processing time is lower than the acquisition time.

No buffer is discarded or overwritten in the Output Buffer Queue and all filled buffers are delivered in the order they were acquired.

Fig. 291: Buffer handling "OldestFirst"

Fig. 291: Buffer handling "OldestFirst"

Fig. 292: Buffer handling "NewestOnly"

Fig. 292: Buffer handling "NewestOnly"

Code example

C++

// Determine the current entry of StreamBufferHandlingMode
std::string value = nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("StreamBufferHandlingMode")->CurrentEntry()->SymbolicValue();
// Get a list of all available entries of StreamBufferHandlingMode
auto allEntries = nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("StreamBufferHandlingMode")->Entries();
std::vector<std::shared_ptr<peak::core::nodes::EnumerationEntryNode>> availableEntries;
for(const auto & entry : allEntries)
{
  if ((entry->AccessStatus()!=peak::core::nodes::NodeAccessStatus::NotAvailable)
          && (entry->AccessStatus()!=peak::core::nodes::NodeAccessStatus::NotImplemented))
  {
      availableEntries.emplace_back(entry);
  }
}
// Set StreamBufferHandlingMode to "OldestFirst"
nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("StreamBufferHandlingMode")->SetCurrentEntry("OldestFirst");

C#

// Determine the current entry of StreamBufferHandlingMode
string value = nodeMapDataStream.FindNode<peak.core.nodes.EnumerationNode>("StreamBufferHandlingMode").CurrentEntry().SymbolicValue();
// Get a list of all available entries of StreamBufferHandlingMode
allEntries = nodeMapDataStream.FindNode<peak.core.nodes.EnumerationNode>("StreamBufferHandlingMode").Entries();
List<string> availableEntries = new List<string>();
for(int i = 0; i < allEntries.Count(); ++i)
{
  if ((allEntries[i].AccessStatus() != peak.core.nodes.NodeAccessStatus.NotAvailable)
          && (allEntries[i].AccessStatus() != peak.core.nodes.NodeAccessStatus.NotImplemented))
  {
      availableEntries.Add(allEntries[i].SymbolicValue());
  }
}
// Set StreamBufferHandlingMode to "OldestFirst"
nodeMapDataStream.FindNode<peak.core.nodes.EnumerationNode>("StreamBufferHandlingMode").SetCurrentEntry("OldestFirst");

Python

# Determine the current entry of StreamBufferHandlingMode (str)
value = nodeMapDataStream.FindNode("StreamBufferHandlingMode").CurrentEntry().SymbolicValue()
# Get a list of all available entries of StreamBufferHandlingMode
allEntries = nodeMapDataStream.FindNode("StreamBufferHandlingMode").Entries()
availableEntries = []
for entry in allEntries:
  if (entry.AccessStatus() != peak.NodeAccessStatus_NotAvailable
          and entry.AccessStatus() != peak.NodeAccessStatus_NotImplemented):
      availableEntries.append(entry.SymbolicValue())
 
# Set StreamBufferHandlingMode to "OldestFirst" (str)
nodeMapDataStream.FindNode("StreamBufferHandlingMode").SetCurrentEntry("OldestFirst")

© 2024 IDS Imaging Development Systems GmbH