#include <iostream>
#include <sstream>
#include <string>
#include <cvb/device_factory.hpp>
#include <cvb/driver/composite_stream.hpp>
#include <cvb/global.hpp>
static const constexpr int DELIVERABLE_COUNT =
10;
static const constexpr int ITEM_COUNT =
2;
static const constexpr int CVB_FLOW_SET_COUNT =
3;
int main() {
try {
Cvb::DiscoverFlags::IgnoreVins |
Cvb::DiscoverFlags::IncludeMockTL
);
for (auto n = 0; (n < infoList.size()) && accessToken.empty(); ++n)
if (infoList.at(n).AccessToken().find("MockTL") != std::string::npos)
accessToken = infoList.at(n).AccessToken();
if (accessToken.empty())
throw std::runtime_error("Could not find CVMockTL.");
accessToken, Cvb::AcquisitionStack::GenTL);
auto deviceNodeMap = device->NodeMap("Device");
{
CVB_LIT("GenDCFlowMappingConfiguration"));
configurationNode->
SetValue(CVB_LIT(
"MultipleFlow"));
auto imageCountNode =
}
CVB_LIT("GenDCStreamingMode"));
streamingModeNode->
SetValue(CVB_LIT(
"On"));
stream->Start();
for (auto m = 0; m < DELIVERABLE_COUNT; ++m) {
std::cout << "Acquisition #" << m << "\n";
auto waitResultTuple = stream->WaitFor(std::chrono::seconds(10));
if (std::get<Cvb::WaitStatus>(waitResultTuple) ==
Cvb::WaitStatus::Timeout)
throw std::runtime_error("Acquisition timeout.");
auto &enumerator = std::get<Cvb::NodeMapEnumerator>(waitResultTuple);
const auto names = enumerator.Names();
const auto keyName = CVB_LIT("VinBuffer");
if (std::all_of(
names.begin(), names.end(),
[keyName](
const Cvb::String &name) { return name != keyName; }))
throw std::runtime_error("It must contain the node map of Vin buffer.");
auto vinBufferNodeMap = enumerator.NodeMap(keyName);
auto frameIDNode =
auto timestampNode =
CVB_LIT("BufferPayloadType"));
auto deliverable = std::get<Cvb::CompositePtr>(waitResultTuple);
std::cout << "Frame ID: " << frameIDNode->Value()
<<
", Type: " << payloadTypeNode->
Value() <<
", Timestamp: 0x"
<< std::hex << timestampNode->
Value()
<< ", Item count: " << deliverable->ItemCount() << "\n";
for (auto n = 0; n < deliverable->ItemCount(); ++n) {
auto item = deliverable->ItemAt(n);
std::stringstream strStream;
strStream << "Type: ";
if (Cvb::holds_alternative<Cvb::ImagePtr>(item)) {
auto image = Cvb::get<Cvb::ImagePtr>(item);
strStream << "Image, Width: " << image->Width()
<< ", Height: " << image->Height();
} else if (Cvb::holds_alternative<Cvb::PlanePtr>(item))
strStream << "Plane";
else if (Cvb::holds_alternative<Cvb::PlaneEnumeratorPtr>(item))
strStream << "Plane enumerator";
else if (Cvb::holds_alternative<Cvb::BufferPtr>(item))
strStream << "Buffer";
else if (Cvb::holds_alternative<Cvb::PFNCBufferPtr>(item))
strStream << "PFNC buffer";
else
strStream << "Unknown";
std::cout << "Item index: " << n << ", " << strStream.str() << "\n";
}
}
stream->TryAbort();
} catch (const std::exception &e) {
std::cout << e.what() << std::endl;
}
return 0;
}
void RegisterManagedFlowSetPool(int flowSetCount)
static std::vector< DiscoveryInformation > Discover()
static std::shared_ptr< T > Open(const String &provider, AcquisitionStack acquisitionStack=AcquisitionStack::PreferVin)
void SetValue(const String &value)
void SetValue(std::int64_t value)
std::int64_t Value() const