亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cxdatastructs.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    CV_CALL( cvSetSeqBlockSize( seq, (1 << 10)/elem_size ));    __END__;    return seq;}/* adjusts <delta_elems> field of sequence. It determines how much the sequence   grows if there are no free space inside the sequence buffers */CV_IMPL voidcvSetSeqBlockSize( CvSeq *seq, int delta_elements ){    int elem_size;    int useful_block_size;    CV_FUNCNAME( "cvSetSeqBlockSize" );    __BEGIN__;    if( !seq || !seq->storage )        CV_ERROR( CV_StsNullPtr, "" );    if( delta_elements < 0 )        CV_ERROR( CV_StsOutOfRange, "" );    useful_block_size = cvAlignLeft(seq->storage->block_size - sizeof(CvMemBlock) -                                    sizeof(CvSeqBlock), CV_STRUCT_ALIGN);    elem_size = seq->elem_size;    if( delta_elements == 0 )    {        delta_elements = (1 << 10) / elem_size;        delta_elements = MAX( delta_elements, 1 );    }    if( delta_elements * elem_size > useful_block_size )    {        delta_elements = useful_block_size / elem_size;        if( delta_elements == 0 )            CV_ERROR( CV_StsOutOfRange, "Storage block size is too small "                                        "to fit the sequence elements" );    }    seq->delta_elems = delta_elements;    __END__;}/* finds sequence element by its index */CV_IMPL char*cvGetSeqElem( const CvSeq *seq, int index ){    CvSeqBlock *block;    int count, total = seq->total;    if( (unsigned)index >= (unsigned)total )    {        index += index < 0 ? total : 0;        index -= index >= total ? total : 0;        if( (unsigned)index >= (unsigned)total )            return 0;    }    block = seq->first;    if( index + index <= total )    {        while( index >= (count = block->count) )        {            block = block->next;            index -= count;        }    }    else    {        do        {            block = block->prev;            total -= block->count;        }        while( index < total );        index -= total;    }    return block->data + index * seq->elem_size;}/* calculates index of sequence element */CV_IMPL intcvSeqElemIdx( const CvSeq* seq, const void* _element, CvSeqBlock** _block ){    const char *element = (const char *)_element;    int elem_size;    int id = -1;    CvSeqBlock *first_block;    CvSeqBlock *block;    CV_FUNCNAME( "cvSeqElemIdx" );    __BEGIN__;    if( !seq || !element )        CV_ERROR( CV_StsNullPtr, "" );    block = first_block = seq->first;    elem_size = seq->elem_size;    for( ;; )    {        if( (unsigned)(element - block->data) < (unsigned) (block->count * elem_size) )        {            if( _block )                *_block = block;            if( elem_size <= ICV_SHIFT_TAB_MAX && (id = icvPower2ShiftTab[elem_size - 1]) >= 0 )                id = (int)((size_t)(element - block->data) >> id);            else                id = (int)((size_t)(element - block->data) / elem_size);            id += block->start_index - seq->first->start_index;            break;        }        block = block->next;        if( block == first_block )            break;    }    __END__;    return id;}CV_IMPL intcvSliceLength( CvSlice slice, const CvSeq* seq ){    int total = seq->total;    int length = slice.end_index - slice.start_index;        if( length != 0 )    {        if( slice.start_index < 0 )            slice.start_index += total;        if( slice.end_index <= 0 )            slice.end_index += total;        length = slice.end_index - slice.start_index;    }    if( length < 0 )    {        length += total;        /*if( length < 0 )            length += total;*/    }    else if( length > total )        length = total;    return length;}/* copies all the sequence elements into single continuous array */CV_IMPL void*cvCvtSeqToArray( const CvSeq *seq, void *array, CvSlice slice ){    CV_FUNCNAME( "cvCvtSeqToArray" );    __BEGIN__;    int elem_size, total;    CvSeqReader reader;    char *dst = (char*)array;    if( !seq || !array )        CV_ERROR( CV_StsNullPtr, "" );    elem_size = seq->elem_size;    total = cvSliceLength( slice, seq )*elem_size;        if( total == 0 )        EXIT;        cvStartReadSeq( seq, &reader, 0 );    CV_CALL( cvSetSeqReaderPos( &reader, slice.start_index, 0 ));    do    {        int count = (int)(reader.block_max - reader.ptr);        if( count > total )            count = total;        memcpy( dst, reader.ptr, count );        dst += count;        reader.block = reader.block->next;        reader.ptr = reader.block->data;        reader.block_max = reader.ptr + reader.block->count*elem_size;        total -= count;    }    while( total > 0 );    __END__;    return array;}/* constructs sequence from array without copying any data.   the resultant sequence can't grow above its initial size */CV_IMPL CvSeq*cvMakeSeqHeaderForArray( int seq_flags, int header_size, int elem_size,                         void *array, int total, CvSeq *seq, CvSeqBlock * block ){    CvSeq* result = 0;        CV_FUNCNAME( "cvMakeSeqHeaderForArray" );    __BEGIN__;    if( elem_size <= 0 || header_size < (int)sizeof( CvSeq ) || total < 0 )        CV_ERROR( CV_StsBadSize, "" );    if( !seq || ((!array || !block) && total > 0) )        CV_ERROR( CV_StsNullPtr, "" );    memset( seq, 0, header_size );    seq->header_size = header_size;    seq->flags = (seq_flags & ~CV_MAGIC_MASK) | CV_SEQ_MAGIC_VAL;    {        int elemtype = CV_MAT_TYPE(seq_flags);        int typesize = CV_ELEM_SIZE(elemtype);        if( elemtype != CV_SEQ_ELTYPE_GENERIC &&            typesize != 0 && typesize != elem_size )            CV_ERROR( CV_StsBadSize,            "Element size doesn't match to the size of predefined element type "            "(try to use 0 for sequence element type)" );    }    seq->elem_size = elem_size;    seq->total = total;    seq->block_max = seq->ptr = (char *) array + total * elem_size;    if( total > 0 )    {        seq->first = block;        block->prev = block->next = block;        block->start_index = 0;        block->count = total;        block->data = (char *) array;    }    result = seq;    __END__;    return result;}/* the function allocates space for at least one more sequence element.   if there are free sequence blocks (seq->free_blocks != 0),   they are reused, otherwise the space is allocated in the storage */static voidicvGrowSeq( CvSeq *seq, int in_front_of ){    CV_FUNCNAME( "icvGrowSeq" );    __BEGIN__;    CvSeqBlock *block;    if( !seq )        CV_ERROR( CV_StsNullPtr, "" );    block = seq->free_blocks;    if( !block )    {        int elem_size = seq->elem_size;        int delta_elems = seq->delta_elems;        CvMemStorage *storage = seq->storage;        if( seq->total >= delta_elems*4 )            cvSetSeqBlockSize( seq, delta_elems*2 );        if( !storage )            CV_ERROR( CV_StsNullPtr, "The sequence has NULL storage pointer" );        /* if there is a free space just after last allocated block           and it's big enough then enlarge the last block           (this can happen only if the new block is added to the end of sequence */        if( (unsigned)(ICV_FREE_PTR(storage) - seq->block_max) < CV_STRUCT_ALIGN &&            storage->free_space >= seq->elem_size && !in_front_of )        {            int delta = storage->free_space / elem_size;            delta = MIN( delta, delta_elems ) * elem_size;            seq->block_max += delta;            storage->free_space = cvAlignLeft((int)(((char*)storage->top + storage->block_size) -                                              seq->block_max), CV_STRUCT_ALIGN );            EXIT;        }        else        {            int delta = elem_size * delta_elems + ICV_ALIGNED_SEQ_BLOCK_SIZE;            /* try to allocate <delta_elements> elements */            if( storage->free_space < delta )            {                int small_block_size = MAX(1, delta_elems/3)*elem_size +                                       ICV_ALIGNED_SEQ_BLOCK_SIZE;                /* try to allocate smaller part */                if( storage->free_space >= small_block_size + CV_STRUCT_ALIGN )                {                    delta = (storage->free_space - ICV_ALIGNED_SEQ_BLOCK_SIZE)/seq->elem_size;                    delta = delta*seq->elem_size + ICV_ALIGNED_SEQ_BLOCK_SIZE;                }                else                {                    CV_CALL( icvGoNextMemBlock( storage ));                    assert( storage->free_space >= delta );                }            }            CV_CALL( block = (CvSeqBlock*)cvMemStorageAlloc( storage, delta ));            block->data = (char*)cvAlignPtr( block + 1, CV_STRUCT_ALIGN );            block->count = delta - ICV_ALIGNED_SEQ_BLOCK_SIZE;            block->prev = block->next = 0;        }    }    else    {        seq->free_blocks = block->next;    }    if( !(seq->first) )    {        seq->first = block;        block->prev = block->next = block;    }    else    {        block->prev = seq->first->prev;        block->next = seq->first;        block->prev->next = block->next->prev = block;    }    /* for free blocks the <count> field means total number of bytes in the block.       And for used blocks it means a current number of sequence       elements in the block */    assert( block->count % seq->elem_size == 0 && block->count > 0 );    if( !in_front_of )    {        seq->ptr = block->data;        seq->block_max = block->data + block->count;        block->start_index = block == block->prev ? 0 :            block->prev->start_index + block->prev->count;    }    else    {        int delta = block->count / seq->elem_size;        block->data += block->count;        if( block != block->prev )        {            assert( seq->first->start_index == 0 );            seq->first = block;        }        else        {            seq->block_max = seq->ptr = block->data;        }        block->start_index = 0;        for( ;; )        {            block->start_index += delta;            block = block->next;            if( block == seq->first )                break;        }    }    block->count = 0;    __END__;}/* recycles a sequence block for the further use */static voidicvFreeSeqBlock( CvSeq *seq, int in_front_of ){    /*CV_FUNCNAME( "icvFreeSeqBlock" );*/    __BEGIN__;    CvSeqBlock *block = seq->first;    assert( (in_front_of ? block : block->prev)->count == 0 );    if( block == block->prev )  /* single block case */    {        block->count = (int)(seq->block_max - block->data) + block->start_index * seq->elem_size;        block->data = seq->block_max - block->count;        seq->first = 0;        seq->ptr = seq->block_max = 0;        seq->total = 0;    }    else    {        if( !in_front_of )        {            block = block->prev;            assert( seq->ptr == block->data );            block->count = (int)(seq->block_max - seq->ptr);            seq->block_max = seq->ptr = block->prev->data +                block->prev->count * seq->elem_size;        }        else        {            int delta = block->start_index;            block->count = delta * seq->elem_size;            block->data -= block->count;            /* update start indices of sequence blocks */            for( ;; )            {                block->start_index -= delta;                block = block->next;                if( block == seq->first )                    break;            }            seq->first = block->next;        }        block->prev->next = block->next;        block->next->prev = block->prev;    }    assert( block->count > 0 && block->count % seq->elem_size == 0 );    block->next = seq->free_blocks;    seq->free_blocks = block;    __END__;}/****************************************************************************************\*                             Sequence Writer implementation                             *\****************************************************************************************//* initializes sequence writer */CV_IMPL voidcvStartAppendToSeq( CvSeq *seq, CvSeqWriter * writer ){    CV_FUNCNAME( "cvStartAppendToSeq" );    __BEGIN__;    if( !seq || !writer )        CV_ERROR( CV_StsNullPtr, "" );    memset( writer, 0, sizeof( *writer ));    writer->header_size = sizeof( CvSeqWriter );    writer->seq = seq;    writer->block = seq->first ? seq->first->prev : 0;    writer->ptr = seq->ptr;    writer->block_max = seq->block_max;    __END__;}/* initializes sequence writer */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模冰冰炮一区二区| 成人av在线影院| 国产精品国产三级国产三级人妇| 在线观看国产精品网站| 激情综合网天天干| 亚洲成人手机在线| 亚洲视频免费观看| 久久久久久一级片| 欧美一区二区成人6969| 欧美在线制服丝袜| jiyouzz国产精品久久| 狠狠色丁香久久婷婷综| 午夜一区二区三区视频| 国产精品不卡视频| 国产午夜精品久久久久久免费视| 欧美一区二区二区| 欧美日韩大陆在线| 欧美亚洲丝袜传媒另类| 99精品国产热久久91蜜凸| 国产精一区二区三区| 久久疯狂做爰流白浆xx| 美女视频一区在线观看| 亚洲18色成人| 亚洲国产精品久久人人爱| 亚洲欧美乱综合| 亚洲视频网在线直播| 中文字幕中文字幕在线一区 | 欧美日韩视频专区在线播放| 本田岬高潮一区二区三区| 国产一区二区三区免费在线观看| 蜜桃av一区二区在线观看| 日本亚洲三级在线| 免费国产亚洲视频| 麻豆精品一二三| 美女国产一区二区| 极品尤物av久久免费看| 久久激情综合网| 国产美女一区二区| 成人高清在线视频| 99久久精品一区| 在线日韩国产精品| 欧美体内she精高潮| 欧美日本国产一区| 日韩亚洲欧美中文三级| 久久色在线视频| 国产精品色在线观看| 国产精品福利一区| 亚洲一区二区成人在线观看| 五月婷婷激情综合网| 久久精品99国产精品| 国产毛片精品视频| 92国产精品观看| 欧美日韩精品欧美日韩精品| 欧美精品久久天天躁| 欧美一区在线视频| 久久男人中文字幕资源站| 亚洲国产精品99久久久久久久久| 国产精品久久久久久福利一牛影视 | 久久一区二区三区四区| 中文字幕免费一区| 亚洲美女视频一区| 免费在线看一区| 成人国产精品免费| 欧美性极品少妇| www国产精品av| 国产精品二区一区二区aⅴ污介绍| 亚洲男人天堂一区| 麻豆91小视频| 99精品热视频| 欧美一区二区播放| 国产精品电影一区二区| 午夜欧美电影在线观看| 国产成人综合在线| 欧美日韩一区二区欧美激情| 精品国产一区二区三区久久久蜜月| 欧美极品少妇xxxxⅹ高跟鞋 | 91在线你懂得| 欧美成人三级在线| 亚洲视频1区2区| 免费在线观看日韩欧美| 91香蕉视频mp4| 精品精品欲导航| 亚洲人成7777| 国产精品亚洲第一区在线暖暖韩国| 色综合久久久久久久久| 日韩午夜在线观看| 亚洲一区二区三区自拍| 国产成人久久精品77777最新版本| 欧美性大战久久| 日本一区二区三区电影| 天天亚洲美女在线视频| 99久久精品国产一区二区三区| 欧美一区二区三级| 亚洲中国最大av网站| 岛国一区二区在线观看| 日韩一区二区在线观看视频播放| 亚洲精品欧美二区三区中文字幕| 激情五月婷婷综合| 在线成人av影院| 亚洲欧美一区二区不卡| 粉嫩aⅴ一区二区三区四区| 欧美一区二区三区日韩| 一区二区三区四区视频精品免费| 国产精品资源在线| 欧美电影免费观看高清完整版在线 | 久久综合成人精品亚洲另类欧美| 亚洲成av人片在线观看无码| 97超碰欧美中文字幕| 欧美国产综合色视频| 国产在线精品国自产拍免费| 欧美日韩国产a| 一区二区三区91| 99re热这里只有精品免费视频 | 国产欧美中文在线| 精品一区二区在线观看| 欧美一区二区三区日韩视频| 亚洲一区二区三区在线看| 色哟哟一区二区| 亚洲激情综合网| 99v久久综合狠狠综合久久| 国产精品网友自拍| 成人午夜在线播放| 国产精品三级视频| 粉嫩一区二区三区性色av| 国产日韩精品一区二区三区| 国产自产视频一区二区三区| 日韩精品一区二区三区四区 | 久久久91精品国产一区二区精品| 九九久久精品视频| 欧美电视剧免费全集观看| 奇米精品一区二区三区在线观看| 欧美一区二区三级| 久久精品久久99精品久久| 精品日韩一区二区三区免费视频| 久久99精品一区二区三区三区| 日韩免费看的电影| 国产在线不卡视频| 国产日韩影视精品| 粉嫩一区二区三区在线看| 中文字幕一区二区三区蜜月| 91小视频免费观看| 亚洲国产美女搞黄色| 欧美日韩精品欧美日韩精品| 欧美aaa在线| 久久你懂得1024| 99久久久精品免费观看国产蜜| 亚洲另类中文字| 欧美区在线观看| 国产一区在线精品| 日韩毛片精品高清免费| 欧美少妇xxx| 精品一区二区影视| 国产精品久久99| 欧美日韩一区二区欧美激情| 久久精品国产亚洲aⅴ| 欧美国产国产综合| 在线视频欧美精品| 另类欧美日韩国产在线| 中文久久乱码一区二区| 欧美亚州韩日在线看免费版国语版| 天堂一区二区在线免费观看| 久久久久久久综合日本| 色综合久久久久综合| 老司机免费视频一区二区三区| 国产日本欧美一区二区| 色嗨嗨av一区二区三区| 免费成人美女在线观看.| 欧美高清在线一区| 欧美日韩亚洲综合一区二区三区| 久久aⅴ国产欧美74aaa| 亚洲欧美综合色| 8v天堂国产在线一区二区| 国产成人av在线影院| 亚洲第一精品在线| 中文在线资源观看网站视频免费不卡| 色88888久久久久久影院野外| 久久精品国产亚洲5555| 亚洲欧美经典视频| 26uuu另类欧美亚洲曰本| 日本二三区不卡| 国产一区视频在线看| 亚洲成人av福利| 国产精品毛片高清在线完整版| 欧美日韩美少妇| 成人看片黄a免费看在线| 蜜臀av一区二区在线观看| 专区另类欧美日韩| 久久蜜桃av一区精品变态类天堂| 欧美色欧美亚洲另类二区| 成人小视频免费观看| 麻豆久久久久久| 午夜亚洲国产au精品一区二区| 国产精品对白交换视频 | 亚洲成a人片在线不卡一二三区| 国产婷婷色一区二区三区四区| 在线不卡的av| 91久久奴性调教| av午夜一区麻豆| 成人美女在线观看| 国产乱码一区二区三区|