Skip to content
Snippets Groups Projects

UI parameters

Merged Maxence Naud requested to merge ui_parameters into dev
1 file
+ 17
11
Compare changes
  • Side-by-side
  • Inline
@@ -90,14 +90,20 @@ public:
@@ -90,14 +90,20 @@ public:
// native interface
// native interface
const cv::Mat & data() const override { return mData; }
const cv::Mat & data() const override { return mData; }
 
inline std::size_t capacity() const noexcept override { return (mData.total() * mData.channels()); }
 
inline std::size_t scalarSize() const noexcept override final { return sizeof(T); }
inline std::size_t scalarSize() const noexcept override final { return sizeof(T); }
 
void zeros() override final {
 
mData.setTo(cv::Scalar::all(T(0)));
 
}
 
void copy(const void *src, NbElts_t length, NbElts_t offset = 0) override final {
void copy(const void *src, NbElts_t length, NbElts_t offset = 0) override final {
const T* srcT = static_cast<const T *>(src);
const T* srcT = static_cast<const T *>(src);
T* dstT = static_cast<T *>(rawPtr(offset));
T* dstT = static_cast<T *>(rawPtr(offset));
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "copy length is above capacity");
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copy(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
AIDGE_ASSERT(dstT < srcT || dstT >= srcT + length, "overlapping copy is not supported");
AIDGE_ASSERT(dstT < srcT || dstT >= srcT + length, "TensorImpl_opencv<{}>::copy(): overlapping copy is not supported", typeid(T).name());
std::copy(srcT, srcT + length, dstT);
std::copy(srcT, srcT + length, dstT);
}
}
@@ -108,7 +114,7 @@ public:
@@ -108,7 +114,7 @@ public:
}
}
T* dstT = static_cast<T *>(rawPtr(offset));
T* dstT = static_cast<T *>(rawPtr(offset));
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "copy length is above capacity");
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copyCast(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
switch (srcDt)
switch (srcDt)
{
{
case DataType::Float64:
case DataType::Float64:
@@ -156,15 +162,15 @@ public:
@@ -156,15 +162,15 @@ public:
dstT);
dstT);
break;
break;
default:
default:
AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported data type.");
AIDGE_THROW_OR_ABORT(std::runtime_error, "TensorImpl_opencv<{}>::copyCast(): unsupported data type {}.", typeid(T).name(), srcDt);
break;
break;
}
}
}
}
void copyFromDevice(const void *src, const std::pair<std::string, DeviceIdx_t>& device, NbElts_t length, NbElts_t offset = 0) override final {
void copyFromDevice(const void *src, const std::pair<std::string, DeviceIdx_t>& device, NbElts_t length, NbElts_t offset = 0) override final {
AIDGE_ASSERT(device.first == Backend, "backend must match");
AIDGE_ASSERT(device.first == Backend, "TensorImpl_opencv<{}>::copyFromDevice(): backend must match", typeid(T).name());
AIDGE_ASSERT(device.second == 0, "device cannot be != 0 for CPU backend");
AIDGE_ASSERT(device.second == 0, "TensorImpl_opencv<{}>::copyFromDevice(): device ({}) cannot be != 0 for CPU backend", typeid(T).name(), device.second);
copy(src, length, offset);
copy(src, length, offset);
}
}
@@ -174,7 +180,7 @@ public:
@@ -174,7 +180,7 @@ public:
void copyToHost(void *dst, NbElts_t length, NbElts_t offset = 0) const override final {
void copyToHost(void *dst, NbElts_t length, NbElts_t offset = 0) const override final {
const T* src = static_cast<const T*>(rawPtr(offset));
const T* src = static_cast<const T*>(rawPtr(offset));
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "copy length is above capacity");
AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copyToHost(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
std::copy(src, src + length, static_cast<T *>(dst));
std::copy(src, src + length, static_cast<T *>(dst));
}
}
@@ -184,7 +190,7 @@ public:
@@ -184,7 +190,7 @@ public:
};
};
const void *rawPtr(NbElts_t offset = 0) const override final {
const void *rawPtr(NbElts_t offset = 0) const override final {
AIDGE_ASSERT((mData.total() * mData.channels()) >= mNbElts, "accessing uninitialized const rawPtr");
AIDGE_ASSERT((mData.total() * mData.channels()) >= mNbElts, "TensorImpl_opencv<{}>::rawPtr(): accessing uninitialized const rawPtr", typeid(T).name());
return (mData.ptr<T>() + offset);
return (mData.ptr<T>() + offset);
};
};
@@ -194,8 +200,8 @@ public:
@@ -194,8 +200,8 @@ public:
};
};
const void *hostPtr(NbElts_t offset = 0) const override {
const void *hostPtr(NbElts_t offset = 0) const override {
AIDGE_ASSERT((mData.total() * mData.channels()) >= mNbElts, "accessing uninitialized const hostPtr");
AIDGE_ASSERT((mData.total() * mData.channels()) >= mNbElts, "TensorImpl_opencv<{}>::hostPtr(): accessing uninitialized const hostPtr", typeid(T).name());
AIDGE_ASSERT(mData.isContinuous(), "CV Matrix not continuous");
AIDGE_ASSERT(mData.isContinuous(), "TensorImpl_opencv<{}>::hostPtr(): CV Matrix not continuous", typeid(T).name());
return (mData.ptr<T>() + offset);
return (mData.ptr<T>() + offset);
};
};
@@ -209,7 +215,7 @@ private:
@@ -209,7 +215,7 @@ private:
void lazyInit() {
void lazyInit() {
if ((mData.total() * mData.channels()) < mNbElts) {
if ((mData.total() * mData.channels()) < mNbElts) {
// Need more data, a re-allocation will occur
// Need more data, a re-allocation will occur
AIDGE_ASSERT(mData.empty() , "trying to enlarge non-owned data");
AIDGE_ASSERT(mData.empty(), "TensorImpl_opencv<{}>: trying to enlarge non-owned data", typeid(T).name());
if (mDims.size() < 3) {
if (mDims.size() < 3) {
mData = cv::Mat(((mDims.size() > 1) ? static_cast<int>(mDims[0])
mData = cv::Mat(((mDims.size() > 1) ? static_cast<int>(mDims[0])
Loading