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

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

?? cxmatmul.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*M///////////////////////////////////////////////////////////////////////////////////////
//
//  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.
//
//
//                        Intel License Agreement
//                For Open Source Computer Vision Library
//
// Copyright (C) 2000, 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:
//
//   * Redistribution's of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//
//   * Redistribution's 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.
//
//   * The name of Intel Corporation may not 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 Intel Corporation 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.
//
//M*/

#include "_cxcore.h"

/****************************************************************************************\
*                                         cvGEMM                                         *
\****************************************************************************************/

icvBLAS_GEMM_32f_t icvBLAS_GEMM_32f_p = 0;
icvBLAS_GEMM_64f_t icvBLAS_GEMM_64f_p = 0;
icvBLAS_GEMM_32fc_t icvBLAS_GEMM_32fc_p = 0;
icvBLAS_GEMM_64fc_t icvBLAS_GEMM_64fc_p = 0;

static void
icvGEMM_CopyBlock( const uchar* src, int src_step,
                   uchar* dst, int dst_step,
                   CvSize size, int pix_size )
{
    int j;
    size.width = size.width * (pix_size / sizeof(int));

    for( ; size.height--; src += src_step, dst += dst_step )
    {
        for( j = 0; j <= size.width - 4; j += 4 )
        {
            int t0 = ((const int*)src)[j];
            int t1 = ((const int*)src)[j+1];
            ((int*)dst)[j] = t0;
            ((int*)dst)[j+1] = t1;
            t0 = ((const int*)src)[j+2];
            t1 = ((const int*)src)[j+3];
            ((int*)dst)[j+2] = t0;
            ((int*)dst)[j+3] = t1;
        }

        for( ; j < size.width; j++ )
            ((int*)dst)[j] = ((const int*)src)[j];
    }
}


static void
icvGEMM_TransposeBlock( const uchar* src, int src_step,
                        uchar* dst, int dst_step,
                        CvSize size, int pix_size )
{
    int i, j;
    for( i = 0; i < size.width; i++, dst += dst_step, src += pix_size )
    {
        const uchar* _src = src;
        switch( pix_size )
        {
        case sizeof(int):
            for( j = 0; j < size.height; j++, _src += src_step )
                ((int*)dst)[j] = ((int*)_src)[0];
            break;
        case sizeof(int)*2:
            for( j = 0; j < size.height*2; j += 2, _src += src_step )
            {
                int t0 = ((int*)_src)[0];
                int t1 = ((int*)_src)[1];
                ((int*)dst)[j] = t0;
                ((int*)dst)[j+1] = t1;
            }
            break;
        case sizeof(int)*4:
            for( j = 0; j < size.height*4; j += 4, _src += src_step )
            {
                int t0 = ((int*)_src)[0];
                int t1 = ((int*)_src)[1];
                ((int*)dst)[j] = t0;
                ((int*)dst)[j+1] = t1;
                t0 = ((int*)_src)[2];
                t1 = ((int*)_src)[3];
                ((int*)dst)[j+2] = t0;
                ((int*)dst)[j+3] = t1;
            }
            break;
        default:
            assert(0);
            return;
        }
    }
}

