case DFS_DATA_TYPE_UINT8C3:
return CV_8UC3;
default:
- LOGE("Invalide type");
+ throw std::runtime_error("invalid data type");
}
- return -1;
-
LOGI("LEAVE");
}
{
LOGI("ENTER");
- if (!input.data) {
+ if (!input.data)
throw std::runtime_error("invalid data pointer");
- }
- int dataCvType = 1;
- cv::Mat baseMat, extraMat;
+ cv::Mat mat(cv::Size(input.width, input.height), convertDfsDataTypeToCV(input.type), input.data);
+ LOGI("%zd x %zd", input.width, input.height);
- if (input.format == DFS_DATA_INPUT_FORMAT_COUPLED_SBS) {
+ cv::Mat baseMat, extraMat;
+ switch (input.format) {
+ case DFS_DATA_INPUT_FORMAT_COUPLED_SBS:
LOGI("side-by-side");
- if (cv::Size(input.width >> 1, input.height) != mImageSize) {
+ if (cv::Size(input.width >> 1, input.height) != mImageSize)
throw std::runtime_error("invalid size");
- }
- dataCvType = convertDfsDataTypeToCV(input.type);
- if (dataCvType < 0) {
- throw std::runtime_error("invalid data type");
- }
- cv::Mat mat(cv::Size(input.width, input.height), dataCvType, input.data);
- LOGI("%zd x %zd", input.width, input.height);
baseMat = mat(cv::Rect(0, 0,
mImageSize.width,
mImageSize.height)).clone();
extraMat = mat(cv::Rect(mImageSize.width, 0,
mImageSize.width,
mImageSize.height)).clone();
- } else {
- if (cv::Size(input.width, input.height) != mImageSize ||
- cv::Size(input.width, input.height) != mImageSize) {
- LOGE("%zd x %zd but image size is %d x %d",
- input.width, input.height, mImageSize.width, mImageSize.height);
+ break;
+ case DFS_DATA_INPUT_FORMAT_COUPLED_TB:
+ LOGI("top-and-bottom");
+ if (cv::Size(input.width, input.height >> 1) != mImageSize)
throw std::runtime_error("invalid size");
- }
- dataCvType = convertDfsDataTypeToCV(input.type);
- if (dataCvType < 0) {
- LOGE("dataCvType: %d", dataCvType);
- throw std::runtime_error("invalid data type");
- }
-
- baseMat = cv::Mat(cv::Size(input.width, input.height),
- dataCvType,
- input.data);;
- extraMat = cv::Mat(cv::Size(input.width, input.height),
- dataCvType,
- input.extraData);
- }
- if (baseMat.size() != extraMat.size()) {
- throw std::runtime_error("base and extra should be the same size");
- }
+ baseMat = mat(cv::Rect(0, 0,
+ mImageSize.width,
+ mImageSize.height)).clone();
+ extraMat = mat(cv::Rect(0, mImageSize.height,
+ mImageSize.width,
+ mImageSize.height)).clone();
+ break;
+ default:
+ if (cv::Size(input.width, input.height) != mImageSize)
+ throw std::runtime_error("invalid size");
- if (baseMat.type() != extraMat.type()) {
- throw std::runtime_error("base and extra should be the type");
+ baseMat = mat;
+ extraMat = cv::Mat(mImageSize,
+ baseMat.type(),
+ input.extraData);
}
cv::Mat dispMat, dispFiltMat;
mExtraMat = extraMat;
}
-
cv::Mat srcBaseMat, srcExtraMat;
cv::resize(mBaseMat, srcBaseMat,
cv::Size(),