From b09a4a98d44adbe30031c59efa4d5487f3aa3118 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Sun, 10 Jun 2018 22:42:00 +0000 Subject: [PATCH] opencv: Use cv::AutoBuffer<>::data() --- apps/createsamples/utility.cpp | 2 +- apps/traincascade/HOGfeatures.cpp | 4 +- apps/traincascade/boost.cpp | 12 ++--- apps/traincascade/old_ml_boost.cpp | 22 ++++---- apps/traincascade/old_ml_tree.cpp | 48 ++++++++--------- modules/calib3d/src/calibinit.cpp | 2 +- modules/calib3d/src/ptsetreg.cpp | 2 +- modules/calib3d/src/stereosgbm.cpp | 2 +- modules/core/include/opencv2/core/cvdef.h | 1 + modules/core/src/arithm.cpp | 14 ++--- modules/core/src/batch_distance.cpp | 2 +- modules/core/src/channels.cpp | 6 +-- modules/core/src/conjugate_gradient.cpp | 2 +- modules/core/src/copy.cpp | 12 ++--- modules/core/src/dxt.cpp | 60 +++++++++++----------- modules/core/src/kmeans.cpp | 6 +-- modules/core/src/lapack.cpp | 22 ++++---- modules/core/src/mathfuncs.cpp | 8 +-- modules/core/src/matmul.cpp | 33 ++++++------ modules/core/src/matrix.cpp | 4 +- modules/core/src/matrix_c.cpp | 2 +- modules/core/src/matrix_decomp.cpp | 2 +- modules/core/src/matrix_operations.cpp | 17 +++--- modules/core/src/mean.cpp | 4 +- modules/core/src/merge.cpp | 2 +- modules/core/src/ocl.cpp | 38 +++++++------- modules/core/src/persistence_cpp.cpp | 4 +- modules/core/src/rand.cpp | 8 +-- modules/core/src/split.cpp | 2 +- modules/core/src/sum.cpp | 2 +- modules/core/src/system.cpp | 4 +- modules/core/src/umatrix.cpp | 4 +- modules/core/src/utils/filesystem.cpp | 8 +-- modules/core/test/test_rand.cpp | 6 +-- modules/dnn/src/layers/convolution_layer.cpp | 2 +- modules/dnn/src/layers/fully_connected_layer.cpp | 2 +- modules/dnn/src/layers/lrn_layer.cpp | 2 +- modules/dnn/src/torch/torch_importer.cpp | 6 +-- modules/features2d/src/fast.cpp | 2 +- modules/features2d/src/orb.cpp | 2 +- modules/flann/include/opencv2/flann/kmeans_index.h | 8 +-- modules/imgcodecs/src/grfmt_bmp.cpp | 2 +- modules/imgcodecs/src/grfmt_exr.cpp | 2 +- modules/imgcodecs/src/grfmt_jpeg.cpp | 2 +- modules/imgcodecs/src/grfmt_pam.cpp | 11 ++-- modules/imgcodecs/src/grfmt_png.cpp | 4 +- modules/imgcodecs/src/grfmt_pxm.cpp | 8 +-- modules/imgcodecs/src/grfmt_sunras.cpp | 2 +- modules/imgcodecs/src/grfmt_tiff.cpp | 4 +- modules/imgproc/src/approx.cpp | 26 +++++----- modules/imgproc/src/canny.cpp | 8 +-- modules/imgproc/src/clahe.cpp | 2 +- modules/imgproc/src/color_lab.cpp | 2 +- modules/imgproc/src/convhull.cpp | 6 +-- modules/imgproc/src/corner.cpp | 2 +- modules/imgproc/src/demosaicing.cpp | 2 +- modules/imgproc/src/distransform.cpp | 6 +-- modules/imgproc/src/drawing.cpp | 8 +-- modules/imgproc/src/emd.cpp | 2 +- modules/imgproc/src/filter.cpp | 2 +- modules/imgproc/src/geometry.cpp | 2 +- modules/imgproc/src/hough.cpp | 12 ++--- modules/imgproc/src/imgwarp.cpp | 2 +- modules/imgproc/src/linefit.cpp | 4 +- modules/imgproc/src/phasecorr.cpp | 2 +- modules/imgproc/src/pyramids.cpp | 8 +-- modules/imgproc/src/resize.cpp | 42 +++++++-------- modules/imgproc/src/rotcalipers.cpp | 2 +- modules/imgproc/src/shapedescr.cpp | 2 +- modules/imgproc/src/smooth.cpp | 4 +- modules/imgproc/src/sumpixels.cpp | 2 +- modules/imgproc/test/test_convhull.cpp | 2 +- modules/ml/src/ann_mlp.cpp | 4 +- modules/ml/src/boost.cpp | 2 +- modules/ml/src/data.cpp | 2 +- modules/ml/src/kdtree.cpp | 6 +-- modules/ml/src/knearest.cpp | 2 +- modules/ml/src/nbayes.cpp | 4 +- modules/ml/src/svm.cpp | 4 +- modules/ml/src/tree.cpp | 24 ++++----- modules/objdetect/src/cascadedetect.cpp | 2 +- modules/objdetect/src/hog.cpp | 6 +-- modules/objdetect/test/test_cascadeandhog.cpp | 4 +- modules/python/src2/cv2.cpp | 2 +- modules/ts/src/ts_perf.cpp | 2 +- modules/video/src/bgfg_gaussmix2.cpp | 2 +- modules/video/src/lkpyramid.cpp | 6 +-- modules/video/src/optflowgf.cpp | 14 ++--- modules/videoio/src/cap_mfx_common.cpp | 2 +- modules/videoio/src/cap_msmf.cpp | 8 +-- 90 files changed, 333 insertions(+), 339 deletions(-) diff --git a/apps/createsamples/utility.cpp b/apps/createsamples/utility.cpp index 9d59284..bae9a9a 100644 --- a/apps/createsamples/utility.cpp +++ b/apps/createsamples/utility.cpp @@ -1372,7 +1372,7 @@ int icvGetTraininDataFromVec( Mat& img, CvVecFile& userdata ) size_t elements_read = fread( &tmp, sizeof( tmp ), 1, userdata.input ); CV_Assert(elements_read == 1); - elements_read = fread( vector, sizeof( short ), userdata.vecsize, userdata.input ); + elements_read = fread(vector.data(), sizeof(short), userdata.vecsize, userdata.input); CV_Assert(elements_read == (size_t)userdata.vecsize); if( feof( userdata.input ) || userdata.last++ >= userdata.count ) diff --git a/apps/traincascade/HOGfeatures.cpp b/apps/traincascade/HOGfeatures.cpp index 908c87b..0707f93 100644 --- a/apps/traincascade/HOGfeatures.cpp +++ b/apps/traincascade/HOGfeatures.cpp @@ -165,7 +165,7 @@ void CvHOGEvaluator::integralHistogram(const Mat &img, vector &histogram, M Mat qangle(gradSize, CV_8U); AutoBuffer mapbuf(gradSize.width + gradSize.height + 4); - int* xmap = (int*)mapbuf + 1; + int* xmap = mapbuf.data() + 1; int* ymap = xmap + gradSize.width + 2; const int borderType = (int)BORDER_REPLICATE; @@ -177,7 +177,7 @@ void CvHOGEvaluator::integralHistogram(const Mat &img, vector &histogram, M int width = gradSize.width; AutoBuffer _dbuf(width*4); - float* dbuf = _dbuf; + float* dbuf = _dbuf.data(); Mat Dx(1, width, CV_32F, dbuf); Mat Dy(1, width, CV_32F, dbuf + width); Mat Mag(1, width, CV_32F, dbuf + width*2); diff --git a/apps/traincascade/boost.cpp b/apps/traincascade/boost.cpp index 7b1f1fc..993d688 100644 --- a/apps/traincascade/boost.cpp +++ b/apps/traincascade/boost.cpp @@ -383,7 +383,7 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id int ci = get_var_type(vi); CV_Assert( ci < 0 ); - int *src_idx_buf = (int*)(uchar*)inn_buf; + int *src_idx_buf = (int*)inn_buf.data(); float *src_val_buf = (float*)(src_idx_buf + sample_count); int* sample_indices_buf = (int*)(src_val_buf + sample_count); const int* src_idx = 0; @@ -423,7 +423,7 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id } // subsample cv_lables - const int* src_lbls = get_cv_labels(data_root, (int*)(uchar*)inn_buf); + const int* src_lbls = get_cv_labels(data_root, (int*)inn_buf.data()); if (is_buf_16u) { unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + @@ -440,7 +440,7 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id } // subsample sample_indices - const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); + const int* sample_idx_src = get_sample_indices(data_root, (int*)inn_buf.data()); if (is_buf_16u) { unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + @@ -815,7 +815,7 @@ struct FeatureIdxOnlyPrecalc : ParallelLoopBody void operator()( const Range& range ) const { cv::AutoBuffer valCache(sample_count); - float* valCachePtr = (float*)valCache; + float* valCachePtr = valCache.data(); for ( int fi = range.start; fi < range.end; fi++) { for( int si = 0; si < sample_count; si++ ) @@ -1084,7 +1084,7 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node ) CvMat* buf = data->buf; size_t length_buf_row = data->get_length_subbuf(); cv::AutoBuffer inn_buf(n*(3*sizeof(int)+sizeof(float))); - int* tempBuf = (int*)(uchar*)inn_buf; + int* tempBuf = (int*)inn_buf.data(); bool splitInputData; complete_node_dir(node); @@ -1398,7 +1398,7 @@ void CvCascadeBoost::update_weights( CvBoostTree* tree ) int inn_buf_size = ((params.boost_type == LOGIT) || (params.boost_type == GENTLE) ? n*sizeof(int) : 0) + ( !tree ? n*sizeof(int) : 0 ); cv::AutoBuffer inn_buf(inn_buf_size); - uchar* cur_inn_buf_pos = (uchar*)inn_buf; + uchar* cur_inn_buf_pos = inn_buf.data(); if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) { step = CV_IS_MAT_CONT(data->responses_copy->type) ? diff --git a/apps/traincascade/old_ml_boost.cpp b/apps/traincascade/old_ml_boost.cpp index fae3d60..c887c77 100644 --- a/apps/traincascade/old_ml_boost.cpp +++ b/apps/traincascade/old_ml_boost.cpp @@ -168,7 +168,7 @@ CvBoostTree::try_split_node( CvDTreeNode* node ) // store the responses for the corresponding training samples double* weak_eval = ensemble->get_weak_response()->data.db; cv::AutoBuffer inn_buf(node->sample_count); - const int* labels = data->get_cv_labels( node, (int*)inn_buf ); + const int* labels = data->get_cv_labels(node, inn_buf.data()); int i, count = node->sample_count; double value = node->value; @@ -191,7 +191,7 @@ CvBoostTree::calc_node_dir( CvDTreeNode* node ) if( data->get_var_type(vi) >= 0 ) // split on categorical var { cv::AutoBuffer inn_buf(n); - const int* cat_labels = data->get_cat_var_data( node, vi, (int*)inn_buf ); + const int* cat_labels = data->get_cat_var_data(node, vi, inn_buf.data()); const int* subset = node->split->subset; double sum = 0, sum_abs = 0; @@ -210,7 +210,7 @@ CvBoostTree::calc_node_dir( CvDTreeNode* node ) else // split on ordered var { cv::AutoBuffer inn_buf(2*n*sizeof(int)+n*sizeof(float)); - float* values_buf = (float*)(uchar*)inn_buf; + float* values_buf = (float*)inn_buf.data(); int* sorted_indices_buf = (int*)(values_buf + n); int* sample_indices_buf = sorted_indices_buf + n; const float* values = 0; @@ -260,7 +260,7 @@ CvBoostTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality cv::AutoBuffer inn_buf; if( !_ext_buf ) inn_buf.allocate(n*(3*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); float* values_buf = (float*)ext_buf; int* sorted_indices_buf = (int*)(values_buf + n); int* sample_indices_buf = sorted_indices_buf + n; @@ -369,7 +369,7 @@ CvBoostTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality cv::AutoBuffer inn_buf((2*mi+3)*sizeof(double) + mi*sizeof(double*)); if( !_ext_buf) inn_buf.allocate( base_size + 2*n*sizeof(int) ); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; int* cat_labels_buf = (int*)ext_buf; @@ -490,7 +490,7 @@ CvBoostTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, cv::AutoBuffer inn_buf; if( !_ext_buf ) inn_buf.allocate(2*n*(sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); float* values_buf = (float*)ext_buf; int* indices_buf = (int*)(values_buf + n); @@ -559,7 +559,7 @@ CvBoostTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; int* cat_labels_buf = (int*)ext_buf; @@ -652,7 +652,7 @@ CvBoostTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_bu cv::AutoBuffer inn_buf; if( !_ext_buf ) inn_buf.allocate(n*(2*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); float* values_buf = (float*)ext_buf; int* indices_buf = (int*)(values_buf + n); int* sample_indices_buf = indices_buf + n; @@ -733,7 +733,7 @@ CvBoostTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_bu cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + n*sizeof(int)); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); int* cat_labels_buf = (int*)ext_buf; const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); @@ -797,7 +797,7 @@ CvBoostTree::calc_node_value( CvDTreeNode* node ) int i, n = node->sample_count; const double* weights = ensemble->get_weights()->data.db; cv::AutoBuffer inn_buf(n*(sizeof(int) + ( data->is_classifier ? sizeof(int) : sizeof(int) + sizeof(float)))); - int* labels_buf = (int*)(uchar*)inn_buf; + int* labels_buf = (int*)inn_buf.data(); const int* labels = data->get_cv_labels(node, labels_buf); double* subtree_weights = ensemble->get_subtree_weights()->data.db; double rcw[2] = {0,0}; @@ -1147,7 +1147,7 @@ CvBoost::update_weights( CvBoostTree* tree ) _buf_size += data->get_length_subbuf()*(sizeof(float)+sizeof(uchar)); } inn_buf.allocate(_buf_size); - uchar* cur_buf_pos = (uchar*)inn_buf; + uchar* cur_buf_pos = inn_buf.data(); if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) { diff --git a/apps/traincascade/old_ml_tree.cpp b/apps/traincascade/old_ml_tree.cpp index 832330d..ed6b6ee 100644 --- a/apps/traincascade/old_ml_tree.cpp +++ b/apps/traincascade/old_ml_tree.cpp @@ -780,7 +780,7 @@ CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) if( ci >= 0 || vi >= var_count ) { int num_valid = 0; - const int* src = CvDTreeTrainData::get_cat_var_data( data_root, vi, (int*)(uchar*)inn_buf ); + const int* src = CvDTreeTrainData::get_cat_var_data(data_root, vi, (int*)inn_buf.data()); if (is_buf_16u) { @@ -810,7 +810,7 @@ CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) } else { - int *src_idx_buf = (int*)(uchar*)inn_buf; + int *src_idx_buf = (int*)inn_buf.data(); float *src_val_buf = (float*)(src_idx_buf + sample_count); int* sample_indices_buf = (int*)(src_val_buf + sample_count); const int* src_idx = 0; @@ -870,7 +870,7 @@ CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) } } // sample indices subsampling - const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); + const int* sample_idx_src = get_sample_indices(data_root, (int*)inn_buf.data()); if (is_buf_16u) { unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + @@ -943,7 +943,7 @@ void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, { float* dst = values + vi; uchar* m = missing ? missing + vi : 0; - const int* src = get_cat_var_data(data_root, vi, (int*)(uchar*)inn_buf); + const int* src = get_cat_var_data(data_root, vi, (int*)inn_buf.data()); for( i = 0; i < count; i++, dst += var_count ) { @@ -962,7 +962,7 @@ void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, float* dst = values + vi; uchar* m = missing ? missing + vi : 0; int count1 = data_root->get_num_valid(vi); - float *src_val_buf = (float*)(uchar*)inn_buf; + float *src_val_buf = (float*)inn_buf.data(); int* src_idx_buf = (int*)(src_val_buf + sample_count); int* sample_indices_buf = src_idx_buf + sample_count; const float *src_val = 0; @@ -999,7 +999,7 @@ void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, { if( is_classifier ) { - const int* src = get_class_labels(data_root, (int*)(uchar*)inn_buf); + const int* src = get_class_labels(data_root, (int*)inn_buf.data()); for( i = 0; i < count; i++ ) { int idx = sidx ? sidx[i] : i; @@ -1010,7 +1010,7 @@ void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, } else { - float* val_buf = (float*)(uchar*)inn_buf; + float* val_buf = (float*)inn_buf.data(); int* sample_idx_buf = (int*)(val_buf + sample_count); const float* _values = get_ord_responses(data_root, val_buf, sample_idx_buf); for( i = 0; i < count; i++ ) @@ -1780,7 +1780,7 @@ double CvDTree::calc_node_dir( CvDTreeNode* node ) if( data->get_var_type(vi) >= 0 ) // split on categorical var { cv::AutoBuffer inn_buf(n*(!data->have_priors ? 1 : 2)); - int* labels_buf = (int*)inn_buf; + int* labels_buf = inn_buf.data(); const int* labels = data->get_cat_var_data( node, vi, labels_buf ); const int* subset = node->split->subset; if( !data->have_priors ) @@ -1824,7 +1824,7 @@ double CvDTree::calc_node_dir( CvDTreeNode* node ) int split_point = node->split->ord.split_point; int n1 = node->get_num_valid(vi); cv::AutoBuffer inn_buf(n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float))); - float* val_buf = (float*)(uchar*)inn_buf; + float* val_buf = (float*)inn_buf.data(); int* sorted_buf = (int*)(val_buf + n); int* sample_idx_buf = sorted_buf + n; const float* val = 0; @@ -1929,16 +1929,16 @@ void DTreeBestSplitFinder::operator()(const BlockedRange& range) if( data->is_classifier ) { if( ci >= 0 ) - res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, inn_buf.data() ); else - res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, inn_buf.data() ); } else { if( ci >= 0 ) - res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, inn_buf.data() ); else - res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, inn_buf.data() ); } if( res && bestSplit->quality < split->quality ) @@ -1982,7 +1982,7 @@ CvDTreeSplit* CvDTree::find_split_ord_class( CvDTreeNode* node, int vi, cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + n*(3*sizeof(int)+sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; float* values_buf = (float*)ext_buf; int* sorted_indices_buf = (int*)(values_buf + n); @@ -2096,7 +2096,7 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, int iters = 0, max_iters = 100; int i, j, idx; cv::AutoBuffer buf(n + k); - double *v_weights = buf, *c_weights = buf + n; + double *v_weights = buf.data(), *c_weights = buf.data() + n; bool modified = true; RNG* r = data->rng; @@ -2201,7 +2201,7 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + 2*n*sizeof(int)); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; int* lc = (int*)base_buf; @@ -2383,7 +2383,7 @@ CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init cv::AutoBuffer inn_buf; if( !_ext_buf ) inn_buf.allocate(2*n*(sizeof(int) + sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); float* values_buf = (float*)ext_buf; int* sorted_indices_buf = (int*)(values_buf + n); int* sample_indices_buf = sorted_indices_buf + n; @@ -2443,7 +2443,7 @@ CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; int* labels_buf = (int*)ext_buf; const int* labels = data->get_cat_var_data(node, vi, labels_buf); @@ -2534,7 +2534,7 @@ CvDTreeSplit* CvDTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, ucha cv::AutoBuffer inn_buf; if( !_ext_buf ) inn_buf.allocate( n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float)) ); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : inn_buf.data(); float* values_buf = (float*)ext_buf; int* sorted_indices_buf = (int*)(values_buf + n); int* sample_indices_buf = sorted_indices_buf + n; @@ -2658,7 +2658,7 @@ CvDTreeSplit* CvDTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, ucha cv::AutoBuffer inn_buf(base_size); if( !_ext_buf ) inn_buf.allocate(base_size + n*(sizeof(int) + (data->have_priors ? sizeof(int) : 0))); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; int* labels_buf = (int*)ext_buf; @@ -2758,7 +2758,7 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) int base_size = data->is_classifier ? m*cv_n*sizeof(int) : 2*cv_n*sizeof(double)+cv_n*sizeof(int); int ext_size = n*(sizeof(int) + (data->is_classifier ? sizeof(int) : sizeof(int)+sizeof(float))); cv::AutoBuffer inn_buf(base_size + ext_size); - uchar* base_buf = (uchar*)inn_buf; + uchar* base_buf = inn_buf.data(); uchar* ext_buf = base_buf + base_size; int* cv_labels_buf = (int*)ext_buf; @@ -2961,7 +2961,7 @@ void CvDTree::complete_node_dir( CvDTreeNode* node ) if( data->get_var_type(vi) >= 0 ) // split on categorical var { - int* labels_buf = (int*)(uchar*)inn_buf; + int* labels_buf = (int*)inn_buf.data(); const int* labels = data->get_cat_var_data(node, vi, labels_buf); const int* subset = split->subset; @@ -2980,7 +2980,7 @@ void CvDTree::complete_node_dir( CvDTreeNode* node ) } else // split on ordered var { - float* values_buf = (float*)(uchar*)inn_buf; + float* values_buf = (float*)inn_buf.data(); int* sorted_indices_buf = (int*)(values_buf + n); int* sample_indices_buf = sorted_indices_buf + n; const float* values = 0; @@ -3042,7 +3042,7 @@ void CvDTree::split_node_data( CvDTreeNode* node ) CvMat* buf = data->buf; size_t length_buf_row = data->get_length_subbuf(); cv::AutoBuffer inn_buf(n*(3*sizeof(int) + sizeof(float))); - int* temp_buf = (int*)(uchar*)inn_buf; + int* temp_buf = (int*)inn_buf.data(); complete_node_dir(node); diff --git a/modules/calib3d/src/calibinit.cpp b/modules/calib3d/src/calibinit.cpp index 7eade39..feaaf4a 100644 --- a/modules/calib3d/src/calibinit.cpp +++ b/modules/calib3d/src/calibinit.cpp @@ -1264,7 +1264,7 @@ icvCleanFoundConnectedQuads( int quad_count, CvCBQuad **quad_group, CvSize patte // get bounding rectangle CvPoint2D32f temp = centers[skip]; // temporarily make index 'skip' the same as centers[skip] = center; // pattern center (so it is not counted for convex hull) - CvMat pointMat = cvMat(1, quad_count, CV_32FC2, centers); + CvMat pointMat = cvMat(1, quad_count, CV_32FC2, centers.data()); CvSeq *hull = cvConvexHull2( &pointMat, temp_storage, CV_CLOCKWISE, 1 ); centers[skip] = temp; double hull_area = fabs(cvContourArea(hull, CV_WHOLE_SEQ)); diff --git a/modules/calib3d/src/ptsetreg.cpp b/modules/calib3d/src/ptsetreg.cpp index 1ed9875..fdf2776 100644 --- a/modules/calib3d/src/ptsetreg.cpp +++ b/modules/calib3d/src/ptsetreg.cpp @@ -104,7 +104,7 @@ public: int maxAttempts=1000 ) const { cv::AutoBuffer _idx(modelPoints); - int* idx = _idx; + int* idx = _idx.data(); int i = 0, j, k, iters = 0; int d1 = m1.channels() > 1 ? m1.channels() : m1.cols; int d2 = m2.channels() > 1 ? m2.channels() : m2.cols; diff --git a/modules/calib3d/src/stereosgbm.cpp b/modules/calib3d/src/stereosgbm.cpp index b6489bf..374d735 100644 --- a/modules/calib3d/src/stereosgbm.cpp +++ b/modules/calib3d/src/stereosgbm.cpp @@ -2451,7 +2451,7 @@ void cv::validateDisparity( InputOutputArray _disp, InputArray _cost, int minDis int minD = minDisparity, maxD = minDisparity + numberOfDisparities; int x, minX1 = std::max(maxD, 0), maxX1 = cols + std::min(minD, 0); AutoBuffer _disp2buf(cols*2); - int* disp2buf = _disp2buf; + int* disp2buf = _disp2buf.data(); int* disp2cost = disp2buf + cols; const int DISP_SHIFT = 4, DISP_SCALE = 1 << DISP_SHIFT; int INVALID_DISP = minD - 1, INVALID_DISP_SCALED = INVALID_DISP*DISP_SCALE; diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h index 4ab72b3..6959c6f 100644 --- a/modules/core/include/opencv2/core/cvdef.h +++ b/modules/core/include/opencv2/core/cvdef.h @@ -255,6 +255,7 @@ Cv64suf; #ifdef __OPENCV_BUILD # define DISABLE_OPENCV_24_COMPATIBILITY +# define OPENCV_DISABLE_DEPRECATED_COMPATIBILITY #endif #ifdef CVAPI_EXPORTS diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index dbbe689..5ea596f 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -282,7 +282,7 @@ static void binary_op( InputArray _src1, InputArray _src2, OutputArray _dst, { blocksize = std::min(blocksize, blocksize0); _buf.allocate(blocksize*esz); - maskbuf = _buf; + maskbuf = _buf.data(); } for( size_t i = 0; i < it.nplanes; i++, ++it ) @@ -312,7 +312,7 @@ static void binary_op( InputArray _src1, InputArray _src2, OutputArray _dst, size_t total = it.size, blocksize = std::min(total, blocksize0); _buf.allocate(blocksize*(haveMask ? 2 : 1)*esz + 32); - scbuf = _buf; + scbuf = _buf.data(); maskbuf = alignPtr(scbuf + blocksize*esz, 16); convertAndUnrollScalar( src2, src1.type(), scbuf, blocksize); @@ -754,7 +754,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, blocksize = std::min(blocksize, blocksize0); _buf.allocate(bufesz*blocksize + 64); - buf = _buf; + buf = _buf.data(); if( cvtsrc1 ) buf1 = buf, buf = alignPtr(buf + blocksize*wsz, 16); if( cvtsrc2 ) @@ -818,7 +818,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, size_t total = it.size, blocksize = std::min(total, blocksize0); _buf.allocate(bufesz*blocksize + 64); - buf = _buf; + buf = _buf.data(); if( cvtsrc1 ) buf1 = buf, buf = alignPtr(buf + blocksize*wsz, 16); buf2 = buf; buf = alignPtr(buf + blocksize*wsz, 16); @@ -1309,7 +1309,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op) size_t total = it.size, blocksize = std::min(total, blocksize0); AutoBuffer _buf(blocksize*esz); - uchar *buf = _buf; + uchar *buf = _buf.data(); if( depth1 > CV_32S ) convertAndUnrollScalar( src2, depth1, buf, blocksize ); @@ -1700,7 +1700,7 @@ static bool ocl_inRange( InputArray _src, InputArray _lowerb, size_t blocksize = 36; AutoBuffer _buf(blocksize*(((int)lbScalar + (int)ubScalar)*esz + cn) + 2*cn*sizeof(int) + 128); - uchar *buf = alignPtr(_buf + blocksize*cn, 16); + uchar *buf = alignPtr(_buf.data() + blocksize*cn, 16); if( ldepth != sdepth && sdepth < CV_32S ) { @@ -1806,7 +1806,7 @@ void cv::inRange(InputArray _src, InputArray _lowerb, size_t total = it.size, blocksize = std::min(total, blocksize0); AutoBuffer _buf(blocksize*(((int)lbScalar + (int)ubScalar)*esz + cn) + 2*cn*sizeof(int) + 128); - uchar *buf = _buf, *mbuf = buf, *lbuf = 0, *ubuf = 0; + uchar *buf = _buf.data(), *mbuf = buf, *lbuf = 0, *ubuf = 0; buf = alignPtr(buf + blocksize*cn, 16); if( lbScalar && ubScalar ) diff --git a/modules/core/src/batch_distance.cpp b/modules/core/src/batch_distance.cpp index 807b7f0..1fd088d 100644 --- a/modules/core/src/batch_distance.cpp +++ b/modules/core/src/batch_distance.cpp @@ -179,7 +179,7 @@ struct BatchDistInvoker : public ParallelLoopBody void operator()(const Range& range) const CV_OVERRIDE { AutoBuffer buf(src2->rows); - int* bufptr = buf; + int* bufptr = buf.data(); for( int i = range.start; i < range.end; i++ ) { diff --git a/modules/core/src/channels.cpp b/modules/core/src/channels.cpp index 065651f..8e88c7d 100644 --- a/modules/core/src/channels.cpp +++ b/modules/core/src/channels.cpp @@ -104,7 +104,7 @@ void cv::mixChannels( const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts, cons int depth = dst[0].depth(); AutoBuffer buf((nsrcs + ndsts + 1)*(sizeof(Mat*) + sizeof(uchar*)) + npairs*(sizeof(uchar*)*2 + sizeof(int)*6)); - const Mat** arrays = (const Mat**)(uchar*)buf; + const Mat** arrays = (const Mat**)(uchar*)buf.data(); uchar** ptrs = (uchar**)(arrays + nsrcs + ndsts); const uchar** srcs = (const uchar**)(ptrs + nsrcs + ndsts + 1); uchar** dsts = (uchar**)(srcs + npairs); @@ -294,7 +294,7 @@ void cv::mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, CV_Assert(nsrc > 0 && ndst > 0); cv::AutoBuffer _buf(nsrc + ndst); - Mat* buf = _buf; + Mat* buf = _buf.data(); for( i = 0; i < nsrc; i++ ) buf[i] = src.getMat(src_is_mat ? -1 : i); for( i = 0; i < ndst; i++ ) @@ -327,7 +327,7 @@ void cv::mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, CV_Assert(fromTo.size()%2 == 0 && nsrc > 0 && ndst > 0); cv::AutoBuffer _buf(nsrc + ndst); - Mat* buf = _buf; + Mat* buf = _buf.data(); for( i = 0; i < nsrc; i++ ) buf[i] = src.getMat(src_is_mat ? -1 : i); for( i = 0; i < ndst; i++ ) diff --git a/modules/core/src/conjugate_gradient.cpp b/modules/core/src/conjugate_gradient.cpp index 400a5ab..fecf0be 100644 --- a/modules/core/src/conjugate_gradient.cpp +++ b/modules/core/src/conjugate_gradient.cpp @@ -52,7 +52,7 @@ namespace cv double eps = getGradientEps(); int i, n = getDims(); AutoBuffer x_buf(n); - double* x_ = x_buf; + double* x_ = x_buf.data(); for( i = 0; i < n; i++ ) x_[i] = x[i]; for( i = 0; i < n; i++ ) diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index e67e58b..b8a52f2 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -531,7 +531,7 @@ Mat& Mat::setTo(InputArray _value, InputArray _mask) int blockSize0 = std::min(totalsz, (int)((BLOCK_SIZE + esz-1)/esz)); blockSize0 -= blockSize0 % mcn; // must be divisible without remainder for unrolling and advancing AutoBuffer _scbuf(blockSize0*esz + 32); - uchar* scbuf = alignPtr((uchar*)_scbuf, (int)sizeof(double)); + uchar* scbuf = alignPtr((uchar*)_scbuf.data(), (int)sizeof(double)); convertAndUnrollScalar( value, type(), scbuf, blockSize0/mcn ); for( size_t i = 0; i < it.nplanes; i++, ++it ) @@ -559,7 +559,7 @@ flipHoriz( const uchar* src, size_t sstep, uchar* dst, size_t dstep, Size size, { int i, j, limit = (int)(((size.width + 1)/2)*esz); AutoBuffer _tab(size.width*esz); - int* tab = _tab; + int* tab = _tab.data(); for( i = 0; i < size.width; i++ ) for( size_t k = 0; k < esz; k++ ) @@ -960,7 +960,7 @@ void copyMakeBorder_8u( const uchar* src, size_t srcstep, cv::Size srcroi, } cv::AutoBuffer _tab((dstroi.width - srcroi.width)*cn); - int* tab = _tab; + int* tab = _tab.data(); int right = dstroi.width - srcroi.width - left; int bottom = dstroi.height - srcroi.height - top; @@ -1031,7 +1031,7 @@ void copyMakeConstBorder_8u( const uchar* src, size_t srcstep, cv::Size srcroi, { int i, j; cv::AutoBuffer _constBuf(dstroi.width*cn); - uchar* constBuf = _constBuf; + uchar* constBuf = _constBuf.data(); int right = dstroi.width - srcroi.width - left; int bottom = dstroi.height - srcroi.height - top; @@ -1224,10 +1224,10 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom, CV_Assert( value[0] == value[1] && value[0] == value[2] && value[0] == value[3] ); cn1 = 1; } - scalarToRawData(value, buf, CV_MAKETYPE(src.depth(), cn1), cn); + scalarToRawData(value, buf.data(), CV_MAKETYPE(src.depth(), cn1), cn); copyMakeConstBorder_8u( src.ptr(), src.step, src.size(), dst.ptr(), dst.step, dst.size(), - top, left, (int)src.elemSize(), (uchar*)(double*)buf ); + top, left, (int)src.elemSize(), (uchar*)buf.data() ); } } diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index a161f86..e7af47b 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -908,7 +908,7 @@ DFT(const OcvDftOptions & c, const Complex* src, Complex* dst) int p, q, factor2 = (factor - 1)/2; int d, dd, dw_f = c.tab_size/factor; AutoBuffer > buf(factor2 * 2); - Complex* a = buf; + Complex* a = buf.data(); Complex* b = a + factor2; for( i = 0; i < c.n; i += n ) @@ -2895,7 +2895,7 @@ protected: uchar* dptr = dptr0; if( needBufferA ) - dptr = tmp_bufA; + dptr = tmp_bufA.data(); contextA->apply(sptr, dptr); @@ -2921,12 +2921,12 @@ protected: const uchar* sptr0 = src_data; uchar* dptr0 = dst_data; - dbuf0 = buf0, dbuf1 = buf1; + dbuf0 = buf0.data(), dbuf1 = buf1.data(); if( needBufferB ) { - dbuf1 = tmp_bufB; - dbuf0 = buf1; + dbuf1 = tmp_bufB.data(); + dbuf0 = buf1.data(); } if( real_transform ) @@ -2937,42 +2937,42 @@ protected: b = (count+1)/2; if( !inv ) { - memset( buf0, 0, len*complex_elem_size ); - CopyColumn( sptr0, src_step, buf0, complex_elem_size, len, elem_size ); + memset( buf0.data(), 0, len*complex_elem_size ); + CopyColumn( sptr0, src_step, buf0.data(), complex_elem_size, len, elem_size ); sptr0 += stage_dst_channels*elem_size; if( even ) { - memset( buf1, 0, len*complex_elem_size ); + memset( buf1.data(), 0, len*complex_elem_size ); CopyColumn( sptr0 + (count-2)*elem_size, src_step, - buf1, complex_elem_size, len, elem_size ); + buf1.data(), complex_elem_size, len, elem_size ); } } else if( stage_src_channels == 1 ) { - CopyColumn( sptr0, src_step, buf0, elem_size, len, elem_size ); - ExpandCCS( buf0, len, elem_size ); + CopyColumn( sptr0, src_step, buf0.data(), elem_size, len, elem_size ); + ExpandCCS( buf0.data(), len, elem_size ); if( even ) { CopyColumn( sptr0 + (count-1)*elem_size, src_step, - buf1, elem_size, len, elem_size ); - ExpandCCS( buf1, len, elem_size ); + buf1.data(), elem_size, len, elem_size ); + ExpandCCS( buf1.data(), len, elem_size ); } sptr0 += elem_size; } else { - CopyColumn( sptr0, src_step, buf0, complex_elem_size, len, complex_elem_size ); + CopyColumn( sptr0, src_step, buf0.data(), complex_elem_size, len, complex_elem_size ); if( even ) { CopyColumn( sptr0 + b*complex_elem_size, src_step, - buf1, complex_elem_size, len, complex_elem_size ); + buf1.data(), complex_elem_size, len, complex_elem_size ); } sptr0 += complex_elem_size; } if( even ) - contextB->apply(buf1, dbuf1); - contextB->apply(buf0, dbuf0); + contextB->apply(buf1.data(), dbuf1); + contextB->apply(buf0.data(), dbuf0); if( stage_dst_channels == 1 ) { @@ -3019,13 +3019,13 @@ protected: { if( i+1 < b ) { - CopyFrom2Columns( sptr0, src_step, buf0, buf1, len, complex_elem_size ); - contextB->apply(buf1, dbuf1); + CopyFrom2Columns( sptr0, src_step, buf0.data(), buf1.data(), len, complex_elem_size ); + contextB->apply(buf1.data(), dbuf1); } else - CopyColumn( sptr0, src_step, buf0, complex_elem_size, len, complex_elem_size ); + CopyColumn( sptr0, src_step, buf0.data(), complex_elem_size, len, complex_elem_size ); - contextB->apply(buf0, dbuf0); + contextB->apply(buf0.data(), dbuf0); if( i+1 < b ) CopyTo2Columns( dbuf0, dbuf1, dptr0, dst_step, len, complex_elem_size ); @@ -3134,9 +3134,9 @@ public: if (len != prev_len || (!inplace_transform && opt.isInverse && real_transform)) { wave_buf.allocate(opt.n*complex_elem_size); - opt.wave = wave_buf; + opt.wave = wave_buf.data(); itab_buf.allocate(opt.n); - opt.itab = itab_buf; + opt.itab = itab_buf.data(); DFTInit( opt.n, opt.nf, opt.factors, opt.itab, complex_elem_size, opt.wave, stage == 0 && opt.isInverse && real_transform ); } @@ -4152,31 +4152,31 @@ public: bool inplace_transform = opt.factors[0] == opt.factors[opt.nf-1]; wave_buf.allocate(len*complex_elem_size); - opt.wave = wave_buf; + opt.wave = wave_buf.data(); itab_buf.allocate(len); - opt.itab = itab_buf; + opt.itab = itab_buf.data(); DFTInit( len, opt.nf, opt.factors, opt.itab, complex_elem_size, opt.wave, isInverse ); dct_wave.allocate((len/2 + 1)*complex_elem_size); src_buf.allocate(len*elem_size); - src_dft_buf = src_buf; + src_dft_buf = src_buf.data(); if(!inplace_transform) { dst_buf.allocate(len*elem_size); - dst_dft_buf = dst_buf; + dst_dft_buf = dst_buf.data(); } else { - dst_dft_buf = src_buf; + dst_dft_buf = src_buf.data(); } - DCTInit( len, complex_elem_size, dct_wave, isInverse); + DCTInit( len, complex_elem_size, dct_wave.data(), isInverse); prev_len = len; } // otherwise reuse the tables calculated on the previous stage for(unsigned i = 0; i < static_cast(count); i++ ) { dct_func( opt, sptr + i*sstep0, sstep1, src_dft_buf, dst_dft_buf, - dptr + i*dstep0, dstep1, dct_wave); + dptr + i*dstep0, dstep1, dct_wave.data()); } src = dst; src_step = dst_step; diff --git a/modules/core/src/kmeans.cpp b/modules/core/src/kmeans.cpp index 6b1a110..c34e254 100644 --- a/modules/core/src/kmeans.cpp +++ b/modules/core/src/kmeans.cpp @@ -330,7 +330,7 @@ double cv::kmeans( InputArray _data, int K, else { for (int k = 0; k < K; k++) - generateRandomCenter(dims, box, centers.ptr(k), rng); + generateRandomCenter(dims, box.data(), centers.ptr(k), rng); } } else @@ -429,14 +429,14 @@ double cv::kmeans( InputArray _data, int K, if (isLastIter) { // don't re-assign labels to avoid creation of empty clusters - parallel_for_(Range(0, N), KMeansDistanceComputer(dists, labels, data, centers), (double)divUp((size_t)(dims * N), CV_KMEANS_PARALLEL_GRANULARITY)); + parallel_for_(Range(0, N), KMeansDistanceComputer(dists.data(), labels, data, centers), (double)divUp((size_t)(dims * N), CV_KMEANS_PARALLEL_GRANULARITY)); compactness = sum(Mat(Size(N, 1), CV_64F, &dists[0]))[0]; break; } else { // assign labels - parallel_for_(Range(0, N), KMeansDistanceComputer(dists, labels, data, centers), (double)divUp((size_t)(dims * N * K), CV_KMEANS_PARALLEL_GRANULARITY)); + parallel_for_(Range(0, N), KMeansDistanceComputer(dists.data(), labels, data, centers), (double)divUp((size_t)(dims * N * K), CV_KMEANS_PARALLEL_GRANULARITY)); } } diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index 8fdbdda..2ec808a 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -401,7 +401,7 @@ JacobiSVDImpl_(_Tp* At, size_t astep, _Tp* _W, _Tp* Vt, size_t vstep, { VBLAS<_Tp> vblas; AutoBuffer Wbuf(n); - double* W = Wbuf; + double* W = Wbuf.data(); int i, j, k, iter, max_iter = std::max(m, 30); _Tp c, s; double sd; @@ -778,7 +778,7 @@ double cv::determinant( InputArray _mat ) { size_t bufSize = rows*rows*sizeof(float); AutoBuffer buffer(bufSize); - Mat a(rows, rows, CV_32F, (uchar*)buffer); + Mat a(rows, rows, CV_32F, buffer.data()); mat.copyTo(a); result = hal::LU32f(a.ptr(), a.step, rows, 0, 0, 0); @@ -801,7 +801,7 @@ double cv::determinant( InputArray _mat ) { size_t bufSize = rows*rows*sizeof(double); AutoBuffer buffer(bufSize); - Mat a(rows, rows, CV_64F, (uchar*)buffer); + Mat a(rows, rows, CV_64F, buffer.data()); mat.copyTo(a); result = hal::LU64f(a.ptr(), a.step, rows, 0, 0, 0); @@ -846,7 +846,7 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) int nm = std::min(m, n); AutoBuffer _buf((m*nm + nm + nm*n)*esz + sizeof(double)); - uchar* buf = alignPtr((uchar*)_buf, (int)esz); + uchar* buf = alignPtr((uchar*)_buf.data(), (int)esz); Mat u(m, nm, type, buf); Mat w(nm, 1, type, u.ptr() + m*nm*esz); Mat vt(nm, n, type, w.ptr() + nm*esz); @@ -865,7 +865,7 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) if( method == DECOMP_EIG ) { AutoBuffer _buf((n*n*2 + n)*esz + sizeof(double)); - uchar* buf = alignPtr((uchar*)_buf, (int)esz); + uchar* buf = alignPtr((uchar*)_buf.data(), (int)esz); Mat u(n, n, type, buf); Mat w(n, 1, type, u.ptr() + n*n*esz); Mat vt(n, n, type, w.ptr() + n*esz); @@ -1063,7 +1063,7 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) int elem_size = CV_ELEM_SIZE(type); AutoBuffer buf(n*n*elem_size); - Mat src1(n, n, type, (uchar*)buf); + Mat src1(n, n, type, buf.data()); src.copyTo(src1); setIdentity(dst); @@ -1267,7 +1267,7 @@ bool cv::solve( InputArray _src, InputArray _src2arg, OutputArray _dst, int meth bufsize += n*5*esz + n*vstep + nb*sizeof(double) + 32; buffer.allocate(bufsize); - uchar* ptr = alignPtr((uchar*)buffer, 16); + uchar* ptr = alignPtr(buffer.data(), 16); Mat a(m_, n, type, ptr, astep); @@ -1445,7 +1445,7 @@ bool cv::eigen( InputArray _src, OutputArray _evals, OutputArray _evects ) size_t elemSize = src.elemSize(), astep = alignSize(n*elemSize, 16); AutoBuffer buf(n*astep + n*5*elemSize + 32); - uchar* ptr = alignPtr((uchar*)buf, 16); + uchar* ptr = alignPtr(buf.data(), 16); Mat a(n, n, type, ptr, astep), w(n, 1, type, ptr + astep*n); ptr += astep*n + elemSize*n; src.copyTo(a); @@ -1489,7 +1489,7 @@ static void _SVDcompute( InputArray _aarr, OutputArray _w, int urows = full_uv ? m : n; size_t esz = src.elemSize(), astep = alignSize(m*esz, 16), vstep = alignSize(n*esz, 16); AutoBuffer _buf(urows*astep + n*vstep + n*esz + 32); - uchar* buf = alignPtr((uchar*)_buf, 16); + uchar* buf = alignPtr(_buf.data(), 16); Mat temp_a(n, m, type, buf, astep); Mat temp_w(n, 1, type, buf + urows*astep); Mat temp_u(urows, m, type, buf, astep), temp_v; @@ -1568,11 +1568,11 @@ void SVD::backSubst( InputArray _w, InputArray _u, InputArray _vt, if( type == CV_32F ) SVBkSb(m, n, w.ptr(), wstep, u.ptr(), u.step, false, vt.ptr(), vt.step, true, rhs.ptr(), rhs.step, nb, - dst.ptr(), dst.step, buffer); + dst.ptr(), dst.step, buffer.data()); else if( type == CV_64F ) SVBkSb(m, n, w.ptr(), wstep, u.ptr(), u.step, false, vt.ptr(), vt.step, true, rhs.ptr(), rhs.step, nb, - dst.ptr(), dst.step, buffer); + dst.ptr(), dst.step, buffer.data()); else CV_Error( CV_StsUnsupportedFormat, "" ); } diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index be6e7de..9154db6 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -586,7 +586,7 @@ void polarToCart( InputArray src1, InputArray src2, if( depth == CV_64F ) { _buf.allocate(blockSize*2); - buf[0] = _buf; + buf[0] = _buf.data(); buf[1] = buf[0] + blockSize; } @@ -1278,8 +1278,8 @@ void pow( InputArray _src, double power, OutputArray _dst ) if( src.ptr() == dst.ptr() ) { buf.allocate(blockSize*esz1); - fbuf = (float*)(uchar*)buf; - dbuf = (double*)(uchar*)buf; + fbuf = (float*)buf.data(); + dbuf = (double*)buf.data(); } for( size_t i = 0; i < it.nplanes; i++, ++it ) @@ -1901,7 +1901,7 @@ double cv::solvePoly( InputArray _coeffs0, OutputArray _roots0, int maxIters ) Mat roots0 = _roots0.getMat(); AutoBuffer buf(n*2+2); - C *coeffs = buf, *roots = coeffs + n + 1; + C *coeffs = buf.data(), *roots = coeffs + n + 1; Mat coeffs1(coeffs0.size(), CV_MAKETYPE(CV_64F, coeffs0.channels()), coeffs0.channels() == 2 ? coeffs : roots); coeffs0.convertTo(coeffs1, coeffs1.type()); if( coeffs0.channels() == 1 ) diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index f67a301..7f624b5 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -165,7 +165,7 @@ GEMMSingleMul( const T* a_data, size_t a_step, if( a_step > 1 && n > 1 ) { _a_buf.allocate(n); - a_buf = _a_buf; + a_buf = _a_buf.data(); } } @@ -177,7 +177,7 @@ GEMMSingleMul( const T* a_data, size_t a_step, if( a_step > 1 && a_size.height > 1 ) { _a_buf.allocate(drows); - a_buf = _a_buf; + a_buf = _a_buf.data(); for( k = 0; k < drows; k++ ) a_buf[k] = a_data[a_step*k]; a_data = a_buf; @@ -186,7 +186,7 @@ GEMMSingleMul( const T* a_data, size_t a_step, if( b_step > 1 ) { _b_buf.allocate(d_size.width); - b_buf = _b_buf; + b_buf = _b_buf.data(); for( j = 0; j < d_size.width; j++ ) b_buf[j] = b_data[j*b_step]; b_data = b_buf; @@ -326,7 +326,7 @@ GEMMSingleMul( const T* a_data, size_t a_step, else { cv::AutoBuffer _d_buf(m); - WT* d_buf = _d_buf; + WT* d_buf = _d_buf.data(); for( i = 0; i < drows; i++, _a_data += a_step0, _c_data += c_step0, d_data += d_step ) { @@ -404,7 +404,7 @@ GEMMBlockMul( const T* a_data, size_t a_step, CV_SWAP( a_step0, a_step1, t_step ); n = a_size.height; _a_buf.allocate(n); - a_buf = _a_buf; + a_buf = _a_buf.data(); } if( flags & GEMM_2_T ) @@ -1354,7 +1354,7 @@ static void gemmImpl( Mat A, Mat B, double alpha, } buf.allocate(d_buf_size + b_buf_size + a_buf_size); - d_buf = (uchar*)buf; + d_buf = buf.data(); b_buf = d_buf + d_buf_size; if( is_a_t ) @@ -2098,7 +2098,7 @@ void cv::transform( InputArray _src, OutputArray _dst, InputArray _mtx ) if( !m.isContinuous() || m.type() != mtype || m.cols != scn + 1 ) { _mbuf.allocate(dcn*(scn+1)); - mbuf = (double*)_mbuf; + mbuf = _mbuf.data(); Mat tmp(dcn, scn+1, mtype, mbuf); memset(tmp.ptr(), 0, tmp.total()*tmp.elemSize()); if( m.cols == scn+1 ) @@ -2273,17 +2273,16 @@ void cv::perspectiveTransform( InputArray _src, OutputArray _dst, InputArray _mt const int mtype = CV_64F; AutoBuffer _mbuf; - double* mbuf = _mbuf; + double* mbuf = m.ptr(); if( !m.isContinuous() || m.type() != mtype ) { _mbuf.allocate((dcn+1)*(scn+1)); - Mat tmp(dcn+1, scn+1, mtype, (double*)_mbuf); + mbuf = _mbuf.data(); + Mat tmp(dcn+1, scn+1, mtype, mbuf); m.convertTo(tmp, mtype); m = tmp; } - else - mbuf = m.ptr(); TransformFunc func = depth == CV_32F ? (TransformFunc)perspectiveTransform_32f : @@ -2612,7 +2611,7 @@ double cv::Mahalanobis( InputArray _v1, InputArray _v2, InputArray _icovar ) const float* src2 = v2.ptr(); size_t step1 = v1.step/sizeof(src1[0]); size_t step2 = v2.step/sizeof(src2[0]); - double* diff = buf; + double* diff = buf.data(); const float* mat = icovar.ptr(); size_t matstep = icovar.step/sizeof(mat[0]); @@ -2622,7 +2621,7 @@ double cv::Mahalanobis( InputArray _v1, InputArray _v2, InputArray _icovar ) diff[i] = src1[i] - src2[i]; } - diff = buf; + diff = buf.data(); for( i = 0; i < len; i++, mat += matstep ) { double row_sum = 0; @@ -2643,7 +2642,7 @@ double cv::Mahalanobis( InputArray _v1, InputArray _v2, InputArray _icovar ) const double* src2 = v2.ptr(); size_t step1 = v1.step/sizeof(src1[0]); size_t step2 = v2.step/sizeof(src2[0]); - double* diff = buf; + double* diff = buf.data(); const double* mat = icovar.ptr(); size_t matstep = icovar.step/sizeof(mat[0]); @@ -2653,7 +2652,7 @@ double cv::Mahalanobis( InputArray _v1, InputArray _v2, InputArray _icovar ) diff[i] = src1[i] - src2[i]; } - diff = buf; + diff = buf.data(); for( i = 0; i < len; i++, mat += matstep ) { double row_sum = 0; @@ -2705,7 +2704,7 @@ MulTransposedR( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal buf_size *= 5; } buf.allocate(buf_size); - col_buf = (dT*)(uchar*)buf; + col_buf = (dT*)buf.data(); if( delta && delta_cols < size.width ) { @@ -2834,7 +2833,7 @@ MulTransposedL( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal dT delta_buf[4]; int delta_shift = delta_cols == size.width ? 4 : 0; AutoBuffer buf(size.width*sizeof(dT)); - dT* row_buf = (dT*)(uchar*)buf; + dT* row_buf = (dT*)buf.data(); for( i = 0; i < size.height; i++, tdst += dststep ) { diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index a003fd4..65ac200 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -410,7 +410,7 @@ Mat::Mat(const Mat& m, const Range& _rowRange, const Range& _colRange) rs[1] = _colRange; for( int i = 2; i < m.dims; i++ ) rs[i] = Range::all(); - *this = m(rs); + *this = m(rs.data()); return; } @@ -897,7 +897,7 @@ Mat Mat::reshape(int _cn, int _newndims, const int* _newsz) const Mat hdr = *this; hdr.flags = (hdr.flags & ~CV_MAT_CN_MASK) | ((_cn-1) << CV_CN_SHIFT); - setSize(hdr, _newndims, (int*)newsz_buf, NULL, true); + setSize(hdr, _newndims, newsz_buf.data(), NULL, true); return hdr; } diff --git a/modules/core/src/matrix_c.cpp b/modules/core/src/matrix_c.cpp index 6d299f7..a4efd4c 100644 --- a/modules/core/src/matrix_c.cpp +++ b/modules/core/src/matrix_c.cpp @@ -169,7 +169,7 @@ Mat cvarrToMat(const CvArr* arr, bool copyData, if( abuf ) { abuf->allocate(((size_t)total*esz + sizeof(double)-1)/sizeof(double)); - double* bufdata = *abuf; + double* bufdata = abuf->data(); cvCvtSeqToArray(seq, bufdata, CV_WHOLE_SEQ); return Mat(total, 1, type, bufdata); } diff --git a/modules/core/src/matrix_decomp.cpp b/modules/core/src/matrix_decomp.cpp index 4bcc61a..7eeb47a 100644 --- a/modules/core/src/matrix_decomp.cpp +++ b/modules/core/src/matrix_decomp.cpp @@ -206,7 +206,7 @@ QRImpl(_Tp* A, size_t astep, int m, int n, int k, _Tp* b, size_t bstep, _Tp* hFa cv::AutoBuffer<_Tp> buffer; size_t buf_size = m ? m + n : hFactors != NULL; buffer.allocate(buf_size); - _Tp* vl = buffer; + _Tp* vl = buffer.data(); if (hFactors == NULL) hFactors = vl + m; diff --git a/modules/core/src/matrix_operations.cpp b/modules/core/src/matrix_operations.cpp index c501c88..74d289b 100644 --- a/modules/core/src/matrix_operations.cpp +++ b/modules/core/src/matrix_operations.cpp @@ -606,7 +606,7 @@ reduceR_( const Mat& srcmat, Mat& dstmat ) Size size = srcmat.size(); size.width *= srcmat.channels(); AutoBuffer buffer(size.width); - WT* buf = buffer; + WT* buf = buffer.data(); ST* dst = dstmat.ptr(); const T* src = srcmat.ptr(); size_t srcstep = srcmat.step/sizeof(src[0]); @@ -1125,7 +1125,6 @@ namespace cv template static void sort_( const Mat& src, Mat& dst, int flags ) { AutoBuffer buf; - T* bptr; int n, len; bool sortRows = (flags & 1) == CV_SORT_EVERY_ROW; bool inplace = src.data == dst.data; @@ -1138,7 +1137,7 @@ template static void sort_( const Mat& src, Mat& dst, int flags ) n = src.cols, len = src.rows; buf.allocate(len); } - bptr = (T*)buf; + T* bptr = buf.data(); for( int i = 0; i < n; i++ ) { @@ -1223,7 +1222,7 @@ static bool ipp_sort(const Mat& src, Mat& dst, int flags) for(int i = 0; i < dst.rows; i++) { - if(CV_INSTRUMENT_FUN_IPP(ippsSortRadix_I, (void*)dst.ptr(i), dst.cols, buffer) < 0) + if(CV_INSTRUMENT_FUN_IPP(ippsSortRadix_I, (void*)dst.ptr(i), dst.cols, buffer.data()) < 0) return false; } } @@ -1248,7 +1247,7 @@ static bool ipp_sort(const Mat& src, Mat& dst, int flags) dstSub = Mat(dst, subRect); srcSub.copyTo(row); - if(CV_INSTRUMENT_FUN_IPP(ippsSortRadix_I, (void*)row.ptr(), dst.rows, buffer) < 0) + if(CV_INSTRUMENT_FUN_IPP(ippsSortRadix_I, (void*)row.ptr(), dst.rows, buffer.data()) < 0) return false; row = row.reshape(1, dstSub.rows); @@ -1286,8 +1285,8 @@ template static void sortIdx_( const Mat& src, Mat& dst, int flags ) buf.allocate(len); ibuf.allocate(len); } - T* bptr = (T*)buf; - int* _iptr = (int*)ibuf; + T* bptr = buf.data(); + int* _iptr = ibuf.data(); for( int i = 0; i < n; i++ ) { @@ -1365,7 +1364,7 @@ static bool ipp_sortIdx( const Mat& src, Mat& dst, int flags ) for(int i = 0; i < src.rows; i++) { - if(CV_INSTRUMENT_FUN_IPP(ippsSortRadixIndex, (const void*)src.ptr(i), (Ipp32s)src.step[1], (Ipp32s*)dst.ptr(i), src.cols, buffer) < 0) + if(CV_INSTRUMENT_FUN_IPP(ippsSortRadixIndex, (const void*)src.ptr(i), (Ipp32s)src.step[1], (Ipp32s*)dst.ptr(i), src.cols, buffer.data()) < 0) return false; } } @@ -1388,7 +1387,7 @@ static bool ipp_sortIdx( const Mat& src, Mat& dst, int flags ) subRect.x = i; dstSub = Mat(dst, subRect); - if(CV_INSTRUMENT_FUN_IPP(ippsSortRadixIndex, (const void*)src.ptr(0, i), srcStep, (Ipp32s*)dstRow.ptr(), src.rows, buffer) < 0) + if(CV_INSTRUMENT_FUN_IPP(ippsSortRadixIndex, (const void*)src.ptr(0, i), srcStep, (Ipp32s*)dstRow.ptr(), src.rows, buffer.data()) < 0) return false; dstRow = dstRow.reshape(1, dstSub.rows); diff --git a/modules/core/src/mean.cpp b/modules/core/src/mean.cpp index 9a7afaa..d0029b3 100644 --- a/modules/core/src/mean.cpp +++ b/modules/core/src/mean.cpp @@ -135,7 +135,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask ) intSumBlockSize = depth <= CV_8S ? (1 << 23) : (1 << 15); blockSize = std::min(blockSize, intSumBlockSize); _buf.allocate(cn); - buf = _buf; + buf = _buf.data(); for( k = 0; k < cn; k++ ) buf[k] = 0; @@ -789,7 +789,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input int total = (int)it.size, blockSize = total, intSumBlockSize = 0; int j, count = 0, nz0 = 0; AutoBuffer _buf(cn*4); - double *s = (double*)_buf, *sq = s + cn; + double *s = (double*)_buf.data(), *sq = s + cn; int *sbuf = (int*)s, *sqbuf = (int*)sq; bool blockSum = depth <= CV_16S, blockSqSum = depth <= CV_8S; size_t esz = 0; diff --git a/modules/core/src/merge.cpp b/modules/core/src/merge.cpp index 6f44b1b..e1fe6ad 100644 --- a/modules/core/src/merge.cpp +++ b/modules/core/src/merge.cpp @@ -496,7 +496,7 @@ void cv::merge(const Mat* mv, size_t n, OutputArray _dst) size_t esz = dst.elemSize(), esz1 = dst.elemSize1(); size_t blocksize0 = (int)((BLOCK_SIZE + esz-1)/esz); AutoBuffer _buf((cn+1)*(sizeof(Mat*) + sizeof(uchar*)) + 16); - const Mat** arrays = (const Mat**)(uchar*)_buf; + const Mat** arrays = (const Mat**)_buf.data(); uchar** ptrs = (uchar**)alignPtr(arrays + cn + 1, 16); arrays[0] = &dst; diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 59b649f..cc6feac 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -617,12 +617,12 @@ public: if (fileSourceSignatureSize == sourceSignatureSize_) { cv::AutoBuffer fileSourceSignature(fileSourceSignatureSize + 1); - f.read((char*)fileSourceSignature, fileSourceSignatureSize); + f.read(fileSourceSignature.data(), fileSourceSignatureSize); if (f.eof()) { CV_LOG_ERROR(NULL, "Unexpected EOF"); } - else if (memcmp(sourceSignature, (const char*)fileSourceSignature, fileSourceSignatureSize) == 0) + else if (memcmp(sourceSignature, fileSourceSignature.data(), fileSourceSignatureSize) == 0) { isValid = true; } @@ -696,10 +696,10 @@ public: { if (entry.keySize > 0) { - f.read((char*)fileKey, entry.keySize); + f.read(fileKey.data(), entry.keySize); CV_Assert(!f.fail()); } - if (memcmp((const char*)fileKey, key.c_str(), entry.keySize) == 0) + if (memcmp(fileKey.data(), key.c_str(), entry.keySize) == 0) { buf.resize(entry.dataSize); f.read(&buf[0], entry.dataSize); @@ -786,10 +786,10 @@ public: { if (entry.keySize > 0) { - f.read((char*)fileKey, entry.keySize); + f.read(fileKey.data(), entry.keySize); CV_Assert(!f.fail()); } - if (0 == memcmp((const char*)fileKey, key.c_str(), entry.keySize)) + if (0 == memcmp(fileKey.data(), key.c_str(), entry.keySize)) { // duplicate CV_LOG_VERBOSE(NULL, 0, "Duplicate key ignored: " << fileName_); @@ -1634,7 +1634,7 @@ inline cl_int getStringInfo(Functor f, ObjectType obj, cl_uint name, std::string if (required > 0) { AutoBuffer buf(required + 1); - char* ptr = (char*)buf; // cleanup is not needed + char* ptr = buf.data(); // cleanup is not needed err = f(obj, name, required, ptr, NULL); if (err != CL_SUCCESS) return err; @@ -2002,7 +2002,7 @@ struct Context::Impl CV_OCL_DBG_CHECK(clGetDeviceIDs(pl, dtype, 0, 0, &nd0)); AutoBuffer dlistbuf(nd0*2+1); - cl_device_id* dlist = (cl_device_id*)(void**)dlistbuf; + cl_device_id* dlist = (cl_device_id*)dlistbuf.data(); cl_device_id* dlist_new = dlist + nd0; CV_OCL_DBG_CHECK(clGetDeviceIDs(pl, dtype, nd0, dlist, &nd0)); String name0; @@ -2465,12 +2465,12 @@ static void get_platform_name(cl_platform_id id, String& name) // get platform name string AutoBuffer buf(sz + 1); - CV_OCL_CHECK(clGetPlatformInfo(id, CL_PLATFORM_NAME, sz, buf, 0)); + CV_OCL_CHECK(clGetPlatformInfo(id, CL_PLATFORM_NAME, sz, buf.data(), 0)); // just in case, ensure trailing zero for ASCIIZ string buf[sz] = 0; - name = (const char*)buf; + name = buf.data(); } /* @@ -3654,7 +3654,7 @@ struct Program::Impl { buffer.resize(retsz + 16); log_retval = clGetProgramBuildInfo(handle, deviceList[0], - CL_PROGRAM_BUILD_LOG, retsz+1, (char*)buffer, &retsz); + CL_PROGRAM_BUILD_LOG, retsz+1, buffer.data(), &retsz); if (log_retval == CL_SUCCESS) { if (retsz < buffer.size()) @@ -3668,7 +3668,7 @@ struct Program::Impl } } - errmsg = String(buffer); + errmsg = String(buffer.data()); printf("OpenCL program build log: %s/%s\nStatus %d: %s\n%s\n%s\n", sourceModule_.c_str(), sourceName_.c_str(), result, getOpenCLErrorString(result), @@ -3701,7 +3701,7 @@ struct Program::Impl { size_t n = ctx.ndevices(); AutoBuffer deviceListBuf(n + 1); - cl_device_id* deviceList = deviceListBuf; + cl_device_id* deviceList = deviceListBuf.data(); for (size_t i = 0; i < n; i++) { deviceList[i] = (cl_device_id)(ctx.device(i).ptr()); @@ -3770,9 +3770,9 @@ struct Program::Impl AutoBuffer binaryPtrs_(ndevices); AutoBuffer binarySizes_(ndevices); - cl_device_id* devices = devices_; - const uchar** binaryPtrs = binaryPtrs_; - size_t* binarySizes = binarySizes_; + cl_device_id* devices = devices_.data(); + const uchar** binaryPtrs = binaryPtrs_.data(); + size_t* binarySizes = binarySizes_.data(); for (size_t i = 0; i < ndevices; i++) { devices[i] = (cl_device_id)ctx.device(i).ptr(); @@ -3781,7 +3781,7 @@ struct Program::Impl } cl_int result = 0; - handle = clCreateProgramWithBinary((cl_context)ctx.ptr(), (cl_uint)ndevices, (cl_device_id*)devices_, + handle = clCreateProgramWithBinary((cl_context)ctx.ptr(), (cl_uint)ndevices, devices_.data(), binarySizes, binaryPtrs, NULL, &result); if (result != CL_SUCCESS) { @@ -3798,7 +3798,7 @@ struct Program::Impl } // call clBuildProgram() { - result = clBuildProgram(handle, (cl_uint)ndevices, (cl_device_id*)devices_, buildflags.c_str(), 0, 0); + result = clBuildProgram(handle, (cl_uint)ndevices, devices_.data(), buildflags.c_str(), 0, 0); CV_OCL_DBG_CHECK_RESULT(result, cv::format("clBuildProgram(binary: %s/%s)", sourceModule_.c_str(), sourceName_.c_str()).c_str()); if (result != CL_SUCCESS) { @@ -6318,7 +6318,7 @@ struct Image2D::Impl AutoBuffer formats(numFormats); err = clGetSupportedImageFormats(context, CL_MEM_READ_WRITE, CL_MEM_OBJECT_IMAGE2D, numFormats, - formats, NULL); + formats.data(), NULL); CV_OCL_DBG_CHECK_RESULT(err, "clGetSupportedImageFormats(CL_MEM_OBJECT_IMAGE2D, formats)"); for (cl_uint i = 0; i < numFormats; ++i) { diff --git a/modules/core/src/persistence_cpp.cpp b/modules/core/src/persistence_cpp.cpp index 9b1e6bd..ab1b1f0 100644 --- a/modules/core/src/persistence_cpp.cpp +++ b/modules/core/src/persistence_cpp.cpp @@ -222,7 +222,7 @@ String FileStorage::getDefaultObjectName(const String& _filename) if( ptr == ptr2 ) CV_Error( CV_StsBadArg, "Invalid filename" ); - char* name = name_buf; + char* name = name_buf.data(); // name must start with letter or '_' if( !cv_isalpha(*ptr) && *ptr!= '_' ){ @@ -237,7 +237,7 @@ String FileStorage::getDefaultObjectName(const String& _filename) *name++ = c; } *name = '\0'; - name = name_buf; + name = name_buf.data(); if( strcmp( name, "_" ) == 0 ) strcpy( name, stubname ); return String(name); diff --git a/modules/core/src/rand.cpp b/modules/core/src/rand.cpp index cac5166..7b7f8ed 100644 --- a/modules/core/src/rand.cpp +++ b/modules/core/src/rand.cpp @@ -542,7 +542,7 @@ void RNG::fill( InputOutputArray _mat, int disttype, if( disttype == UNIFORM ) { _parambuf.allocate(cn*8 + n1 + n2); - double* parambuf = _parambuf; + double* parambuf = _parambuf.data(); double* p1 = _param1.ptr(); double* p2 = _param2.ptr(); @@ -651,7 +651,7 @@ void RNG::fill( InputOutputArray _mat, int disttype, else if( disttype == CV_RAND_NORMAL ) { _parambuf.allocate(MAX(n1, cn) + MAX(n2, cn)); - double* parambuf = _parambuf; + double* parambuf = _parambuf.data(); int ptype = depth == CV_64F ? CV_64F : CV_32F; int esz = (int)CV_ELEM_SIZE(ptype); @@ -701,7 +701,7 @@ void RNG::fill( InputOutputArray _mat, int disttype, if( disttype == UNIFORM ) { buf.allocate(blockSize*cn*4); - param = (uchar*)(double*)buf; + param = (uchar*)(double*)buf.data(); if( depth <= CV_32S ) { @@ -738,7 +738,7 @@ void RNG::fill( InputOutputArray _mat, int disttype, else { buf.allocate((blockSize*cn+1)/2); - nbuf = (float*)(double*)buf; + nbuf = (float*)(double*)buf.data(); } for( size_t i = 0; i < it.nplanes; i++, ++it ) diff --git a/modules/core/src/split.cpp b/modules/core/src/split.cpp index 0452941..4389645 100644 --- a/modules/core/src/split.cpp +++ b/modules/core/src/split.cpp @@ -485,7 +485,7 @@ void cv::split(const Mat& src, Mat* mv) size_t esz = src.elemSize(), esz1 = src.elemSize1(); size_t blocksize0 = (BLOCK_SIZE + esz-1)/esz; AutoBuffer _buf((cn+1)*(sizeof(Mat*) + sizeof(uchar*)) + 16); - const Mat** arrays = (const Mat**)(uchar*)_buf; + const Mat** arrays = (const Mat**)_buf.data(); uchar** ptrs = (uchar**)alignPtr(arrays + cn + 1, 16); arrays[0] = &src; diff --git a/modules/core/src/sum.cpp b/modules/core/src/sum.cpp index 76dec2f..f965823 100644 --- a/modules/core/src/sum.cpp +++ b/modules/core/src/sum.cpp @@ -617,7 +617,7 @@ cv::Scalar cv::sum( InputArray _src ) intSumBlockSize = depth <= CV_8S ? (1 << 23) : (1 << 15); blockSize = std::min(blockSize, intSumBlockSize); _buf.allocate(cn); - buf = _buf; + buf = _buf.data(); for( k = 0; k < cn; k++ ) buf[k] = 0; diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index 49f9cc0..41a589e 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -807,7 +807,7 @@ String format( const char* fmt, ... ) va_list va; va_start(va, fmt); int bsize = static_cast(buf.size()); - int len = cv_vsnprintf((char *)buf, bsize, fmt, va); + int len = cv_vsnprintf(buf.data(), bsize, fmt, va); va_end(va); CV_Assert(len >= 0 && "Check format string for errors"); @@ -817,7 +817,7 @@ String format( const char* fmt, ... ) continue; } buf[bsize - 1] = 0; - return String((char *)buf, len); + return String(buf.data(), len); } } diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index f89f777..f61126b 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -502,7 +502,7 @@ UMat::UMat(const UMat& m, const Range& _rowRange, const Range& _colRange) rs[1] = _colRange; for( int i = 2; i < m.dims; i++ ) rs[i] = Range::all(); - *this = m(rs); + *this = m(rs.data()); return; } @@ -805,7 +805,7 @@ UMat UMat::reshape(int _cn, int _newndims, const int* _newsz) const UMat hdr = *this; hdr.flags = (hdr.flags & ~CV_MAT_CN_MASK) | ((_cn-1) << CV_CN_SHIFT); - setSize(hdr, _newndims, (int*)newsz_buf, NULL, true); + setSize(hdr, _newndims, newsz_buf.data(), NULL, true); return hdr; } diff --git a/modules/core/src/utils/filesystem.cpp b/modules/core/src/utils/filesystem.cpp index d7eeffc..23bed07 100644 --- a/modules/core/src/utils/filesystem.cpp +++ b/modules/core/src/utils/filesystem.cpp @@ -158,13 +158,13 @@ cv::String getcwd() #else DWORD sz = GetCurrentDirectoryA(0, NULL); buf.allocate((size_t)sz); - sz = GetCurrentDirectoryA((DWORD)buf.size(), (char*)buf); - return cv::String((char*)buf, (size_t)sz); + sz = GetCurrentDirectoryA((DWORD)buf.size(), buf.data()); + return cv::String(buf.data(), (size_t)sz); #endif #elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ for(;;) { - char* p = ::getcwd((char*)buf, buf.size()); + char* p = ::getcwd(buf.data(), buf.size()); if (p == NULL) { if (errno == ERANGE) @@ -176,7 +176,7 @@ cv::String getcwd() } break; } - return cv::String((char*)buf, (size_t)strlen((char*)buf)); + return cv::String(buf.data(), (size_t)strlen(buf.data())); #else return cv::String(); #endif diff --git a/modules/core/test/test_rand.cpp b/modules/core/test/test_rand.cpp index baccbc9..82bb610 100644 --- a/modules/core/test/test_rand.cpp +++ b/modules/core/test/test_rand.cpp @@ -374,9 +374,9 @@ TEST(Core_Rand, Regression_Stack_Corruption) int bufsz = 128; //enough for 14 doubles AutoBuffer buffer(bufsz); size_t offset = 0; - cv::Mat_ x(2, 3, (cv::Point2d*)(buffer+offset)); offset += x.total()*x.elemSize(); - double& param1 = *(double*)(buffer+offset); offset += sizeof(double); - double& param2 = *(double*)(buffer+offset); offset += sizeof(double); + cv::Mat_ x(2, 3, (cv::Point2d*)(buffer.data()+offset)); offset += x.total()*x.elemSize(); + double& param1 = *(double*)(buffer.data()+offset); offset += sizeof(double); + double& param2 = *(double*)(buffer.data()+offset); offset += sizeof(double); param1 = -9; param2 = 2; cv::theRNG().fill(x, cv::RNG::NORMAL, param1, param2); diff --git a/modules/dnn/src/layers/convolution_layer.cpp b/modules/dnn/src/layers/convolution_layer.cpp index 27818e5..2958d66 100644 --- a/modules/dnn/src/layers/convolution_layer.cpp +++ b/modules/dnn/src/layers/convolution_layer.cpp @@ -586,7 +586,7 @@ public: float* data_out0_ = output_->ptr(); size_t rowbufsz = (size_t)karea*BLK_SIZE_CN*BLK_SIZE; AutoBuffer rowbuf0_(rowbufsz + valign); - float* rowbuf0 = alignPtr((float*)rowbuf0_, (int)(valign*sizeof(float))); + float* rowbuf0 = alignPtr(rowbuf0_.data(), (int)(valign*sizeof(float))); // we clear the buffer once; ultimately, it lets us to avoid // tail processing after running the unrolled/vectorized loop. diff --git a/modules/dnn/src/layers/fully_connected_layer.cpp b/modules/dnn/src/layers/fully_connected_layer.cpp index 499f672..dfaa58c 100644 --- a/modules/dnn/src/layers/fully_connected_layer.cpp +++ b/modules/dnn/src/layers/fully_connected_layer.cpp @@ -182,7 +182,7 @@ public: size_t stripeEnd = r.end == nstripes ? total : std::min(r.end*stripeSize, total); size_t wstep = weights->step1(); AutoBuffer srcbuf(vecsize_aligned + valign); - float* sptr = alignPtr((float*)srcbuf, (int)(valign*sizeof(float))); + float* sptr = alignPtr(srcbuf.data(), (int)(valign*sizeof(float))); for( k = vecsize; k < vecsize_aligned; k++ ) sptr[k] = 0.f; diff --git a/modules/dnn/src/layers/lrn_layer.cpp b/modules/dnn/src/layers/lrn_layer.cpp index cfa95e9..8ff8390 100644 --- a/modules/dnn/src/layers/lrn_layer.cpp +++ b/modules/dnn/src/layers/lrn_layer.cpp @@ -211,7 +211,7 @@ public: int k, channels = channels_, ksize = ksize_; AutoBuffer buf_((channels + ksize + 1)*2); - float* acc = (float*)buf_; + float* acc = buf_.data(); float* buf = acc + channels + ksize + 1; for( k = 0; k <= ksize; k++ ) buf[-k-1] = buf[channels + k] = 0.f; diff --git a/modules/dnn/src/torch/torch_importer.cpp b/modules/dnn/src/torch/torch_importer.cpp index 88779e9..049c83f 100644 --- a/modules/dnn/src/torch/torch_importer.cpp +++ b/modules/dnn/src/torch/torch_importer.cpp @@ -370,8 +370,8 @@ struct TorchImporter int ndims = readInt(); AutoBuffer sizes(ndims); AutoBuffer steps(ndims); - THFile_readLongRaw(file, sizes, ndims); - THFile_readLongRaw(file, steps, ndims); + THFile_readLongRaw(file, sizes.data(), ndims); + THFile_readLongRaw(file, steps.data(), ndims); long offset = readLong() - 1; //read Storage @@ -411,7 +411,7 @@ struct TorchImporter } //allocate Blob - Mat srcMat(ndims, (int*)isizes, typeTensor , storages[indexStorage].ptr() + offset*CV_ELEM_SIZE(typeTensor), (size_t*)ssteps); + Mat srcMat(ndims, isizes.data(), typeTensor , storages[indexStorage].ptr() + offset*CV_ELEM_SIZE(typeTensor), ssteps.data()); int dstType = CV_32F; Mat blob; diff --git a/modules/features2d/src/fast.cpp b/modules/features2d/src/fast.cpp index e34fa8f..4a7071b 100644 --- a/modules/features2d/src/fast.cpp +++ b/modules/features2d/src/fast.cpp @@ -83,7 +83,7 @@ void FAST_t(InputArray _img, std::vector& keypoints, int threshold, bo AutoBuffer _buf((img.cols+16)*3*(sizeof(int) + sizeof(uchar)) + 128); uchar* buf[3]; - buf[0] = _buf; buf[1] = buf[0] + img.cols; buf[2] = buf[1] + img.cols; + buf[0] = _buf.data(); buf[1] = buf[0] + img.cols; buf[2] = buf[1] + img.cols; int* cpbuf[3]; cpbuf[0] = (int*)alignPtr(buf[2] + img.cols, sizeof(int)) + 1; cpbuf[1] = cpbuf[0] + img.cols + 1; diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 453ddf4..dc9664e 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -143,7 +143,7 @@ HarrisResponses(const Mat& img, const std::vector& layerinfo, float scale_sq_sq = scale * scale * scale * scale; AutoBuffer ofsbuf(blockSize*blockSize); - int* ofs = ofsbuf; + int* ofs = ofsbuf.data(); for( int i = 0; i < blockSize; i++ ) for( int j = 0; j < blockSize; j++ ) ofs[i*blockSize + j] = (int)(i*step + j); diff --git a/modules/flann/include/opencv2/flann/kmeans_index.h b/modules/flann/include/opencv2/flann/kmeans_index.h index 2f48e40..09d5bd2 100644 --- a/modules/flann/include/opencv2/flann/kmeans_index.h +++ b/modules/flann/include/opencv2/flann/kmeans_index.h @@ -726,7 +726,7 @@ private: } cv::AutoBuffer centers_idx_buf(branching); - int* centers_idx = (int*)centers_idx_buf; + int* centers_idx = centers_idx_buf.data(); int centers_length; (this->*chooseCenters)(branching, indices, indices_length, centers_idx, centers_length); @@ -739,7 +739,7 @@ private: cv::AutoBuffer dcenters_buf(branching*veclen_); - Matrix dcenters((double*)dcenters_buf,branching,veclen_); + Matrix dcenters(dcenters_buf.data(), branching, veclen_); for (int i=0; i radiuses(branching); cv::AutoBuffer count_buf(branching); - int* count = (int*)count_buf; + int* count = count_buf.data(); for (int i=0; i belongs_to_buf(indices_length); - int* belongs_to = (int*)belongs_to_buf; + int* belongs_to = belongs_to_buf.data(); for (int i=0; i& params ) if( channels > 1 ) _buffer.allocate(width*channels); - buffer = _buffer; + buffer = _buffer.data(); for( int y = 0; y < height; y++ ) { diff --git a/modules/imgcodecs/src/grfmt_pam.cpp b/modules/imgcodecs/src/grfmt_pam.cpp index e300d33..9c9aa9e 100644 --- a/modules/imgcodecs/src/grfmt_pam.cpp +++ b/modules/imgcodecs/src/grfmt_pam.cpp @@ -496,9 +496,7 @@ bool PAMDecoder::readData( Mat& img ) /* setting buffer to max data size so scaling up is possible */ AutoBuffer _src(src_elems_per_row * 2); - uchar* src = _src; - AutoBuffer _gray_palette; - uchar* gray_palette = _gray_palette; + uchar* src = _src.data(); if( m_offset < 0 || !m_strm.isOpened()) return false; @@ -544,10 +542,7 @@ bool PAMDecoder::readData( Mat& img ) if (bit_mode) { if( target_channels == 1 ) { - _gray_palette.allocate(2); - gray_palette = _gray_palette; - gray_palette[0] = 0; - gray_palette[1] = 255; + uchar gray_palette[2] = {0, 255}; for( y = 0; y < m_height; y++, data += imp_stride ) { m_strm.getBytes( src, src_stride ); @@ -683,7 +678,7 @@ bool PAMEncoder::write( const Mat& img, const std::vector& params ) bufsize = tmp; AutoBuffer _buffer(bufsize); - char* buffer = _buffer; + char* buffer = _buffer.data(); /* write header */ tmp = 0; diff --git a/modules/imgcodecs/src/grfmt_png.cpp b/modules/imgcodecs/src/grfmt_png.cpp index 06df985..36324c2 100644 --- a/modules/imgcodecs/src/grfmt_png.cpp +++ b/modules/imgcodecs/src/grfmt_png.cpp @@ -225,7 +225,7 @@ bool PngDecoder::readData( Mat& img ) { volatile bool result = false; AutoBuffer _buffer(m_height); - uchar** buffer = _buffer; + uchar** buffer = _buffer.data(); int color = img.channels() > 1; png_structp png_ptr = (png_structp)m_png_ptr; @@ -426,7 +426,7 @@ bool PngEncoder::write( const Mat& img, const std::vector& params ) for( y = 0; y < height; y++ ) buffer[y] = img.data + y*img.step; - png_write_image( png_ptr, buffer ); + png_write_image( png_ptr, buffer.data() ); png_write_end( png_ptr, info_ptr ); result = true; diff --git a/modules/imgcodecs/src/grfmt_pxm.cpp b/modules/imgcodecs/src/grfmt_pxm.cpp index b7186ce..7c5c991 100644 --- a/modules/imgcodecs/src/grfmt_pxm.cpp +++ b/modules/imgcodecs/src/grfmt_pxm.cpp @@ -245,7 +245,7 @@ bool PxMDecoder::readData( Mat& img ) if( !m_binary ) { AutoBuffer _src(m_width); - uchar* src = _src; + uchar* src = _src.data(); for (int y = 0; y < m_height; y++, data += img.step) { @@ -261,7 +261,7 @@ bool PxMDecoder::readData( Mat& img ) else { AutoBuffer _src(src_pitch); - uchar* src = _src; + uchar* src = _src.data(); for (int y = 0; y < m_height; y++, data += img.step) { @@ -281,7 +281,7 @@ bool PxMDecoder::readData( Mat& img ) case 24: { AutoBuffer _src(std::max(width3*2, src_pitch)); - uchar* src = _src; + uchar* src = _src.data(); for (int y = 0; y < m_height; y++, data += img.step) { @@ -463,7 +463,7 @@ bool PxMEncoder::write(const Mat& img, const std::vector& params) bufferSize = lineLength; AutoBuffer _buffer(bufferSize); - char* buffer = _buffer; + char* buffer = _buffer.data(); // write header; const int code = ((mode == PXM_TYPE_PBM) ? 1 : (mode == PXM_TYPE_PGM) ? 2 : 3) diff --git a/modules/imgcodecs/src/grfmt_sunras.cpp b/modules/imgcodecs/src/grfmt_sunras.cpp index b419b77..ec17685 100644 --- a/modules/imgcodecs/src/grfmt_sunras.cpp +++ b/modules/imgcodecs/src/grfmt_sunras.cpp @@ -174,7 +174,7 @@ bool SunRasterDecoder::readData( Mat& img ) return false; AutoBuffer _src(src_pitch + 32); - uchar* src = _src; + uchar* src = _src.data(); if( !color && m_maptype == RMT_EQUAL_RGB ) CvtPaletteToGray( m_palette, gray_palette, 1 << m_bpp ); diff --git a/modules/imgcodecs/src/grfmt_tiff.cpp b/modules/imgcodecs/src/grfmt_tiff.cpp index 901bfce..8dcbe5b 100644 --- a/modules/imgcodecs/src/grfmt_tiff.cpp +++ b/modules/imgcodecs/src/grfmt_tiff.cpp @@ -355,7 +355,7 @@ bool TiffDecoder::readData( Mat& img ) } const size_t buffer_size = (bpp/bitsPerByte) * ncn * tile_height0 * tile_width0; AutoBuffer _buffer( buffer_size ); - uchar* buffer = _buffer; + uchar* buffer = _buffer.data(); ushort* buffer16 = (ushort*)buffer; float* buffer32 = (float*)buffer; double* buffer64 = (double*)buffer; @@ -834,7 +834,7 @@ bool TiffEncoder::writeLibTiff( const std::vector& img_vec, const std::vect // row buffer, because TIFFWriteScanline modifies the original data! size_t scanlineSize = TIFFScanlineSize(pTiffHandle); AutoBuffer _buffer(scanlineSize + 32); - uchar* buffer = _buffer; + uchar* buffer = _buffer.data(); if (!buffer) { TIFFClose(pTiffHandle); diff --git a/modules/imgproc/src/approx.cpp b/modules/imgproc/src/approx.cpp index 49b7755..0af613d 100644 --- a/modules/imgproc/src/approx.cpp +++ b/modules/imgproc/src/approx.cpp @@ -63,7 +63,7 @@ CvSeq* icvApproximateChainTC89( CvChain* chain, int header_size, cv::AutoBuffer<_CvPtInfo> buf(chain->total + 8); _CvPtInfo temp; - _CvPtInfo *array = buf, *first = 0, *current = 0, *prev_current = 0; + _CvPtInfo *array = buf.data(), *first = 0, *current = 0, *prev_current = 0; int i, j, i1, i2, s, len; int count = chain->total; @@ -475,14 +475,14 @@ namespace cv template static int approxPolyDP_( const Point_* src_contour, int count0, Point_* dst_contour, - bool is_closed0, double eps, AutoBuffer* _stack ) + bool is_closed0, double eps, AutoBuffer& _stack ) { #define PUSH_SLICE(slice) \ if( top >= stacksz ) \ { \ - _stack->resize(stacksz*3/2); \ - stack = *_stack; \ - stacksz = _stack->size(); \ + _stack.resize(stacksz*3/2); \ + stack = _stack.data(); \ + stacksz = _stack.size(); \ } \ stack[top++] = slice @@ -504,8 +504,8 @@ approxPolyDP_( const Point_* src_contour, int count0, Point_* dst_contour, int i = 0, j, pos = 0, wpos, count = count0, new_count=0; int is_closed = is_closed0; bool le_eps = false; - size_t top = 0, stacksz = _stack->size(); - Range* stack = *_stack; + size_t top = 0, stacksz = _stack.size(); + Range* stack = _stack.data(); if( count == 0 ) return 0; @@ -689,13 +689,13 @@ void cv::approxPolyDP( InputArray _curve, OutputArray _approxCurve, AutoBuffer _buf(npoints); AutoBuffer _stack(npoints); - Point* buf = _buf; + Point* buf = _buf.data(); int nout = 0; if( depth == CV_32S ) - nout = approxPolyDP_(curve.ptr(), npoints, buf, closed, epsilon, &_stack); + nout = approxPolyDP_(curve.ptr(), npoints, buf, closed, epsilon, _stack); else if( depth == CV_32F ) - nout = approxPolyDP_(curve.ptr(), npoints, (Point2f*)buf, closed, epsilon, &_stack); + nout = approxPolyDP_(curve.ptr(), npoints, (Point2f*)buf, closed, epsilon, _stack); else CV_Error( CV_StsUnsupportedFormat, "" ); @@ -783,7 +783,7 @@ cvApproxPoly( const void* array, int header_size, { int npoints = src_seq->total, nout = 0; _buf.allocate(npoints*2); - cv::Point *src = _buf, *dst = src + npoints; + cv::Point *src = _buf.data(), *dst = src + npoints; bool closed = CV_IS_SEQ_CLOSED(src_seq); if( src_seq->first->next == src_seq->first ) @@ -792,10 +792,10 @@ cvApproxPoly( const void* array, int header_size, cvCvtSeqToArray(src_seq, src); if( CV_SEQ_ELTYPE(src_seq) == CV_32SC2 ) - nout = cv::approxPolyDP_(src, npoints, dst, closed, parameter, &stack); + nout = cv::approxPolyDP_(src, npoints, dst, closed, parameter, stack); else if( CV_SEQ_ELTYPE(src_seq) == CV_32FC2 ) nout = cv::approxPolyDP_((cv::Point2f*)src, npoints, - (cv::Point2f*)dst, closed, parameter, &stack); + (cv::Point2f*)dst, closed, parameter, stack); else CV_Error( CV_StsUnsupportedFormat, "" ); diff --git a/modules/imgproc/src/canny.cpp b/modules/imgproc/src/canny.cpp index 1d41372..eaea6b2 100644 --- a/modules/imgproc/src/canny.cpp +++ b/modules/imgproc/src/canny.cpp @@ -390,21 +390,21 @@ public: { dxMax.allocate(2 * dx.cols); dyMax.allocate(2 * dy.cols); - _dx_a = (short*)dxMax; + _dx_a = dxMax.data(); _dx_n = _dx_a + dx.cols; - _dy_a = (short*)dyMax; + _dy_a = dyMax.data(); _dy_n = _dy_a + dy.cols; } // _mag_p: previous row, _mag_a: actual row, _mag_n: next row #if CV_SIMD128 AutoBuffer buffer(3 * (mapstep * cn + CV_MALLOC_SIMD128)); - _mag_p = alignPtr((int*)buffer + 1, CV_MALLOC_SIMD128); + _mag_p = alignPtr(buffer.data() + 1, CV_MALLOC_SIMD128); _mag_a = alignPtr(_mag_p + mapstep * cn, CV_MALLOC_SIMD128); _mag_n = alignPtr(_mag_a + mapstep * cn, CV_MALLOC_SIMD128); #else AutoBuffer buffer(3 * (mapstep * cn)); - _mag_p = (int*)buffer + 1; + _mag_p = buffer.data() + 1; _mag_a = _mag_p + mapstep * cn; _mag_n = _mag_a + mapstep * cn; #endif diff --git a/modules/imgproc/src/clahe.cpp b/modules/imgproc/src/clahe.cpp index fffc194..84ea287 100644 --- a/modules/imgproc/src/clahe.cpp +++ b/modules/imgproc/src/clahe.cpp @@ -230,7 +230,7 @@ namespace src_(src), dst_(dst), lut_(lut), tileSize_(tileSize), tilesX_(tilesX), tilesY_(tilesY) { buf.allocate(src.cols << 2); - ind1_p = (int *)buf; + ind1_p = buf.data(); ind2_p = ind1_p + src.cols; xa_p = (float *)(ind2_p + src.cols); xa1_p = xa_p + src.cols; diff --git a/modules/imgproc/src/color_lab.cpp b/modules/imgproc/src/color_lab.cpp index 61e30a9..10640d5 100644 --- a/modules/imgproc/src/color_lab.cpp +++ b/modules/imgproc/src/color_lab.cpp @@ -1398,7 +1398,7 @@ static LABLUVLUT_s16_t initLUTforLABLUVs16(const softfloat & un, const softfloat for (int p_ = 0; p_ < 2; ++p_) for (int q_ = 0; q_ < 2; ++q_) for (int r_ = 0; r_ < 2; ++r_) - fill_one(RGB2LabLUT_s16, RGB2Labprev, RGB2LuvLUT_s16, RGB2Luvprev, p, q, r, p_, q_, r_); + fill_one(RGB2LabLUT_s16, RGB2Labprev.data(), RGB2LuvLUT_s16, RGB2Luvprev.data(), p, q, r, p_, q_, r_); LABLUVLUT_s16_t res; res.RGB2LabLUT_s16 = RGB2LabLUT_s16; res.RGB2LuvLUT_s16 = RGB2LuvLUT_s16; diff --git a/modules/imgproc/src/convhull.cpp b/modules/imgproc/src/convhull.cpp index 5f816ef..e1db716 100644 --- a/modules/imgproc/src/convhull.cpp +++ b/modules/imgproc/src/convhull.cpp @@ -147,11 +147,11 @@ void convexHull( InputArray _points, OutputArray _hull, bool clockwise, bool ret bool is_float = depth == CV_32F; AutoBuffer _pointer(total); AutoBuffer _stack(total + 2), _hullbuf(total); - Point** pointer = _pointer; + Point** pointer = _pointer.data(); Point2f** pointerf = (Point2f**)pointer; Point* data0 = points.ptr(); - int* stack = _stack; - int* hullbuf = _hullbuf; + int* stack = _stack.data(); + int* hullbuf = _hullbuf.data(); CV_Assert(points.isContinuous()); diff --git a/modules/imgproc/src/corner.cpp b/modules/imgproc/src/corner.cpp index e784fa2..8d1857f 100644 --- a/modules/imgproc/src/corner.cpp +++ b/modules/imgproc/src/corner.cpp @@ -542,7 +542,7 @@ static bool ipp_cornerMinEigenVal( InputArray _src, OutputArray _dst, int blockS if (ok >= 0) { AutoBuffer buffer(bufferSize); - ok = CV_INSTRUMENT_FUN_IPP(ippiMinEigenVal_C1R, src.ptr(), (int) src.step, dst.ptr(), (int) dst.step, srcRoi, kerType, kerSize, blockSize, buffer); + ok = CV_INSTRUMENT_FUN_IPP(ippiMinEigenVal_C1R, src.ptr(), (int) src.step, dst.ptr(), (int) dst.step, srcRoi, kerType, kerSize, blockSize, buffer.data()); CV_SUPPRESS_DEPRECATED_START if (ok >= 0) ok = CV_INSTRUMENT_FUN_IPP(ippiMulC_32f_C1IR, norm_coef, dst.ptr(), (int) dst.step, srcRoi); CV_SUPPRESS_DEPRECATED_END diff --git a/modules/imgproc/src/demosaicing.cpp b/modules/imgproc/src/demosaicing.cpp index 05920d2..f70f3e8 100644 --- a/modules/imgproc/src/demosaicing.cpp +++ b/modules/imgproc/src/demosaicing.cpp @@ -976,7 +976,7 @@ static void Bayer2RGB_VNG_8u( const Mat& srcmat, Mat& dstmat, int code ) int N = size.width, N2 = N*2, N3 = N*3, N4 = N*4, N5 = N*5, N6 = N*6, N7 = N*7; int i, bufstep = N7*bcn; cv::AutoBuffer _buf(bufstep*brows); - ushort* buf = (ushort*)_buf; + ushort* buf = _buf.data(); bayer += bstep*2; diff --git a/modules/imgproc/src/distransform.cpp b/modules/imgproc/src/distransform.cpp index 8e7774a..b91f9b8 100644 --- a/modules/imgproc/src/distransform.cpp +++ b/modules/imgproc/src/distransform.cpp @@ -458,7 +458,7 @@ struct DTColumnInvoker : ParallelLoopBody int m = src->rows; size_t sstep = src->step, dstep = dst->step/sizeof(float); AutoBuffer _d(m); - int* d = _d; + int* d = _d.data(); for( i = i1; i < i2; i++ ) { @@ -503,7 +503,7 @@ struct DTRowInvoker : ParallelLoopBody int i, i1 = range.start, i2 = range.end; int n = dst->cols; AutoBuffer _buf((n+2)*2*sizeof(float) + (n+2)*sizeof(int)); - float* f = (float*)(uchar*)_buf; + float* f = (float*)_buf.data(); float* z = f + n; int* v = alignPtr((int*)(z + n + 1), sizeof(int)); @@ -564,7 +564,7 @@ trueDistTrans( const Mat& src, Mat& dst ) cv::AutoBuffer _buf(std::max(m*2*sizeof(float) + (m*3+1)*sizeof(int), n*2*sizeof(float))); // stage 1: compute 1d distance transform of each column - float* sqr_tab = (float*)(uchar*)_buf; + float* sqr_tab = (float*)_buf.data(); int* sat_tab = cv::alignPtr((int*)(sqr_tab + m*2), sizeof(int)); int shift = m*2; diff --git a/modules/imgproc/src/drawing.cpp b/modules/imgproc/src/drawing.cpp index 05a9150..b71b920 100644 --- a/modules/imgproc/src/drawing.cpp +++ b/modules/imgproc/src/drawing.cpp @@ -2398,8 +2398,8 @@ void cv::fillPoly(InputOutputArray _img, InputArrayOfArrays pts, return; AutoBuffer _ptsptr(ncontours); AutoBuffer _npts(ncontours); - Point** ptsptr = _ptsptr; - int* npts = _npts; + Point** ptsptr = _ptsptr.data(); + int* npts = _npts.data(); for( i = 0; i < ncontours; i++ ) { @@ -2426,8 +2426,8 @@ void cv::polylines(InputOutputArray _img, InputArrayOfArrays pts, return; AutoBuffer _ptsptr(ncontours); AutoBuffer _npts(ncontours); - Point** ptsptr = _ptsptr; - int* npts = _npts; + Point** ptsptr = _ptsptr.data(); + int* npts = _npts.data(); for( i = 0; i < ncontours; i++ ) { diff --git a/modules/imgproc/src/emd.cpp b/modules/imgproc/src/emd.cpp index a87c440..0b985a0 100644 --- a/modules/imgproc/src/emd.cpp +++ b/modules/imgproc/src/emd.cpp @@ -359,7 +359,7 @@ static int icvInitEMD( const float* signature1, int size1, /* allocate buffers */ _buffer.allocate(buffer_size); - state->buffer = buffer = _buffer; + state->buffer = buffer = _buffer.data(); buffer_end = buffer + buffer_size; state->idx1 = (int*) buffer; diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index d83c2a0..23c5607 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -1444,7 +1444,7 @@ private: return 0; } AutoBuffer buf(bufsz + 64); - uchar* bufptr = alignPtr((uchar*)buf, 32); + uchar* bufptr = alignPtr(buf.data(), 32); int step = (int)(width*sizeof(dst[0])*cn); float borderValue[] = {0.f, 0.f, 0.f}; // here is the trick. IPP needs border type and extrapolates the row. We did it already. diff --git a/modules/imgproc/src/geometry.cpp b/modules/imgproc/src/geometry.cpp index e2ace81..421fa64 100644 --- a/modules/imgproc/src/geometry.cpp +++ b/modules/imgproc/src/geometry.cpp @@ -524,7 +524,7 @@ float cv::intersectConvexConvex( InputArray _p1, InputArray _p2, OutputArray _p1 } AutoBuffer _result(n*2 + m*2 + 1); - Point2f *fp1 = _result, *fp2 = fp1 + n; + Point2f *fp1 = _result.data(), *fp2 = fp1 + n; Point2f* result = fp2 + m; int orientation = 0; diff --git a/modules/imgproc/src/hough.cpp b/modules/imgproc/src/hough.cpp index 1f61146..18c5322 100644 --- a/modules/imgproc/src/hough.cpp +++ b/modules/imgproc/src/hough.cpp @@ -165,11 +165,11 @@ HoughLinesStandard( InputArray src, OutputArray lines, int type, AutoBuffer _tabSin(numangle); AutoBuffer _tabCos(numangle); int *accum = _accum.ptr(); - float *tabSin = _tabSin, *tabCos = _tabCos; + float *tabSin = _tabSin.data(), *tabCos = _tabCos.data(); // create sin and cos table createTrigTable( numangle, min_theta, theta, - irho, tabSin, tabCos ); + irho, tabSin, tabCos); // stage 1. fill accumulator for( i = 0; i < height; i++ ) @@ -963,7 +963,7 @@ void HoughLinesPointSet( InputArray _point, OutputArray _lines, int lines_max, i AutoBuffer _tabSin(numangle); AutoBuffer _tabCos(numangle); int *accum = _accum.ptr(); - float *tabSin = _tabSin, *tabCos = _tabCos; + float *tabSin = _tabSin.data(), *tabCos = _tabCos.data(); // create sin and cos table createTrigTable( numangle, min_theta, theta_step, @@ -1408,8 +1408,8 @@ protected: int nBins = cvRound((maxRadius - minRadius)/dr*nBinsPerDr); AutoBuffer bins(nBins); AutoBuffer distBuf(nzSz), distSqrtBuf(nzSz); - float *ddata = distBuf; - float *dSqrtData = distSqrtBuf; + float *ddata = distBuf.data(); + float *dSqrtData = distSqrtBuf.data(); bool singleThread = (boundaries == Range(0, centerSz)); int i = boundaries.start; @@ -1434,7 +1434,7 @@ protected: Mat_ distSqrtMat(1, nzCount, dSqrtData); sqrt(distMat, distSqrtMat); - memset(bins, 0, sizeof(bins[0])*bins.size()); + memset(bins.data(), 0, sizeof(bins[0])*bins.size()); for(int k = 0; k < nzCount; k++) { int bin = std::max(0, std::min(nBins-1, cvRound((dSqrtData[k] - minRadius)/dr*nBinsPerDr))); diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index adc201a..9e069bc 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -228,7 +228,7 @@ static const void* initInterTab2D( int method, bool fixpt ) { AutoBuffer _tab(8*INTER_TAB_SIZE); int i, j, k1, k2; - initInterTab1D(method, _tab, INTER_TAB_SIZE); + initInterTab1D(method, _tab.data(), INTER_TAB_SIZE); for( i = 0; i < INTER_TAB_SIZE; i++ ) for( j = 0; j < INTER_TAB_SIZE; j++, tab += ksize*ksize, itab += ksize*ksize ) { diff --git a/modules/imgproc/src/linefit.cpp b/modules/imgproc/src/linefit.cpp index c073e26..246d693 100644 --- a/modules/imgproc/src/linefit.cpp +++ b/modules/imgproc/src/linefit.cpp @@ -360,7 +360,7 @@ static void fitLine2D( const Point2f * points, int count, int dist, } AutoBuffer wr(count*2); - float *w = wr, *r = w + count; + float *w = wr.data(), *r = w + count; for( k = 0; k < 20; k++ ) { @@ -495,7 +495,7 @@ static void fitLine3D( Point3f * points, int count, int dist, } AutoBuffer buf(count*2); - float *w = buf, *r = w + count; + float *w = buf.data(), *r = w + count; for( k = 0; k < 20; k++ ) { diff --git a/modules/imgproc/src/phasecorr.cpp b/modules/imgproc/src/phasecorr.cpp index 71299bb..52aeb92 100644 --- a/modules/imgproc/src/phasecorr.cpp +++ b/modules/imgproc/src/phasecorr.cpp @@ -607,7 +607,7 @@ void cv::createHanningWindow(OutputArray _dst, cv::Size winSize, int type) int rows = dst.rows, cols = dst.cols; AutoBuffer _wc(cols); - double * const wc = (double *)_wc; + double* const wc = _wc.data(); double coeff0 = 2.0 * CV_PI / (double)(cols - 1), coeff1 = 2.0f * CV_PI / (double)(rows - 1); for(int j = 0; j < cols; j++) diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index 7ece7f5..def3dc1 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -860,10 +860,10 @@ pyrDown_( const Mat& _src, Mat& _dst, int borderType ) int cn = _src.channels(); int bufstep = (int)alignSize(dsize.width*cn, 16); AutoBuffer _buf(bufstep*PD_SZ + 16); - WT* buf = alignPtr((WT*)_buf, 16); + WT* buf = alignPtr((WT*)_buf.data(), 16); int tabL[CV_CN_MAX*(PD_SZ+2)], tabR[CV_CN_MAX*(PD_SZ+2)]; AutoBuffer _tabM(dsize.width*cn); - int* tabM = _tabM; + int* tabM = _tabM.data(); WT* rows[PD_SZ]; CastOp castOp; VecOp vecOp; @@ -984,9 +984,9 @@ pyrUp_( const Mat& _src, Mat& _dst, int) int cn = _src.channels(); int bufstep = (int)alignSize((dsize.width+1)*cn, 16); AutoBuffer _buf(bufstep*PU_SZ + 16); - WT* buf = alignPtr((WT*)_buf, 16); + WT* buf = alignPtr((WT*)_buf.data(), 16); AutoBuffer _dtab(ssize.width*cn); - int* dtab = _dtab; + int* dtab = _dtab.data(); WT* rows[PU_SZ]; T* dsts[2]; CastOp castOp; diff --git a/modules/imgproc/src/resize.cpp b/modules/imgproc/src/resize.cpp index 0d57e1a..016fff0 100644 --- a/modules/imgproc/src/resize.cpp +++ b/modules/imgproc/src/resize.cpp @@ -686,18 +686,18 @@ public: { last_eval = 1 - interp_y_len; evalbuf_start = 1; - hResize((ET*)src, cn, xoffsets, xcoeffs, (fixedpoint*)linebuf, min_x, max_x, dst_width); + hResize((ET*)src, cn, xoffsets, xcoeffs, linebuf.data(), min_x, max_x, dst_width); } int dy = range.start; for (; dy < rmin_y; dy++) - vlineSet((fixedpoint*)linebuf, (ET*)(dst + dst_step * dy), dst_width*cn); + vlineSet(linebuf.data(), (ET*)(dst + dst_step * dy), dst_width*cn); for (; dy < rmax_y; dy++) { int &iy = yoffsets[dy]; int i; for (i = max(iy, last_eval + interp_y_len); i < min(iy + interp_y_len, src_height); i++, evalbuf_start = (evalbuf_start + 1) % interp_y_len) - hResize((ET*)(src + i * src_step), cn, xoffsets, xcoeffs, (fixedpoint*)linebuf + evalbuf_start*(dst_width * cn), min_x, max_x, dst_width); + hResize((ET*)(src + i * src_step), cn, xoffsets, xcoeffs, linebuf.data() + evalbuf_start*(dst_width * cn), min_x, max_x, dst_width); evalbuf_start = (evalbuf_start + max(iy, src_height - interp_y_len) - max(last_eval, src_height - interp_y_len)) % interp_y_len; last_eval = iy; @@ -707,9 +707,9 @@ public: for (; i < interp_y_len; i++) curcoeffs[i] = ycoeffs[ dy*interp_y_len - evalbuf_start + i]; - vlineResize((fixedpoint*)linebuf, dst_width*cn, curcoeffs, (ET*)(dst + dst_step * dy), dst_width*cn); + vlineResize(linebuf.data(), dst_width*cn, curcoeffs, (ET*)(dst + dst_step * dy), dst_width*cn); } - fixedpoint *endline = (fixedpoint*)linebuf; + fixedpoint *endline = linebuf.data(); if (last_eval + interp_y_len > src_height) endline += dst_width*cn*((evalbuf_start + src_height - 1 - last_eval) % interp_y_len); else @@ -757,7 +757,7 @@ void resize_bitExact(const uchar* src, size_t src_step, int src_width, int src_h dst_height * sizeof(int) + dst_width * interp_x.len*sizeof(fixedpoint) + dst_height * interp_y.len * sizeof(fixedpoint) ); - int* xoffsets = (int*)((uchar*)buf); + int* xoffsets = (int*)buf.data(); int* yoffsets = xoffsets + dst_width; fixedpoint* xcoeffs = (fixedpoint*)(yoffsets + dst_height); fixedpoint* ycoeffs = xcoeffs + dst_width * interp_x.len; @@ -950,7 +950,7 @@ resizeNN( const Mat& src, Mat& dst, double fx, double fy ) { Size ssize = src.size(), dsize = dst.size(); AutoBuffer _x_ofs(dsize.width); - int* x_ofs = _x_ofs; + int* x_ofs = _x_ofs.data(); int pix_size = (int)src.elemSize(); int pix_size4 = (int)(pix_size / sizeof(int)); double ifx = 1./fx, ify = 1./fy; @@ -2226,7 +2226,7 @@ public: for(int k = 0; k < ksize; k++ ) { prev_sy[k] = -1; - rows[k] = (WT*)_buffer + bufstep*k; + rows[k] = _buffer.data() + bufstep*k; } const AT* beta = _beta + ksize * range.start; @@ -3039,7 +3039,7 @@ public: AutoBuffer _buffer(dsize.width*2); const DecimateAlpha* xtab = xtab0; int xtab_size = xtab_size0; - WT *buf = _buffer, *sum = buf + dsize.width; + WT *buf = _buffer.data(), *sum = buf + dsize.width; int j_start = tabofs[range.start], j_end = tabofs[range.end], j, k, dx, prev_dy = ytab[j_start].di; for( dx = 0; dx < dsize.width; dx++ ) @@ -3322,7 +3322,7 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, if (depth == CV_8U && ((void)0, 0)) { AutoBuffer _buffer((dsize.width + dsize.height)*(sizeof(int) + sizeof(short)*2)); - int* xofs = (int*)(uchar*)_buffer, * yofs = xofs + dsize.width; + int* xofs = (int*)_buffer.data(), * yofs = xofs + dsize.width; short* ialpha = (short*)(yofs + dsize.height), * ibeta = ialpha + dsize.width*2; float fxx, fyy; int sx, sy; @@ -3357,7 +3357,7 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, int wdepth = std::max(depth, CV_32S), wtype = CV_MAKETYPE(wdepth, cn); UMat coeffs; - Mat(1, static_cast(_buffer.size()), CV_8UC1, (uchar *)_buffer).copyTo(coeffs); + Mat(1, static_cast(_buffer.size()), CV_8UC1, _buffer.data()).copyTo(coeffs); k.create("resizeLN", ocl::imgproc::resize_oclsrc, format("-D INTER_LINEAR_INTEGER -D depth=%d -D T=%s -D T1=%s " @@ -3440,17 +3440,17 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, AutoBuffer _xymap_tab(xytab_size), _xyofs_tab(tabofs_size); AutoBuffer _xyalpha_tab(xytab_size); - int * xmap_tab = _xymap_tab, * ymap_tab = _xymap_tab + (ssize.width << 1); - float * xalpha_tab = _xyalpha_tab, * yalpha_tab = _xyalpha_tab + (ssize.width << 1); - int * xofs_tab = _xyofs_tab, * yofs_tab = _xyofs_tab + dsize.width + 1; + int * xmap_tab = _xymap_tab.data(), * ymap_tab = _xymap_tab.data() + (ssize.width << 1); + float * xalpha_tab = _xyalpha_tab.data(), * yalpha_tab = _xyalpha_tab.data() + (ssize.width << 1); + int * xofs_tab = _xyofs_tab.data(), * yofs_tab = _xyofs_tab.data() + dsize.width + 1; ocl_computeResizeAreaTabs(ssize.width, dsize.width, inv_fx, xmap_tab, xalpha_tab, xofs_tab); ocl_computeResizeAreaTabs(ssize.height, dsize.height, inv_fy, ymap_tab, yalpha_tab, yofs_tab); // loading precomputed arrays to GPU - Mat(1, xytab_size, CV_32FC1, (void *)_xyalpha_tab).copyTo(alphaOcl); - Mat(1, xytab_size, CV_32SC1, (void *)_xymap_tab).copyTo(mapOcl); - Mat(1, tabofs_size, CV_32SC1, (void *)_xyofs_tab).copyTo(tabofsOcl); + Mat(1, xytab_size, CV_32FC1, _xyalpha_tab.data()).copyTo(alphaOcl); + Mat(1, xytab_size, CV_32SC1, _xymap_tab.data()).copyTo(mapOcl); + Mat(1, tabofs_size, CV_32SC1, _xyofs_tab.data()).copyTo(tabofsOcl); } ocl::KernelArg srcarg = ocl::KernelArg::ReadOnly(src), dstarg = ocl::KernelArg::WriteOnly(dst); @@ -3856,7 +3856,7 @@ void resize(int src_type, int area = iscale_x*iscale_y; size_t srcstep = src_step / src.elemSize1(); AutoBuffer _ofs(area + dsize.width*cn); - int* ofs = _ofs; + int* ofs = _ofs.data(); int* xofs = ofs + area; ResizeAreaFastFunc func = areafast_tab[depth]; CV_Assert( func != 0 ); @@ -3881,13 +3881,13 @@ void resize(int src_type, CV_Assert( func != 0 && cn <= 4 ); AutoBuffer _xytab((src_width + src_height)*2); - DecimateAlpha* xtab = _xytab, *ytab = xtab + src_width*2; + DecimateAlpha* xtab = _xytab.data(), *ytab = xtab + src_width*2; int xtab_size = computeResizeAreaTab(src_width, dsize.width, cn, scale_x, xtab); int ytab_size = computeResizeAreaTab(src_height, dsize.height, 1, scale_y, ytab); AutoBuffer _tabofs(dsize.height + 1); - int* tabofs = _tabofs; + int* tabofs = _tabofs.data(); for( k = 0, dy = 0; k < ytab_size; k++ ) { if( k == 0 || ytab[k].di != ytab[k-1].di ) @@ -3922,7 +3922,7 @@ void resize(int src_type, CV_Assert( func != 0 ); AutoBuffer _buffer((width + dsize.height)*(sizeof(int) + sizeof(float)*ksize)); - int* xofs = (int*)(uchar*)_buffer; + int* xofs = (int*)_buffer.data(); int* yofs = xofs + width; float* alpha = (float*)(yofs + dsize.height); short* ialpha = (short*)alpha; diff --git a/modules/imgproc/src/rotcalipers.cpp b/modules/imgproc/src/rotcalipers.cpp index 28b854a..487e1d6 100644 --- a/modules/imgproc/src/rotcalipers.cpp +++ b/modules/imgproc/src/rotcalipers.cpp @@ -96,7 +96,7 @@ static void rotatingCalipers( const Point2f* points, int n, int mode, float* out char buffer[32] = {}; int i, k; AutoBuffer abuf(n*3); - float* inv_vect_length = abuf; + float* inv_vect_length = abuf.data(); Point2f* vect = (Point2f*)(inv_vect_length + n); int left = 0, bottom = 0, right = 0, top = 0; int seq[4] = { -1, -1, -1, -1 }; diff --git a/modules/imgproc/src/shapedescr.cpp b/modules/imgproc/src/shapedescr.cpp index bac5f75..460a61f 100644 --- a/modules/imgproc/src/shapedescr.cpp +++ b/modules/imgproc/src/shapedescr.cpp @@ -318,7 +318,7 @@ cv::RotatedRect cv::fitEllipse( InputArray _points ) const Point2f* ptsf = points.ptr(); AutoBuffer _Ad(n*5), _bd(n); - double *Ad = _Ad, *bd = _bd; + double *Ad = _Ad.data(), *bd = _bd.data(); // first fit for parameters A - E Mat A( n, 5, CV_64F, Ad ); diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 9ac01b7..2bcc4b2 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -3614,9 +3614,9 @@ public: virtual void operator() (const Range& range) const CV_OVERRIDE { AutoBuffer _buf(width*cn*kylen); - FT* buf = _buf; + FT* buf = _buf.data(); AutoBuffer _ptrs(kylen*2); - FT** ptrs = _ptrs; + FT** ptrs = _ptrs.data(); if (kylen == 1) { diff --git a/modules/imgproc/src/sumpixels.cpp b/modules/imgproc/src/sumpixels.cpp index 40918da..4122b1a 100755 --- a/modules/imgproc/src/sumpixels.cpp +++ b/modules/imgproc/src/sumpixels.cpp @@ -216,7 +216,7 @@ void integral_( const T* src, size_t _srcstep, ST* sum, size_t _sumstep, else { AutoBuffer _buf(width+cn); - ST* buf = _buf; + ST* buf = _buf.data(); ST s; QT sq; for( k = 0; k < cn; k++, src++, sum++, tilted++, buf++ ) diff --git a/modules/imgproc/test/test_convhull.cpp b/modules/imgproc/test/test_convhull.cpp index 1fb34f5..7ad2f5f 100644 --- a/modules/imgproc/test/test_convhull.cpp +++ b/modules/imgproc/test/test_convhull.cpp @@ -1584,7 +1584,7 @@ int CV_FitLineTest::prepare_test_case( int test_case_idx ) void CV_FitLineTest::run_func() { if(!test_cpp) - cvFitLine( points, dist_type, 0, reps, aeps, line ); + cvFitLine( points, dist_type, 0, reps, aeps, line.data()); else if(dims == 2) cv::fitLine(cv::cvarrToMat(points), (cv::Vec4f&)line[0], dist_type, 0, reps, aeps); else diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 156a044..a83c615 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -434,7 +434,7 @@ public: } cv::AutoBuffer _buf(buf_sz+noutputs); - double* buf = _buf; + double* buf = _buf.data(); if( !_outputs.needed() ) { @@ -996,7 +996,7 @@ public: _idx[i] = i; AutoBuffer _buf(max_lsize*2); - double* buf[] = { _buf, (double*)_buf + max_lsize }; + double* buf[] = { _buf.data(), _buf.data() + max_lsize }; const double* sw = _sw.empty() ? 0 : _sw.ptr(); diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 66e87f6..b3e8c27 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -205,7 +205,7 @@ public: int nvars = (int)varIdx.size(); double sumw = 0., C = 1.; cv::AutoBuffer buf(n + nvars); - double* result = buf; + double* result = buf.data(); float* sbuf = (float*)(result + n); Mat sample(1, nvars, CV_32F, sbuf); int predictFlags = bparams.boostType == Boost::DISCRETE ? (PREDICT_MAX_VOTE | RAW_OUTPUT) : PREDICT_SUM; diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index cbd1c3f..852d5c6 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -335,7 +335,7 @@ public: CatMapHash ofshash; AutoBuffer buf(nsamples); - Mat non_missing(layout == ROW_SAMPLE ? Size(1, nsamples) : Size(nsamples, 1), CV_8U, (uchar*)buf); + Mat non_missing(layout == ROW_SAMPLE ? Size(1, nsamples) : Size(nsamples, 1), CV_8U, buf.data()); bool haveMissing = !missing.empty(); if( haveMissing ) { diff --git a/modules/ml/src/kdtree.cpp b/modules/ml/src/kdtree.cpp index 9ab61e4..1ab8400 100644 --- a/modules/ml/src/kdtree.cpp +++ b/modules/ml/src/kdtree.cpp @@ -285,13 +285,13 @@ int KDTree::findNearest(InputArray _vec, int K, int emax, CV_Assert(K > 0 && (normType == NORM_L2 || normType == NORM_L1)); AutoBuffer _buf((K+1)*(sizeof(float) + sizeof(int))); - int* idx = (int*)(uchar*)_buf; + int* idx = (int*)_buf.data(); float* dist = (float*)(idx + K + 1); int i, j, ncount = 0, e = 0; int qsize = 0, maxqsize = 1 << 10; AutoBuffer _pqueue(maxqsize*sizeof(PQueueElem)); - PQueueElem* pqueue = (PQueueElem*)(uchar*)_pqueue; + PQueueElem* pqueue = (PQueueElem*)_pqueue.data(); emax = std::max(emax, 1); for( e = 0; e < emax; ) @@ -433,7 +433,7 @@ void KDTree::findOrthoRange(InputArray _lowerBound, std::vector idx; AutoBuffer _stack(MAX_TREE_DEPTH*2 + 1); - int* stack = _stack; + int* stack = _stack.data(); int top = 0; stack[top++] = 0; diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index 30a0951..d608012 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -149,7 +149,7 @@ public: int k = std::min(k0, nsamples); AutoBuffer buf(testcount*k*2); - float* dbuf = buf; + float* dbuf = buf.data(); float* rbuf = dbuf + testcount*k; const float* rptr = responses.ptr(); diff --git a/modules/ml/src/nbayes.cpp b/modules/ml/src/nbayes.cpp index 2b6467a..baa46d8 100644 --- a/modules/ml/src/nbayes.cpp +++ b/modules/ml/src/nbayes.cpp @@ -241,8 +241,8 @@ public: } // allocate memory and initializing headers for calculating cv::AutoBuffer _buffer(nvars*2); - double* _diffin = _buffer; - double* _diffout = _buffer + nvars; + double* _diffin = _buffer.data(); + double* _diffout = _buffer.data() + nvars; Mat diffin( 1, nvars, CV_64FC1, _diffin ); Mat diffout( 1, nvars, CV_64FC1, _diffout ); diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index d6518ef..330831c 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -1579,7 +1579,7 @@ public: return; AutoBuffer vbuf(var_count); - double* v = vbuf; + double* v = vbuf.data(); Mat new_sv(df_count, var_count, CV_32F); vector new_df; @@ -1914,7 +1914,7 @@ public: int class_count = !svm->class_labels.empty() ? (int)svm->class_labels.total() : svmType == ONE_CLASS ? 1 : 0; AutoBuffer _buffer(sv_total + (class_count+1)*2); - float* buffer = _buffer; + float* buffer = _buffer.data(); int i, j, dfi, k, si; diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 6a59655..da76a81 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -417,7 +417,7 @@ int DTreesImpl::findBestSplit( const vector& _sidx ) int splitidx = -1; int vi_, nv = (int)activeVars.size(); AutoBuffer buf(w->maxSubsetSize*2); - int *subset = buf, *best_subset = subset + w->maxSubsetSize; + int *subset = buf.data(), *best_subset = subset + w->maxSubsetSize; WSplit split, best_split; best_split.quality = 0.; @@ -488,7 +488,7 @@ void DTreesImpl::calcValue( int nidx, const vector& _sidx ) // misclassified samples with cv_labels(*)==j. // compute the number of instances of each class - double* cls_count = buf; + double* cls_count = buf.data(); double* cv_cls_count = cls_count + m; double max_val = -1, total_weight = 0; @@ -592,7 +592,7 @@ void DTreesImpl::calcValue( int nidx, const vector& _sidx ) } else { - double *cv_sum = buf, *cv_sum2 = cv_sum + cv_n; + double *cv_sum = buf.data(), *cv_sum2 = cv_sum + cv_n; double* cv_count = (double*)(cv_sum2 + cv_n); for( j = 0; j < cv_n; j++ ) @@ -646,7 +646,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdClass( int vi, const vector& _si const int* sidx = &_sidx[0]; const int* responses = &w->cat_responses[0]; const double* weights = &w->sample_weights[0]; - double* lcw = (double*)(uchar*)buf; + double* lcw = (double*)buf.data(); double* rcw = lcw + m; float* values = (float*)(rcw + m); int* sorted_idx = (int*)(values + n); @@ -717,7 +717,7 @@ void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* int iters = 0, max_iters = 100; int i, j, idx; cv::AutoBuffer buf(n + k); - double *v_weights = buf, *c_weights = buf + n; + double *v_weights = buf.data(), *c_weights = buf.data() + n; bool modified = true; RNG r((uint64)-1); @@ -819,12 +819,12 @@ DTreesImpl::WSplit DTreesImpl::findSplitCatClass( int vi, const vector& _si base_size += mi; AutoBuffer buf(base_size + n); - double* lc = (double*)buf; + double* lc = buf.data(); double* rc = lc + m; double* _cjk = rc + m*2, *cjk = _cjk; double* c_weights = cjk + m*mi; - int* labels = (int*)(buf + base_size); + int* labels = (int*)(buf.data() + base_size); w->data->getNormCatValues(vi, _sidx, labels); const int* responses = &w->cat_responses[0]; const double* weights = &w->sample_weights[0]; @@ -991,7 +991,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdReg( int vi, const vector& _sidx AutoBuffer buf(n*(sizeof(int) + sizeof(float))); - float* values = (float*)(uchar*)buf; + float* values = (float*)buf.data(); int* sorted_idx = (int*)(values + n); w->data->getValues(vi, _sidx, values); const double* responses = &w->ord_responses[0]; @@ -1053,7 +1053,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitCatReg( int vi, const vector& _sidx int mi = getCatCount(vi); AutoBuffer buf(3*mi + 3 + n); - double* sum = (double*)buf + 1; + double* sum = buf.data() + 1; double* counts = sum + mi + 1; double** sum_ptr = (double**)(counts + mi); int* cat_labels = (int*)(sum_ptr + mi); @@ -1148,7 +1148,7 @@ int DTreesImpl::calcDir( int splitidx, const vector& _sidx, if( mi <= 0 ) // split on an ordered variable { float c = split.c; - float* values = buf; + float* values = buf.data(); w->data->getValues(vi, _sidx, values); for( i = 0; i < n; i++ ) @@ -1169,7 +1169,7 @@ int DTreesImpl::calcDir( int splitidx, const vector& _sidx, else { const int* subset = &w->wsubsets[split.subsetOfs]; - int* cat_labels = (int*)(float*)buf; + int* cat_labels = (int*)buf.data(); w->data->getNormCatValues(vi, _sidx, cat_labels); for( i = 0; i < n; i++ ) @@ -1372,7 +1372,7 @@ float DTreesImpl::predictTrees( const Range& range, const Mat& sample, int flags int i, ncats = (int)catOfs.size(), nclasses = (int)classLabels.size(); int catbufsize = ncats > 0 ? nvars : 0; AutoBuffer buf(nclasses + catbufsize + 1); - int* votes = buf; + int* votes = buf.data(); int* catbuf = votes + nclasses; const int* cvidx = (flags & (COMPRESSED_INPUT|PREPROCESSED_INPUT)) == 0 && !varIdx.empty() ? &compVarIdx[0] : 0; const uchar* vtype = &varType[0]; diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp index 6c98eb9..6d76ba5 100644 --- a/modules/objdetect/src/cascadedetect.cpp +++ b/modules/objdetect/src/cascadedetect.cpp @@ -1346,7 +1346,7 @@ void CascadeClassifierImpl::detectMultiScaleNoGrouping( InputArray _image, std:: size_t i, nscales = scales.size(); cv::AutoBuffer stripeSizeBuf(nscales); - int* stripeSizes = stripeSizeBuf; + int* stripeSizes = stripeSizeBuf.data(); const FeatureEvaluator::ScaleData* s = &featureEvaluator->getScaleData(0); Size szw = s->getWorkingSize(data.origWinSize); int nstripes = cvCeil(szw.width/32.); diff --git a/modules/objdetect/src/hog.cpp b/modules/objdetect/src/hog.cpp index 23b710b..8fc18f4 100644 --- a/modules/objdetect/src/hog.cpp +++ b/modules/objdetect/src/hog.cpp @@ -297,7 +297,7 @@ void HOGDescriptor::computeGradient(const Mat& img, Mat& grad, Mat& qangle, #endif AutoBuffer mapbuf(gradsize.width + gradsize.height + 4); - int* xmap = (int*)mapbuf + 1; + int* xmap = mapbuf.data() + 1; int* ymap = xmap + gradsize.width + 2; const int borderType = (int)BORDER_REFLECT_101; @@ -312,7 +312,7 @@ void HOGDescriptor::computeGradient(const Mat& img, Mat& grad, Mat& qangle, // x- & y- derivatives for the whole row int width = gradsize.width; AutoBuffer _dbuf(width*4); - float* const dbuf = _dbuf; + float* const dbuf = _dbuf.data(); Mat Dx(1, width, CV_32F, dbuf); Mat Dy(1, width, CV_32F, dbuf + width); Mat Mag(1, width, CV_32F, dbuf + width*2); @@ -656,7 +656,7 @@ void HOGCache::init(const HOGDescriptor* _descriptor, { AutoBuffer di(blockSize.height), dj(blockSize.width); - float* _di = (float*)di, *_dj = (float*)dj; + float* _di = di.data(), *_dj = dj.data(); float bh = blockSize.height * 0.5f, bw = blockSize.width * 0.5f; i = 0; diff --git a/modules/objdetect/test/test_cascadeandhog.cpp b/modules/objdetect/test/test_cascadeandhog.cpp index 3f5681d..fffb23b 100644 --- a/modules/objdetect/test/test_cascadeandhog.cpp +++ b/modules/objdetect/test/test_cascadeandhog.cpp @@ -1193,7 +1193,7 @@ void HOGDescriptorTester::computeGradient(const Mat& img, Mat& grad, Mat& qangle _lut(0,i) = (float)i; AutoBuffer mapbuf(gradsize.width + gradsize.height + 4); - int* xmap = (int*)mapbuf + 1; + int* xmap = mapbuf.data() + 1; int* ymap = xmap + gradsize.width + 2; const int borderType = (int)BORDER_REFLECT_101; @@ -1208,7 +1208,7 @@ void HOGDescriptorTester::computeGradient(const Mat& img, Mat& grad, Mat& qangle // x- & y- derivatives for the whole row int width = gradsize.width; AutoBuffer _dbuf(width*4); - float* dbuf = _dbuf; + float* dbuf = _dbuf.data(); Mat Dx(1, width, CV_32F, dbuf); Mat Dy(1, width, CV_32F, dbuf + width); Mat Mag(1, width, CV_32F, dbuf + width*2); diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 5a6bf7e..179bf67 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -189,7 +189,7 @@ public: _sizes[i] = sizes[i]; if( cn > 1 ) _sizes[dims++] = cn; - PyObject* o = PyArray_SimpleNew(dims, _sizes, typenum); + PyObject* o = PyArray_SimpleNew(dims, _sizes.data(), typenum); if(!o) CV_Error_(Error::StsError, ("The numpy array of typenum=%d, ndims=%d can not be created", typenum, dims)); return allocate(o, dims0, sizes, type, step); diff --git a/modules/ts/src/ts_perf.cpp b/modules/ts/src/ts_perf.cpp index 259c289..7bf60af 100644 --- a/modules/ts/src/ts_perf.cpp +++ b/modules/ts/src/ts_perf.cpp @@ -2166,7 +2166,7 @@ void perf::sort(std::vector& pts, cv::InputOutputArray descriptors for (int i = 0; i < desc.rows; ++i) idxs[i] = i; - std::sort((int*)idxs, (int*)idxs + desc.rows, KeypointComparator(pts)); + std::sort(idxs.data(), idxs.data() + desc.rows, KeypointComparator(pts)); std::vector spts(pts.size()); cv::Mat sdesc(desc.size(), desc.type()); diff --git a/modules/video/src/bgfg_gaussmix2.cpp b/modules/video/src/bgfg_gaussmix2.cpp index f338b6c..96ae029 100644 --- a/modules/video/src/bgfg_gaussmix2.cpp +++ b/modules/video/src/bgfg_gaussmix2.cpp @@ -575,7 +575,7 @@ public: for( int y = y0; y < y1; y++ ) { - const float* data = buf; + const float* data = buf.data(); if( src->depth() != CV_32F ) src->row(y).convertTo(Mat(1, ncols, CV_32FC(nchannels), (void*)data), CV_32F); else diff --git a/modules/video/src/lkpyramid.cpp b/modules/video/src/lkpyramid.cpp index 353e356..9470468 100644 --- a/modules/video/src/lkpyramid.cpp +++ b/modules/video/src/lkpyramid.cpp @@ -67,7 +67,7 @@ static void calcSharrDeriv(const cv::Mat& src, cv::Mat& dst) int x, y, delta = (int)alignSize((cols + 2)*cn, 16); AutoBuffer _tempBuf(delta*2 + 64); - deriv_type *trow0 = alignPtr(_tempBuf + cn, 16), *trow1 = alignPtr(trow0 + delta, 16); + deriv_type *trow0 = alignPtr(_tempBuf.data() + cn, 16), *trow1 = alignPtr(trow0 + delta, 16); #if CV_SIMD128 v_int16x8 c3 = v_setall_s16(3), c10 = v_setall_s16(10); @@ -191,8 +191,8 @@ void cv::detail::LKTrackerInvoker::operator()(const Range& range) const cv::AutoBuffer _buf(winSize.area()*(cn + cn2)); int derivDepth = DataType::depth; - Mat IWinBuf(winSize, CV_MAKETYPE(derivDepth, cn), (deriv_type*)_buf); - Mat derivIWinBuf(winSize, CV_MAKETYPE(derivDepth, cn2), (deriv_type*)_buf + winSize.area()*cn); + Mat IWinBuf(winSize, CV_MAKETYPE(derivDepth, cn), _buf.data()); + Mat derivIWinBuf(winSize, CV_MAKETYPE(derivDepth, cn2), _buf.data() + winSize.area()*cn); for( int ptidx = range.start; ptidx < range.end; ptidx++ ) { diff --git a/modules/video/src/optflowgf.cpp b/modules/video/src/optflowgf.cpp index 448dea2..68edf4c 100644 --- a/modules/video/src/optflowgf.cpp +++ b/modules/video/src/optflowgf.cpp @@ -121,10 +121,10 @@ FarnebackPolyExp( const Mat& src, Mat& dst, int n, double sigma ) int width = src.cols; int height = src.rows; AutoBuffer kbuf(n*6 + 3), _row((width + n*2)*3); - float* g = kbuf + n; + float* g = kbuf.data() + n; float* xg = g + n*2 + 1; float* xxg = xg + n*2 + 1; - float *row = (float*)_row + n*3; + float *row = _row.data() + n*3; double ig11, ig03, ig33, ig55; FarnebackPrepareGaussian(n, sigma, g, xg, xxg, ig11, ig03, ig33, ig55); @@ -322,7 +322,7 @@ FarnebackUpdateFlow_Blur( const Mat& _R0, const Mat& _R1, double scale = 1./(block_size*block_size); AutoBuffer _vsum((width+m*2+2)*5); - double* vsum = _vsum + (m+1)*5; + double* vsum = _vsum.data() + (m+1)*5; // init vsum const float* srow0 = matM.ptr(); @@ -416,10 +416,10 @@ FarnebackUpdateFlow_GaussianBlur( const Mat& _R0, const Mat& _R1, AutoBuffer _vsum((width+m*2+2)*5 + 16), _hsum(width*5 + 16); AutoBuffer _kernel((m+1)*5 + 16); - AutoBuffer _srow(m*2+1); - float *vsum = alignPtr((float*)_vsum + (m+1)*5, 16), *hsum = alignPtr((float*)_hsum, 16); - float* kernel = (float*)_kernel; - const float** srow = (const float**)&_srow[0]; + AutoBuffer _srow(m*2+1); + float *vsum = alignPtr(_vsum.data() + (m+1)*5, 16), *hsum = alignPtr(_hsum.data(), 16); + float* kernel = _kernel.data(); + const float** srow = _srow.data(); kernel[0] = (float)s; for( i = 1; i <= m; i++ ) diff --git a/modules/videoio/src/cap_mfx_common.cpp b/modules/videoio/src/cap_mfx_common.cpp index 9c02d6d..705d180 100644 --- a/modules/videoio/src/cap_mfx_common.cpp +++ b/modules/videoio/src/cap_mfx_common.cpp @@ -96,7 +96,7 @@ SurfacePool::SurfacePool(ushort width_, ushort height_, ushort count, const mfxF for(int i = 0; i < count; ++i) { mfxFrameSurface1 &surface = surfaces[i]; - uint8_t * dataPtr = buffers + oneSize * i; + uint8_t * dataPtr = buffers.data() + oneSize * i; memset(&surface, 0, sizeof(mfxFrameSurface1)); surface.Info = frameInfo; surface.Data.Y = dataPtr; diff --git a/modules/videoio/src/cap_msmf.cpp b/modules/videoio/src/cap_msmf.cpp index beed742..35043ee 100644 --- a/modules/videoio/src/cap_msmf.cpp +++ b/modules/videoio/src/cap_msmf.cpp @@ -1029,8 +1029,8 @@ bool CvCapture_MSMF::open(const cv::String& _filename) srAttr->SetUnknown(MF_SOURCE_READER_D3D_MANAGER, D3DMgr.Get()); #endif cv::AutoBuffer unicodeFileName(_filename.length() + 1); - MultiByteToWideChar(CP_ACP, 0, _filename.c_str(), -1, unicodeFileName, (int)_filename.length() + 1); - if (SUCCEEDED(MFCreateSourceReaderFromURL(unicodeFileName, srAttr.Get(), &videoFileSource))) + MultiByteToWideChar(CP_ACP, 0, _filename.c_str(), -1, unicodeFileName.data(), (int)_filename.length() + 1); + if (SUCCEEDED(MFCreateSourceReaderFromURL(unicodeFileName.data(), srAttr.Get(), &videoFileSource))) { isOpen = true; sampleTime = 0; @@ -2081,8 +2081,8 @@ bool CvVideoWriter_MSMF::open( const cv::String& filename, int fourcc, { // Create the sink writer cv::AutoBuffer unicodeFileName(filename.length() + 1); - MultiByteToWideChar(CP_ACP, 0, filename.c_str(), -1, unicodeFileName, (int)filename.length() + 1); - HRESULT hr = MFCreateSinkWriterFromURL(unicodeFileName, NULL, spAttr.Get(), &sinkWriter); + MultiByteToWideChar(CP_ACP, 0, filename.c_str(), -1, unicodeFileName.data(), (int)filename.length() + 1); + HRESULT hr = MFCreateSinkWriterFromURL(unicodeFileName.data(), NULL, spAttr.Get(), &sinkWriter); if (SUCCEEDED(hr)) { // Configure the sink writer and tell it start to start accepting data -- 2.7.4