#define ICV_DEF_GEMM_SINGLE_MUL( flavor, arrtype, worktype )                \
static CvStatus CV_STDCALL                                                  \
icvGEMMSingleMul_##flavor( const arrtype* a_data, size_t a_step,            \
                         const arrtype* b_data, size_t b_step,              \
                         const arrtype* c_data, size_t c_step,              \
                         arrtype* d_data, size_t d_step,                    \
                         CvSize a_size, CvSize d_size,                      \
                         double alpha, double beta, int flags )             \
{                                                                           \
    int i, j, k, n = a_size.width, m = d_size.width, drows = d_size.height; \
    const arrtype *_a_data = a_data, *_b_data = b_data, *_c_data = c_data;  \
    arrtype* a_buf = 0;                                                     \
    size_t a_step0, a_step1, c_step0, c_step1, t_step;                      \
                                                                            \
    a_step /= sizeof(a_data[0]);                                            \
    b_step /= sizeof(b_data[0]);                                            \
    c_step /= sizeof(c_data[0]);                                            \
    d_step /= sizeof(d_data[0]);                                            \
    a_step0 = a_step;                                                       \
    a_step1 = 1;                                                            \
                                                                            \
    if( !c_data )                                                           \
        c_step0 = c_step1 = 0;                                              \
    else if( !(flags & CV_GEMM_C_T) )                                       \
        c_step0 = c_step, c_step1 = 1;                                      \
    else                                                                    \
        c_step0 = 1, c_step1 = c_step;                                      \
                                                                            \
    if( flags & CV_GEMM_A_T )                                               \
    {                                                                       \
        CV_SWAP( a_step0, a_step1, t_step );                                \
        n = a_size.height;                                                  \
        if( a_step > 1 && n > 1 )                                           \
            a_buf = (arrtype*)cvAlloc(n*sizeof(a_data[0]));            \
    }                                                                       \
                                                                            \
    if( n == 1 ) /* external product */                                     \
    {                                                                       \
        arrtype* b_buf = 0;                                                 \
                                                                            \
        if( a_step > 1 )                                                    \
        {                                                                   \
            a_buf = (arrtype*)cvAlloc(drows*sizeof(a_data[0]));        \
            for( k = 0; k < drows; k++ )                                    \
                a_buf[k] = a_data[a_step*k];                                \
            a_data = a_buf;                                                 \
        }                                                                   \
                                                                            \
        if( b_step > 1 )                                                    \
        {                                                                   \
            b_buf = (arrtype*)cvAlloc(d_size.width*sizeof(b_buf[0]) ); \
            for( j = 0; j < d_size.width; j++ )                             \
                b_buf[j] = b_data[j*b_step];                                \
            b_data = b_buf;                                                 \
        }                                                                   \
                                                                            \
        for( i = 0; i < drows; i++, _c_data += c_step0,                     \
                                    d_data += d_step )                      \
        {                                                                   \
            worktype al = worktype(a_data[i])*alpha;                        \
            c_data = _c_data;                                               \
            for( j = 0; j <= d_size.width - 2; j += 2, c_data += 2*c_step1 )\
            {                                                               \
                worktype s0 = al*b_data[j];                                 \
                worktype s1 = al*b_data[j+1];                               \
                if( !c_data )                                               \
                {                                                           \
                    d_data[j] = arrtype(s0);                                \
                    d_data[j+1] = arrtype(s1);                              \
                }                                                           \
                else                                                        \
                {                                                           \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
                    d_data[j+1] = arrtype(s1 + c_data[c_step1]*beta);       \
                }                                                           \
            }                                                               \
                                                                            \
            for( ; j < d_size.width; j++, c_data += c_step1 )               \
            {                                                               \
                worktype s0 = al*b_data[j];                                 \
                if( !c_data )                                               \
                    d_data[j] = arrtype(s0);                                \
                else                                                        \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
            }                                                               \
        }                                                                   \
    }                                                                       \
    else if( flags & CV_GEMM_B_T ) /* A * Bt */                             \
    {                                                                       \
        for( i = 0; i < drows; i++, _a_data += a_step0,                     \
                                    _c_data += c_step0,                     \
                                    d_data += d_step )                      \
        {                                                                   \
            a_data = _a_data;                                               \
            b_data = _b_data;                                               \
            c_data = _c_data;                                               \
                                                                            \
            if( a_buf )                                                     \
            {                                                               \
                for( k = 0; k < n; k++ )                                    \
                    a_buf[k] = a_data[a_step1*k];                           \
                a_data = a_buf;                                             \
            }                                                               \
                                                                            \
            for( j = 0; j < d_size.width; j++, b_data += b_step,            \
                                               c_data += c_step1 )          \
            {                                                               \
                worktype s0(0), s1(0), s2(0), s3(0);                        \
                                                                            \
                for( k = 0; k <= n - 4; k += 4 )                            \
                {                                                           \
                    s0 += worktype(a_data[k])*b_data[k];                    \
                    s1 += worktype(a_data[k+1])*b_data[k+1];                \
                    s2 += worktype(a_data[k+2])*b_data[k+2];                \
                    s3 += worktype(a_data[k+3])*b_data[k+3];                \
                }                                                           \
                                                                            \
                for( ; k < n; k++ )                                         \
                    s0 += worktype(a_data[k])*b_data[k];                    \
                s0 = (s0+s1+s2+s3)*alpha;                                   \
                                                                            \
                if( !c_data )                                               \
                    d_data[j] = arrtype(s0);                                \
                else                                                        \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
            }                                                               \
        }                                                                   \
    }                                                                       \

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男男成人高潮片免费网站| 色悠久久久久综合欧美99| 三级欧美韩日大片在线看| 一区二区在线观看不卡| 国产精品视频麻豆| 中文字幕色av一区二区三区| 中文字幕第一区综合| 国产日韩欧美不卡| 中文字幕日本不卡| 亚洲欧美一区二区三区国产精品| 国产精品国产精品国产专区不片| 国产精品久久久久久久久免费相片 | 专区另类欧美日韩| 亚洲日本在线视频观看| 一区二区三区在线免费| 亚洲一卡二卡三卡四卡五卡| 亚洲成av人片在www色猫咪| 日韩精品91亚洲二区在线观看 | 欧美剧情片在线观看| 91.麻豆视频| 精品国偷自产国产一区| 久久精品人人做人人综合 | 亚洲成av人片一区二区梦乃| 青青草国产精品97视觉盛宴| 国产精品亚洲а∨天堂免在线| www.久久久久久久久| 色av综合在线| 欧美一区二区三区四区在线观看| 欧美成人性福生活免费看| 久久久久久久久伊人| 中文字幕中文字幕一区二区| 亚洲国产一区视频| 精品亚洲国内自在自线福利| av不卡一区二区三区| 欧美午夜精品久久久久久超碰| 欧美一级精品在线| 亚洲国产精品高清| 亚洲一区二区黄色| 国产一区二区三区在线观看免费视频| av高清久久久| 欧美一卡二卡在线| 国产精品视频线看| 日本sm残虐另类| 成人精品小蝌蚪| 欧美电影一区二区| 日本一区二区三区四区在线视频| 洋洋成人永久网站入口| 韩日av一区二区| 91麻豆高清视频| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲欧美国产77777| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日韩国产中文| 久久久久久久久岛国免费| 亚洲精品免费一二三区| 日本sm残虐另类| 91麻豆国产自产在线观看| 欧美videos大乳护士334| 亚洲欧美日韩国产综合| 韩日欧美一区二区三区| 欧美日免费三级在线| 中文字幕不卡在线播放| 日本视频一区二区| 91在线观看污| 精品国产91九色蝌蚪| 亚洲午夜一区二区| 成人动漫精品一区二区| 欧美大尺度电影在线| 一区二区三区四区乱视频| 国产剧情一区二区| 欧美一区二区免费观在线| 亚洲欧美视频在线观看| 国产·精品毛片| 日韩欧美一级二级| 亚洲成人你懂的| 色哟哟国产精品| 亚洲国产成人一区二区三区| 久久99国产精品久久99果冻传媒| 欧美这里有精品| 亚洲男人天堂av网| 成人精品鲁一区一区二区| 精品久久国产字幕高潮| 日韩精品亚洲专区| 欧美亚洲动漫精品| 亚洲免费在线播放| 成人黄色免费短视频| 久久久久久久久久电影| 国产在线日韩欧美| 91精品国产91热久久久做人人| 亚洲va国产天堂va久久en| 91黄色免费版| 亚洲视频狠狠干| 成人18视频在线播放| 国产欧美一区二区精品婷婷| 国产在线不卡视频| 久久这里只有精品6| 精品一区二区综合| 精品国免费一区二区三区| 免费在线观看成人| 91精品国产高清一区二区三区| 偷拍与自拍一区| 欧美日韩久久久久久| 亚洲v中文字幕| 欧美日韩的一区二区| 午夜精品福利久久久| 欧美日韩一区久久| 亚洲高清三级视频| 欧美乱妇23p| 毛片一区二区三区| 精品国产a毛片| 精品一区二区三区蜜桃| 精品国产一区二区三区不卡| 韩国在线一区二区| 日本一区二区三区四区| 成人黄色小视频在线观看| 亚洲欧美日韩在线| 欧美亚洲免费在线一区| 午夜精品在线看| 日韩三级视频在线看| 国产一区二区三区美女| 国产精品久久久久一区二区三区共| youjizz国产精品| 一区二区三区在线看| 欧美日韩精品欧美日韩精品一 | 亚洲国产视频网站| 日韩三级视频中文字幕| 国产精品亚洲专一区二区三区| 国产精品丝袜在线| 精品视频在线视频| 日本亚洲视频在线| 欧美国产97人人爽人人喊| 一本一道久久a久久精品综合蜜臀| 亚洲成人自拍网| 精品少妇一区二区三区免费观看 | 秋霞午夜av一区二区三区| 久久亚洲精华国产精华液| 成人国产视频在线观看| 夜色激情一区二区| 久久亚洲精华国产精华液| 99re66热这里只有精品3直播| 午夜精品久久久久久久99水蜜桃 | 中文字幕亚洲一区二区av在线| 欧美性一级生活| 韩国毛片一区二区三区| 中文字幕中文字幕一区二区| 6080午夜不卡| 成人激情动漫在线观看| 日韩成人一级大片| 国产精品区一区二区三区| 欧美日韩精品免费观看视频| 国产福利91精品| 亚洲va欧美va人人爽| 亚洲国产精品成人综合| 欧美丰满高潮xxxx喷水动漫| 成人午夜激情在线| 日韩精品亚洲一区| 1000部国产精品成人观看| 欧美一区二区视频免费观看| 成人黄色大片在线观看| 日韩激情中文字幕| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美理论电影在线| 波多野结衣中文一区| 蜜桃视频一区二区| 一区二区三区**美女毛片| 欧美不卡123| 欧美亚洲国产bt| 成人av在线影院| 麻豆91在线播放免费| 亚洲精品视频免费看| 久久精品一二三| 欧美美女bb生活片| 91在线精品秘密一区二区| 韩国精品一区二区| 天堂蜜桃一区二区三区| 亚洲日韩欧美一区二区在线| 国产日韩精品久久久| 在线播放91灌醉迷j高跟美女| 99久久伊人精品| 国产在线国偷精品免费看| 日韩avvvv在线播放| 一二三区精品福利视频| 亚洲视频一区在线| 国产精品美女久久久久久| 久久久国产精华| 精品欧美乱码久久久久久1区2区| 欧美视频中文一区二区三区在线观看| 成人视屏免费看| 国产不卡高清在线观看视频| 久草中文综合在线| 日韩精品成人一区二区三区| 亚洲成人中文在线| 亚洲国产欧美在线人成| 亚洲品质自拍视频网站| 国产精品久久久久久久久果冻传媒 | 欧美日韩午夜在线| 色88888久久久久久影院野外| 9l国产精品久久久久麻豆| 国产91在线观看丝袜| 国内精品伊人久久久久影院对白|