*/
TermCriteria(int type, int maxCount, double epsilon);
+ inline bool isValid() const
+ {
+ const bool isCount = (type & COUNT) && maxCount > 0;
+ const bool isEps = (type & EPS) && !cvIsNaN(epsilon);
+ return isCount || isEps;
+ }
+
int type; //!< the type of termination criteria: COUNT, EPS or COUNT + EPS
int maxCount; //!< the maximum number of iterations/elements
double epsilon; //!< the desired accuracy
#define CV_TYPE_NAME_MATND "opencv-nd-matrix"
#define CV_MAX_DIM 32
-#define CV_MAX_DIM_HEAP 1024
/**
@deprecated consider using cv::Mat instead
else
{
int i, n = m->dims;
- CV_DbgAssert( n <= CV_MAX_DIM_HEAP );
- int _idx[CV_MAX_DIM_HEAP];
+ CV_DbgAssert( n <= CV_MAX_DIM );
+ int _idx[CV_MAX_DIM];
for( i = n - 1; i >= 0; i-- )
{
CvFileNode* sizes_node;
CvSeqReader reader;
CvSeq* elements;
- int sizes[CV_MAX_DIM_HEAP], dims, elem_type, cn;
+ int sizes[CV_MAX_DIM], dims, elem_type, cn;
int i;
sizes_node = cvGetFileNodeByName( fs, node, "sizes" );
mat = cvCreateSparseMat( dims, sizes, elem_type );
cn = CV_MAT_CN(elem_type);
- int idx[CV_MAX_DIM_HEAP];
+ int idx[CV_MAX_DIM];
elements = data->data.seq;
cvStartReadRawData( fs, data, &reader );
class ResizeLayerImpl : public ResizeLayer
{
public:
- ResizeLayerImpl(const LayerParams& params) : scaleWidth(0), scaleHeight(0)
+ ResizeLayerImpl(const LayerParams& params) : zoomFactorWidth(0), zoomFactorHeight(0), scaleWidth(0), scaleHeight(0)
{
setParamsFrom(params);
outWidth = params.get<float>("width", 0);
size_t src_step = _src.step(), src_offset = _src.offset();
bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0;
- if (esz == 0
+ if (esz == 0 || src_step == 0
|| (src_offset % src_step) % esz != 0
|| (!doubleSupport && (sdepth == CV_64F || ddepth == CV_64F))
|| !(borderType == BORDER_CONSTANT
const CvMat* _distCoeffs,
const CvMat* matR, const CvMat* matP, cv::TermCriteria criteria)
{
+ CV_Assert(criteria.isValid());
double A[3][3], RR[3][3], k[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
CvMat matA=cvMat(3, 3, CV_64F, A), _Dk;
CvMat _RR=cvMat(3, 3, CV_64F, RR);
data.resize(size);
}
- void put(unsigned bits, int len)
+ inline void put_bits(unsigned bits, int len)
{
+ CV_Assert(len >=0 && len < 32);
if((m_pos == (data.size() - 1) && len > bits_free) || m_pos == data.size())
{
resize(int(2*data.size()));
}
}
+ inline void put_val(int val, const unsigned * table)
+ {
+ unsigned code = table[(val) + 2];
+ put_bits(code >> 8, (int)(code & 255));
+ }
+
void finish()
{
if(bits_free == 32)
void operator()( const cv::Range& range ) const CV_OVERRIDE
{
const int CAT_TAB_SIZE = 4096;
- unsigned code = 0;
-
-#define JPUT_BITS(val, bits) output_buffer.put(val, bits)
-
-#define JPUT_HUFF(val, table) \
- code = table[(val) + 2]; \
- JPUT_BITS(code >> 8, (int)(code & 255))
int x, y;
int i, j;
int cat = cat_table[val + CAT_TAB_SIZE];
//CV_Assert( cat <= 11 );
- JPUT_HUFF( cat, huff_dc_tab[is_chroma] );
- JPUT_BITS( val - (val < 0 ? 1 : 0), cat );
+ output_buffer.put_val(cat, huff_dc_tab[is_chroma] );
+ output_buffer.put_bits( val - (val < 0 ? 1 : 0), cat );
}
for( j = 1; j < 64; j++ )
{
while( run >= 16 )
{
- JPUT_HUFF( 0xF0, htable ); // encode 16 zeros
+ output_buffer.put_val( 0xF0, htable ); // encode 16 zeros
run -= 16;
}
{
int cat = cat_table[val + CAT_TAB_SIZE];
//CV_Assert( cat <= 10 );
- JPUT_HUFF( cat + run*16, htable );
- JPUT_BITS( val - (val < 0 ? 1 : 0), cat );
+ output_buffer.put_val( cat + run*16, htable );
+ output_buffer.put_bits( val - (val < 0 ? 1 : 0), cat );
}
run = 0;
if( run )
{
- JPUT_HUFF( 0x00, htable ); // encode EOB
+ output_buffer.put_val( 0x00, htable ); // encode EOB
}
}
}