#include <iostream>
#include <string>
#include <cvb/device_factory.hpp>
#include <cvb/driver/image_stream.hpp>
#include <cvb/global.hpp>
static const constexpr int DELIVERABLE_COUNT =
10;
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);
for (auto m = 0; m < DELIVERABLE_COUNT; ++m) {
std::cout << "Acquisition #" << m << "\t";
auto waitResult = stream->WaitFor(std::chrono::seconds(10));
if (std::get<Cvb::WaitStatus>(waitResult) == Cvb::WaitStatus::Timeout)
throw std::runtime_error("Acquisition timeout.");
auto deliverable = std::get<Cvb::MultiPartImagePtr>(waitResult);
for (auto n = 0; n < deliverable->NumParts(); ++n) {
auto item = deliverable->GetPartAt(n);
if (Cvb::holds_alternative<Cvb::ImagePtr>(item)) {
auto &image = Cvb::get<Cvb::ImagePtr>(item);
std::cout << "Image property: Part index: " << n
<< ", Width : " << image->Width()
<< ", Height : " << image->Height() << ", ";
}
}
auto &enumerator = std::get<Cvb::NodeMapEnumerator>(waitResult);
const auto names = enumerator.Names();
if (std::all_of(names.begin(), names.end(), [](
const Cvb::String &name) {
return name != "VinBuffer";
}))
throw std::runtime_error("The nodemap enumerator of this container "
"does not contain a VinBuffer node map.");
auto nodeMap = enumerator.NodeMap(CVB_LIT("VinBuffer"));
auto isIncompleteNode =
std::cout <<
"IsIncomplete: " << isIncompleteNode->
Value() <<
", ";
auto frameIDNode =
std::cout <<
"FrameID: " << frameIDNode->
Value() <<
", ";
auto sizeFilledNode =
std::cout <<
"SizeFilled: " << sizeFilledNode->
Value() <<
", ";
std::cout <<
"Width: " << widthNode->
Value() <<
", ";
auto heightNode =
std::cout <<
"Height: " << heightNode->
Value() <<
", ";
auto xPaddingNode =
std::cout <<
"XPadding: " << xPaddingNode->
Value() <<
", ";
auto yPaddingNode =
std::cout <<
"YPadding: " << yPaddingNode->
Value() <<
", ";
auto timestampNode =
std::cout <<
"Timestamp: " << timestampNode->
Value() << std::endl;
}
stream->TryAbort();
} catch (const std::exception &e) {
std::cout << e.what() << std::endl;
}
return 0;
}
static std::vector< DiscoveryInformation > Discover()
static std::shared_ptr< T > Open(const String &provider, AcquisitionStack acquisitionStack=AcquisitionStack::PreferVin)
std::int64_t Value() const