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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cxdatastructs.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
////////////////////////////////////////////////////////////////////////////////////////////  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.////  By downloading, copying, installing or using the software you agree to this license.//  If you do not agree to this license, do not download, install,//  copy or use the software.//////                 License For Embedded Computer Vision Library//// Copyright (c) 2008, EMCV Project,// Copyright (c) 2000-2007, Intel Corporation,// All rights reserved.// Third party copyrights are property of their respective owners.//// Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met:////    * Redistributions of source code must retain the above copyright notice, //      this list of conditions and the following disclaimer.//    * Redistributions in binary form must reproduce the above copyright notice, //      this list of conditions and the following disclaimer in the documentation //      and/or other materials provided with the distribution.//    * Neither the name of the copyright holders nor the names of their contributors //      may be used to endorse or promote products derived from this software //      without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY // OF SUCH DAMAGE.//// Contributors://    * Shiqi Yu (Shenzhen Institute of Advanced Technology, Chinese Academy of Sciences)#include "cxcore.h"#define ICV_FREE_PTR(storage)  \    ((char*)(storage)->top + (storage)->block_size - (storage)->free_space)#define ICV_ALIGNED_SEQ_BLOCK_SIZE  \    (int)cvAlign(sizeof(CvSeqBlock), CV_STRUCT_ALIGN)CV_INLINE intcvAlignLeft( int size, int align ){    return size & -align;}#define CV_GET_LAST_ELEM( seq, block ) \    ((block)->data + ((block)->count - 1)*((seq)->elem_size))#define CV_SWAP_ELEMS(a,b,elem_size)  \{                                     \    int k;                            \    for( k = 0; k < elem_size; k++ )  \    {                                 \        char t0 = (a)[k];             \        char t1 = (b)[k];             \        (a)[k] = t1;                  \        (b)[k] = t0;                  \    }                                 \}#define ICV_SHIFT_TAB_MAX 32static const char icvPower2ShiftTab[] ={    0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 4,    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5};/****************************************************************************************\*            Functions for manipulating memory storage - list of memory blocks           *\****************************************************************************************//* initializes allocated storage */static voidicvInitMemStorage( CvMemStorage* storage, int block_size ){    CV_FUNCNAME( "icvInitMemStorage " );        __BEGIN__;    if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    if( block_size <= 0 )        block_size = CV_STORAGE_BLOCK_SIZE;    block_size = cvAlign( block_size, CV_STRUCT_ALIGN );    assert( sizeof(CvMemBlock) % CV_STRUCT_ALIGN == 0 );    memset( storage, 0, sizeof( *storage ));    storage->signature = CV_STORAGE_MAGIC_VAL;    storage->block_size = block_size;    __END__;}/* creates root memory storage */CV_IMPL CvMemStorage*cvCreateMemStorage( int block_size ){    CvMemStorage *storage = 0;    CV_FUNCNAME( "cvCreateMemStorage" );    __BEGIN__;    CV_CALL( storage = (CvMemStorage *)cvAlloc( sizeof( CvMemStorage )));    CV_CALL( icvInitMemStorage( storage, block_size ));    __END__;    if( cvGetErrStatus() < 0 )        cvFree( &storage );    return storage;}/* creates child memory storage */CV_IMPL CvMemStorage *cvCreateChildMemStorage( CvMemStorage * parent ){    CvMemStorage *storage = 0;    CV_FUNCNAME( "cvCreateChildMemStorage" );    __BEGIN__;    if( !parent )        CV_ERROR( CV_StsNullPtr, "" );    CV_CALL( storage = cvCreateMemStorage(parent->block_size));    storage->parent = parent;    __END__;    if( cvGetErrStatus() < 0 )        cvFree( &storage );    return storage;}/* releases all blocks of the storage (or returns them to parent if any) */static voidicvDestroyMemStorage( CvMemStorage* storage ){    CV_FUNCNAME( "icvDestroyMemStorage" );    __BEGIN__;    int k = 0;    CvMemBlock *block;    CvMemBlock *dst_top = 0;    if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    if( storage->parent )        dst_top = storage->parent->top;    for( block = storage->bottom; block != 0; k++ )    {        CvMemBlock *temp = block;        block = block->next;        if( storage->parent )        {            if( dst_top )            {                temp->prev = dst_top;                temp->next = dst_top->next;                if( temp->next )                    temp->next->prev = temp;                dst_top = dst_top->next = temp;            }            else            {                dst_top = storage->parent->bottom = storage->parent->top = temp;                temp->prev = temp->next = 0;                storage->free_space = storage->block_size - sizeof( *temp );            }        }        else        {            cvFree( &temp );        }    }    storage->top = storage->bottom = 0;    storage->free_space = 0;    __END__;}/* releases memory storage */CV_IMPL voidcvReleaseMemStorage( CvMemStorage** storage ){    CvMemStorage *st;    CV_FUNCNAME( "cvReleaseMemStorage" );    __BEGIN__;    if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    st = *storage;    *storage = 0;    if( st )    {        CV_CALL( icvDestroyMemStorage( st ));        cvFree( &st );    }    __END__;}/* clears memory storage (returns blocks to the parent if any) */CV_IMPL voidcvClearMemStorage( CvMemStorage * storage ){    CV_FUNCNAME( "cvClearMemStorage" );    __BEGIN__;    if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    if( storage->parent )    {        icvDestroyMemStorage( storage );    }    else    {        storage->top = storage->bottom;        storage->free_space = storage->bottom ? storage->block_size - sizeof(CvMemBlock) : 0;    }    __END__;}/* moves stack pointer to next block.   If no blocks, allocate new one and link it to the storage */static voidicvGoNextMemBlock( CvMemStorage * storage ){    CV_FUNCNAME( "icvGoNextMemBlock" );        __BEGIN__;        if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    if( !storage->top || !storage->top->next )    {        CvMemBlock *block;        if( !(storage->parent) )        {            CV_CALL( block = (CvMemBlock *)cvAlloc( storage->block_size ));        }        else        {            CvMemStorage *parent = storage->parent;            CvMemStoragePos parent_pos;            cvSaveMemStoragePos( parent, &parent_pos );            CV_CALL( icvGoNextMemBlock( parent ));            block = parent->top;            cvRestoreMemStoragePos( parent, &parent_pos );            if( block == parent->top )  /* the single allocated block */            {                assert( parent->bottom == block );                parent->top = parent->bottom = 0;                parent->free_space = 0;            }            else            {                /* cut the block from the parent's list of blocks */                parent->top->next = block->next;                if( block->next )                    block->next->prev = parent->top;            }        }        /* link block */        block->next = 0;        block->prev = storage->top;        if( storage->top )            storage->top->next = block;        else            storage->top = storage->bottom = block;    }    if( storage->top->next )        storage->top = storage->top->next;    storage->free_space = storage->block_size - sizeof(CvMemBlock);    assert( storage->free_space % CV_STRUCT_ALIGN == 0 );    __END__;}/* remembers memory storage position */CV_IMPL voidcvSaveMemStoragePos( const CvMemStorage * storage, CvMemStoragePos * pos ){    CV_FUNCNAME( "cvSaveMemStoragePos" );    __BEGIN__;    if( !storage || !pos )        CV_ERROR( CV_StsNullPtr, "" );    pos->top = storage->top;    pos->free_space = storage->free_space;    __END__;}/* restores memory storage position */CV_IMPL voidcvRestoreMemStoragePos( CvMemStorage * storage, CvMemStoragePos * pos ){    CV_FUNCNAME( "cvRestoreMemStoragePos" );    __BEGIN__;    if( !storage || !pos )        CV_ERROR( CV_StsNullPtr, "" );    if( pos->free_space > storage->block_size )        CV_ERROR( CV_StsBadSize, "" );    /*    // this breaks icvGoNextMemBlock, so comment it off for now    if( storage->parent && (!pos->top || pos->top->next) )    {        CvMemBlock* save_bottom;        if( !pos->top )            save_bottom = 0;        else        {            save_bottom = storage->bottom;            storage->bottom = pos->top->next;            pos->top->next = 0;            storage->bottom->prev = 0;        }        icvDestroyMemStorage( storage );        storage->bottom = save_bottom;    }*/    storage->top = pos->top;    storage->free_space = pos->free_space;    if( !storage->top )    {        storage->top = storage->bottom;        storage->free_space = storage->top ? storage->block_size - sizeof(CvMemBlock) : 0;    }    __END__;}/* Allocates continuous buffer of the specified size in the storage */CV_IMPL void*cvMemStorageAlloc( CvMemStorage* storage, size_t size ){    char *ptr = 0;        CV_FUNCNAME( "cvMemStorageAlloc" );    __BEGIN__;    if( !storage )        CV_ERROR( CV_StsNullPtr, "NULL storage pointer" );    if( size > INT_MAX )        CV_ERROR( CV_StsOutOfRange, "Too large memory block is requested" );    assert( storage->free_space % CV_STRUCT_ALIGN == 0 );    if( (size_t)storage->free_space < size )    {        size_t max_free_space = cvAlignLeft(storage->block_size - sizeof(CvMemBlock), CV_STRUCT_ALIGN);        if( max_free_space < size )            CV_ERROR( CV_StsOutOfRange, "requested size is negative or too big" );        CV_CALL( icvGoNextMemBlock( storage ));    }    ptr = ICV_FREE_PTR(storage);    assert( (size_t)ptr % CV_STRUCT_ALIGN == 0 );    storage->free_space = cvAlignLeft(storage->free_space - (int)size, CV_STRUCT_ALIGN );    __END__;    return ptr;}CV_IMPL CvStringcvMemStorageAllocString( CvMemStorage* storage, const char* ptr, int len ){    CvString str;    CV_FUNCNAME( "cvMemStorageAllocString" );    __BEGIN__;    str.len = len >= 0 ? len : (int)strlen(ptr);    CV_CALL( str.ptr = (char*)cvMemStorageAlloc( storage, str.len + 1 ));    memcpy( str.ptr, ptr, str.len );    str.ptr[str.len] = '\0';    __END__;    return str;}/****************************************************************************************\*                               Sequence implementation                                  *\****************************************************************************************//* creates empty sequence */CV_IMPL CvSeq *cvCreateSeq( int seq_flags, int header_size, int elem_size, CvMemStorage * storage ){    CvSeq *seq = 0;    CV_FUNCNAME( "cvCreateSeq" );    __BEGIN__;    if( !storage )        CV_ERROR( CV_StsNullPtr, "" );    if( header_size < (int)sizeof( CvSeq ) || elem_size <= 0 )        CV_ERROR( CV_StsBadSize, "" );    /* allocate sequence header */    CV_CALL( seq = (CvSeq*)cvMemStorageAlloc( storage, header_size ));    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,            "Specified element size doesn't match to the size of the specified element type "            "(try to use 0 for element type)" );    }    seq->elem_size = elem_size;    seq->storage = storage;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二区三区四区| 中文字幕一区二区不卡| 美女尤物国产一区| 中文字幕一区av| 狠狠色狠狠色综合| 91麻豆精品在线观看| 欧美激情综合在线| 91久久一区二区| 首页亚洲欧美制服丝腿| 欧美一区二区视频在线观看2022 | 国产**成人网毛片九色 | 日韩电影一区二区三区| 日韩精品一区国产麻豆| 国产成人高清视频| 亚洲国产精品嫩草影院| 精品国产乱码久久久久久浪潮 | 色婷婷久久久久swag精品| 亚洲一区二区三区不卡国产欧美| 欧美老年两性高潮| 国产伦精品一区二区三区视频青涩| 国产精品国产三级国产专播品爱网| 欧美亚洲动漫精品| 国产一区二区看久久| 依依成人综合视频| 精品1区2区在线观看| 99精品一区二区| 久久se精品一区二区| 国产精品电影院| 日韩一区二区视频在线观看| 懂色av中文字幕一区二区三区| 亚洲一区二区欧美| 欧美国产丝袜视频| 欧美一区二区三区视频免费播放| 成人激情文学综合网| 丝袜美腿亚洲综合| 1024成人网色www| 欧美精品一区二区三区在线播放| 91福利视频网站| 成人免费视频视频在线观看免费| 天天色天天操综合| 中文字幕色av一区二区三区| 精品国产一区二区国模嫣然| 欧美日韩视频在线观看一区二区三区| 国产精品456| 奇米综合一区二区三区精品视频| 亚洲人成在线播放网站岛国| 久久综合九色综合97_久久久| 欧美三级韩国三级日本一级| 成人午夜免费av| 精品一区二区三区在线观看国产| 亚洲香肠在线观看| 日韩一区在线看| 欧美国产精品一区二区三区| 久久夜色精品国产噜噜av| 欧美日本韩国一区二区三区视频 | 91精品在线一区二区| 在线亚洲精品福利网址导航| 成人一级黄色片| 国产精品亚洲一区二区三区妖精| 日本aⅴ亚洲精品中文乱码| 丝袜美腿成人在线| 玉米视频成人免费看| 亚洲天天做日日做天天谢日日欢| 国产日产欧产精品推荐色| 日韩精品一区二区三区老鸭窝 | 国产丝袜欧美中文另类| 日韩免费福利电影在线观看| 欧美一级电影网站| 日韩午夜小视频| 日韩欧美成人激情| 欧美成人a视频| 精品国产青草久久久久福利| 91麻豆精品国产91久久久| 正在播放亚洲一区| 欧美一级夜夜爽| 欧美成人一级视频| 欧美精品一区二区精品网| 精品成人a区在线观看| 亚洲精品一区二区三区蜜桃下载 | 精品成人免费观看| 久久精品视频网| 国产精品午夜在线观看| 国产精品久久综合| 一区二区三区高清| 五月婷婷激情综合| 蜜臀av一区二区在线观看| 国产乱子轮精品视频| 成人av电影在线| 欧洲一区在线电影| 欧美电影一区二区| 精品日韩一区二区三区免费视频| xvideos.蜜桃一区二区| 久久精品亚洲一区二区三区浴池| 亚洲欧洲精品一区二区三区| 一区二区欧美国产| 欧美a级理论片| 国产精品1区2区3区| 99国产麻豆精品| 在线播放日韩导航| 久久久国产精品麻豆| 最新日韩在线视频| 日韩av一区二区在线影视| 国产精品一线二线三线| 91免费视频网址| 日韩精品一区二| 中文字幕日韩欧美一区二区三区| 亚洲妇女屁股眼交7| 久久成人羞羞网站| 91麻豆国产福利在线观看| 69堂国产成人免费视频| 久久久精品天堂| 亚洲一区二区三区四区中文字幕| 蜜桃视频免费观看一区| a级精品国产片在线观看| 91精品欧美福利在线观看| 国产精品美女www爽爽爽| 亚洲一二三专区| 国产成人鲁色资源国产91色综| 欧美在线观看一区二区| 国产清纯在线一区二区www| 午夜精品福利一区二区三区蜜桃| 国产乱子伦视频一区二区三区| 91福利国产成人精品照片| 久久精品一区二区三区不卡牛牛| 亚洲午夜久久久久久久久久久 | 亚洲成人黄色小说| 国产99久久久国产精品潘金| 欧美日韩午夜影院| 国产精品久久久久影院色老大| 日韩国产欧美一区二区三区| caoporm超碰国产精品| 欧美v日韩v国产v| 亚洲午夜视频在线| 99精品在线免费| 国产午夜精品久久| 另类小说色综合网站| 欧美三级日韩在线| 亚洲激情网站免费观看| 成人午夜电影久久影院| 2023国产精品视频| 日本 国产 欧美色综合| 在线观看一区二区精品视频| 国产精品久久久久久户外露出 | 在线亚洲人成电影网站色www| 久久久午夜精品理论片中文字幕| 日韩专区欧美专区| 欧美在线免费观看亚洲| 伊人婷婷欧美激情| 一本久久综合亚洲鲁鲁五月天| 日本一区二区三区四区| 国产福利一区在线| 久久久一区二区| 国产一区在线看| 欧美电视剧在线看免费| 丝袜美腿亚洲一区二区图片| 欧美女孩性生活视频| 亚洲最大成人网4388xx| 色综合久久99| 伊人婷婷欧美激情| 在线观看一区日韩| 午夜精品久久久久久久久久| 欧美精品在线观看播放| 日韩电影在线免费看| 欧美日韩高清影院| 日韩av电影免费观看高清完整版| 欧美丰满少妇xxxbbb| 日韩二区三区四区| 日韩女同互慰一区二区| 奇米777欧美一区二区| 日韩精品一区二区三区老鸭窝 | 午夜影院在线观看欧美| 欧美偷拍一区二区| 日韩综合小视频| 欧美日韩国产综合一区二区 | 337p粉嫩大胆色噜噜噜噜亚洲| 奇米亚洲午夜久久精品| 亚洲精品在线一区二区| 成人免费高清视频| 亚洲四区在线观看| 欧洲中文字幕精品| 蜜乳av一区二区| 国产三级久久久| 在线观看一区日韩| 麻豆91精品视频| 国产午夜精品在线观看| 99久久777色| 日韩激情av在线| 久久亚洲综合av| 91小宝寻花一区二区三区| 午夜视频在线观看一区二区 | 综合电影一区二区三区| 欧美视频在线观看一区| 麻豆国产精品一区二区三区 | 国产三级久久久| 色综合久久久久综合| 91久久精品国产91性色tv| 日本亚洲电影天堂| 亚洲欧洲av色图| 精品入口麻豆88视频| 91在线云播放|