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

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

?? dsputil_bfin.c

?? linux環(huán)境下的全內(nèi)插匯編程序
?? C
字號:
/*
 * BlackFin DSPUTILS
 *
 * Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com>
 * Copyright (c) 2006 Michael Benjamin <michael.benjamin@analog.com>
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#include <unistd.h>
#include "avcodec.h"
#include "dsputil.h"
#include "dsputil_bfin.h"

int off;


/*extern void ff_bfin_idct (DCTELEM *block) attribute_l1_text;
extern void ff_bfin_fdct (DCTELEM *block) attribute_l1_text;
extern void ff_bfin_vp3_idct (DCTELEM *block);
extern void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, DCTELEM *block);
extern void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, DCTELEM *block);
extern void ff_bfin_add_pixels_clamped (DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
extern void ff_bfin_put_pixels_clamped (DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
extern void ff_bfin_diff_pixels (DCTELEM *block, uint8_t *s1, uint8_t *s2, int stride)  attribute_l1_text;
extern void ff_bfin_get_pixels  (DCTELEM *restrict block, const uint8_t *pixels, int line_size) attribute_l1_text;
extern int  ff_bfin_pix_norm1  (uint8_t * pix, int line_size) attribute_l1_text;
extern int  ff_bfin_z_sad8x8   (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h) attribute_l1_text;
extern int  ff_bfin_z_sad16x16 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h) attribute_l1_text;

extern void ff_bfin_z_put_pixels16_xy2     (uint8_t *block, const uint8_t *s0, int dest_size, int line_size, int h) attribute_l1_text;
extern void ff_bfin_z_put_pixels8_xy2      (uint8_t *block, const uint8_t *s0, int dest_size, int line_size, int h) attribute_l1_text;
extern void ff_bfin_put_pixels16_xy2_nornd (uint8_t *block, const uint8_t *s0, int line_size, int h) attribute_l1_text;
extern void ff_bfin_put_pixels8_xy2_nornd  (uint8_t *block, const uint8_t *s0, int line_size, int h) attribute_l1_text;


extern int  ff_bfin_pix_sum (uint8_t *p, int stride) attribute_l1_text;*/

extern void ff_bfin_put_pixels8uc        (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int dest_size, int line_size, int h) attribute_l1_text;
extern void ff_bfin_put_pixels16uc       (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int dest_size, int line_size, int h) attribute_l1_text;
extern void ff_bfin_put_pixels8uc_nornd  (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int line_size, int h) attribute_l1_text;
extern void ff_bfin_put_pixels16uc_nornd (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int line_size, int h) attribute_l1_text;

/*extern int ff_bfin_sse4  (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;
extern int ff_bfin_sse8  (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;
extern int ff_bfin_sse16 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;


static void bfin_idct_add (uint8_t *dest, int line_size, DCTELEM *block)
{
    ff_bfin_idct (block);
    ff_bfin_add_pixels_clamped (block, dest, line_size);
}

static void bfin_idct_put (uint8_t *dest, int line_size, DCTELEM *block)
{
    ff_bfin_idct (block);
    ff_bfin_put_pixels_clamped (block, dest, line_size);
}


static void bfin_clear_blocks (DCTELEM *blocks)
{
    // This is just a simple memset.
    //
    asm("P0=192; "
        "I0=%0;  "
        "R0=0;   "
        "LSETUP(clear_blocks_blkfn_lab,clear_blocks_blkfn_lab)LC0=P0;"
        "clear_blocks_blkfn_lab:"
        "[I0++]=R0;"
        ::"a" (blocks):"P0","I0","R0");
}



static void bfin_put_pixels8 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc (block, pixels, pixels, line_size, line_size, h);
}

static void bfin_put_pixels8_x2(uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc (block, pixels, pixels+1, line_size, line_size, h);
}

static void bfin_put_pixels8_y2 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc (block, pixels, pixels+line_size, line_size, line_size, h);
}

static void bfin_put_pixels8_xy2 (uint8_t *block, const uint8_t *s0, int line_size, int h)
{
    ff_bfin_z_put_pixels8_xy2 (block,s0,line_size, line_size, h);
}

static void bfin_put_pixels16 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc (block, pixels, pixels, line_size, line_size, h);
}

static void bfin_put_pixels16_x2 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc (block, pixels, pixels+1, line_size, line_size, h);
}

static void bfin_put_pixels16_y2 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc (block, pixels, pixels+line_size, line_size, line_size, h);
}

static void bfin_put_pixels16_xy2 (uint8_t *block, const uint8_t *s0, int line_size, int h)
{
    ff_bfin_z_put_pixels16_xy2 (block,s0,line_size, line_size, h);
}

void bfin_put_pixels8_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc_nornd (block, pixels, pixels, line_size, h);
}

static void bfin_put_pixels8_x2_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+1, line_size, h);
}

static void bfin_put_pixels8_y2_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+line_size, line_size, h);
}


void bfin_put_pixels16_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc_nornd (block, pixels, pixels, line_size, h);
}

static void bfin_put_pixels16_x2_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc_nornd (block, pixels, pixels+1, line_size, h);
}

static void bfin_put_pixels16_y2_nornd (uint8_t *block, const uint8_t *pixels, int line_size, int h)
{
    ff_bfin_put_pixels16uc_nornd (block, pixels, pixels+line_size, line_size, h);
}

static int bfin_pix_abs16 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    return ff_bfin_z_sad16x16 (blk1,blk2,line_size,line_size,h);
}

static int bfin_vsad_intra16 (void *c, uint8_t *blk1, uint8_t *dummy, int stride, int h) {
    return ff_bfin_z_sad16x16 (blk1,blk1+stride,stride<<1,stride<<1,h);
}

static int bfin_vsad (void *c, uint8_t *blk1, uint8_t *blk2, int stride, int h) {
    return ff_bfin_z_sad16x16 (blk1,blk1+stride,stride<<1,stride<<1,h)
        + ff_bfin_z_sad16x16 (blk2,blk2+stride,stride<<1,stride<<1,h);
}

static uint8_t vtmp_blk[256] __attribute__((l1_data_B));

static int bfin_pix_abs16_x2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_put_pixels16uc (vtmp_blk, blk2, blk2+1, 16, line_size, h);
    return ff_bfin_z_sad16x16 (blk1, vtmp_blk, line_size, 16, h);
}

static int bfin_pix_abs16_y2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_put_pixels16uc (vtmp_blk, blk2, blk2+line_size, 16, line_size, h);
    return ff_bfin_z_sad16x16 (blk1, vtmp_blk, line_size, 16, h);
}

static int bfin_pix_abs16_xy2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_z_put_pixels16_xy2 (vtmp_blk, blk2, 16, line_size, h);
    return ff_bfin_z_sad16x16 (blk1, vtmp_blk, line_size, 16, h);
}

static int bfin_pix_abs8 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    return ff_bfin_z_sad8x8 (blk1,blk2,line_size,line_size, h);
}

static int bfin_pix_abs8_x2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_put_pixels8uc (vtmp_blk, blk2, blk2+1, 8, line_size, h);
    return ff_bfin_z_sad8x8 (blk1, vtmp_blk, line_size, 8, h);
}

static int bfin_pix_abs8_y2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_put_pixels8uc (vtmp_blk, blk2, blk2+line_size, 8, line_size, h);
    return ff_bfin_z_sad8x8 (blk1, vtmp_blk, line_size, 8, h);
}

static int bfin_pix_abs8_xy2 (void *c, uint8_t *blk1, uint8_t *blk2, int line_size, int h)
{
    ff_bfin_z_put_pixels8_xy2 (vtmp_blk, blk2, 8, line_size, h);
    return ff_bfin_z_sad8x8 (blk1, vtmp_blk, line_size, 8, h);
}


/*
  decoder optimization
  start on 2/11 100 frames of 352x240@25 compiled with no optimization -g debugging
  9.824s ~ 2.44x off
  6.360s ~ 1.58x off with -O2
  5.740s ~ 1.43x off with idcts

  2.64s    2/20 same sman.mp4 decode only

*/

void dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx )
{
    c->get_pixels         = ff_bfin_get_pixels;
    c->diff_pixels        = ff_bfin_diff_pixels;
    c->put_pixels_clamped = ff_bfin_put_pixels_clamped;
    c->add_pixels_clamped = ff_bfin_add_pixels_clamped;

    c->clear_blocks       = bfin_clear_blocks;
    c->pix_sum            = ff_bfin_pix_sum;
    c->pix_norm1          = ff_bfin_pix_norm1;

    c->sad[0]             = bfin_pix_abs16;
    c->sad[1]             = bfin_pix_abs8;

    c->vsad[0]            = bfin_vsad;
    c->vsad[4]            = bfin_vsad_intra16;

    /* TODO [0] 16  [1] 8 */
    c->pix_abs[0][0] = bfin_pix_abs16;
    c->pix_abs[0][1] = bfin_pix_abs16_x2;
    c->pix_abs[0][2] = bfin_pix_abs16_y2;
    c->pix_abs[0][3] = bfin_pix_abs16_xy2;

    c->pix_abs[1][0] = bfin_pix_abs8;
    c->pix_abs[1][1] = bfin_pix_abs8_x2;
    c->pix_abs[1][2] = bfin_pix_abs8_y2;
    c->pix_abs[1][3] = bfin_pix_abs8_xy2;


    c->sse[0] = ff_bfin_sse16;
    c->sse[1] = ff_bfin_sse8;
    c->sse[2] = ff_bfin_sse4;


    /**
     * Halfpel motion compensation with rounding (a+b+1)>>1.
     * This is an array[4][4] of motion compensation functions for 4
     * horizontal blocksizes (8,16) and the 4 halfpel positions
     * *pixels_tab[ 0->16xH 1->8xH ][ xhalfpel + 2*yhalfpel ]
     * @param block destination where the result is stored
     * @param pixels source
     * @param line_size number of bytes in a horizontal line of block
     * @param h height
     */

    c->put_pixels_tab[0][0] = bfin_put_pixels16;
    c->put_pixels_tab[0][1] = bfin_put_pixels16_x2;
    c->put_pixels_tab[0][2] = bfin_put_pixels16_y2;
    c->put_pixels_tab[0][3] = bfin_put_pixels16_xy2;

    c->put_pixels_tab[1][0] = bfin_put_pixels8;
    c->put_pixels_tab[1][1] = bfin_put_pixels8_x2;
    c->put_pixels_tab[1][2] = bfin_put_pixels8_y2;
    c->put_pixels_tab[1][3] = bfin_put_pixels8_xy2;

    c->put_no_rnd_pixels_tab[1][0] = bfin_put_pixels8_nornd;
    c->put_no_rnd_pixels_tab[1][1] = bfin_put_pixels8_x2_nornd;
    c->put_no_rnd_pixels_tab[1][2] = bfin_put_pixels8_y2_nornd;
    c->put_no_rnd_pixels_tab[1][3] = ff_bfin_put_pixels8_xy2_nornd;

    c->put_no_rnd_pixels_tab[0][0] = bfin_put_pixels16_nornd;
    c->put_no_rnd_pixels_tab[0][1] = bfin_put_pixels16_x2_nornd;
    c->put_no_rnd_pixels_tab[0][2] = bfin_put_pixels16_y2_nornd;
    c->put_no_rnd_pixels_tab[0][3] = ff_bfin_put_pixels16_xy2_nornd;

    c->idct_permutation_type = FF_NO_IDCT_PERM;
    c->fdct                  = ff_bfin_fdct;
    if (avctx->idct_algo==FF_IDCT_VP3) {
        c->idct               = ff_bfin_vp3_idct;
        c->idct_add           = ff_bfin_vp3_idct_add;
        c->idct_put           = ff_bfin_vp3_idct_put;
    } else {
        c->idct               = ff_bfin_idct;
        c->idct_add           = bfin_idct_add;
        c->idct_put           = bfin_idct_put;
    }
}*/



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级欧美一级在线播放| 一本久道中文字幕精品亚洲嫩| 欧美精品1区2区3区| 午夜精品久久久久久久蜜桃app | 久久99精品国产麻豆婷婷| 宅男在线国产精品| 国产在线视视频有精品| 国产丝袜欧美中文另类| 成人av电影观看| 亚洲一区二区精品久久av| 欧美一区二区三区在线电影| 五月婷婷激情综合| 久久久三级国产网站| 成人av在线看| 亚洲国产日韩a在线播放性色| 欧美精品久久久久久久多人混战| 欧美aaa在线| 欧美高清在线精品一区| 在线免费观看一区| 日本不卡高清视频| 国产精品免费免费| 欧美影视一区在线| 国产精品中文欧美| 亚洲国产精品久久艾草纯爱| 日韩精品一区二区三区四区| 成人黄色小视频| 日韩激情在线观看| 国产精品久久久久久久裸模| 欧美性大战xxxxx久久久| 美女脱光内衣内裤视频久久网站| 国产亚洲婷婷免费| 欧美色偷偷大香| 国产精品1区2区3区| 伊人色综合久久天天人手人婷| 777午夜精品视频在线播放| 国产高清一区日本| 亚洲成av人片在www色猫咪| 久久综合九色综合97婷婷女人| www.日本不卡| 免费在线观看一区| 亚洲黄网站在线观看| 精品第一国产综合精品aⅴ| 成人一区在线观看| 麻豆精品在线播放| 亚洲香蕉伊在人在线观| 国产精品卡一卡二卡三| 日韩一区二区三区电影 | 亚洲午夜一区二区三区| 久久日韩粉嫩一区二区三区| 欧洲亚洲国产日韩| aaa欧美色吧激情视频| 久久99久久久久| 一片黄亚洲嫩模| 国产精品久久久久久久久免费相片 | 日韩精品一区二区三区蜜臀| 色综合久久综合中文综合网| 国产成人精品影视| 韩国三级在线一区| 男女男精品网站| 午夜亚洲国产au精品一区二区| 国产精品久久久久天堂| 国产日韩欧美a| 精品日韩在线观看| 欧美一级国产精品| 欧美精品丝袜久久久中文字幕| 91亚洲大成网污www| 国产精品18久久久久久vr| 免费高清成人在线| 日韩av一区二| 亚洲成av人影院| 日韩国产精品大片| 视频一区二区三区中文字幕| 亚洲最大的成人av| 亚洲一区二区三区四区五区黄 | 成人精品视频一区| 成人精品gif动图一区| 国产美女久久久久| 国产成人精品www牛牛影视| 国产剧情av麻豆香蕉精品| 国内精品第一页| 国产精品538一区二区在线| 国产精品1024| 成人黄色一级视频| 91蝌蚪国产九色| 在线观看欧美日本| 欧美久久久久久蜜桃| 欧美一区二区三区喷汁尤物| 91精品国产色综合久久| 欧美一区二区三区四区久久 | 91麻豆精品秘密| 欧美日韩一本到| 日韩视频在线一区二区| 久久婷婷久久一区二区三区| 亚洲国产精品ⅴa在线观看| 中文字幕一区二区三区乱码在线| 亚洲色图视频网站| 视频一区国产视频| 激情久久五月天| 欧美丰满少妇xxxxx高潮对白 | 色综合天天性综合| 欧美三片在线视频观看| 91精品国产色综合久久ai换脸 | 久久国产精品无码网站| 国产一区二区三区电影在线观看 | 一区二区三区免费网站| 三级久久三级久久| 岛国精品在线观看| 欧美性色综合网| 欧美精品一区二区三区蜜桃| 国产精品天美传媒| 五月激情综合婷婷| 丁香另类激情小说| 欧美日韩精品欧美日韩精品一| 久久综合网色—综合色88| 亚洲色图另类专区| 日本va欧美va欧美va精品| 国产91露脸合集magnet| 精品视频在线看| 国产精品天美传媒沈樵| 日韩中文字幕91| 成人app网站| 日韩三级在线免费观看| 亚洲色欲色欲www| 国产美女在线观看一区| 在线视频国内一区二区| 精品久久一区二区三区| 亚洲国产精品一区二区www在线| 精品亚洲aⅴ乱码一区二区三区| 色天天综合色天天久久| 久久久综合精品| 午夜不卡av免费| 一本一道综合狠狠老| 国产亚洲污的网站| 另类调教123区| 欧美日韩一区二区三区视频| 国产欧美日韩不卡| 久久精品国产99| 欧美人与z0zoxxxx视频| 亚洲激情图片qvod| 成人久久久精品乱码一区二区三区| 欧美精品乱人伦久久久久久| 国产精品国产三级国产有无不卡 | 国产亚洲精品aa| 视频一区二区不卡| 欧美性xxxxx极品少妇| 国产一区二区三区观看| 在线播放/欧美激情| 亚洲精品欧美二区三区中文字幕| 国产精品一区二区x88av| 欧美一区二区免费| 日韩av一区二区三区四区| 欧美日韩中文字幕精品| 亚洲免费电影在线| 91麻豆国产香蕉久久精品| 欧美国产精品一区二区三区| 国产一区二区三区久久悠悠色av| 欧美一区二区精品在线| 琪琪一区二区三区| 欧美一区二区三区系列电影| 亚洲成av人**亚洲成av**| 欧美三级资源在线| 午夜一区二区三区视频| 欧美日韩色一区| 日韩精品免费视频人成| 欧美卡1卡2卡| 美女网站色91| 久久久久久久网| 高清不卡在线观看| 国产精品每日更新| 色综合久久99| 亚洲一二三四久久| 欧美撒尿777hd撒尿| 视频一区二区欧美| 精品免费视频.| 国产美女一区二区三区| 中文字幕av一区二区三区免费看| 成人爽a毛片一区二区免费| 久久精品一区二区三区av| 不卡电影一区二区三区| 亚洲精品免费看| 亚洲午夜一区二区| 欧美肥妇bbw| 国产一区二区三区精品欧美日韩一区二区三区| 欧美精品一区二区高清在线观看 | 日本高清免费不卡视频| 亚洲成人自拍一区| 欧美tickle裸体挠脚心vk| 国产福利一区在线| 亚洲精品免费在线播放| 欧美老肥妇做.爰bbww| 久久精品国产成人一区二区三区| 久久女同性恋中文字幕| 93久久精品日日躁夜夜躁欧美| 亚洲综合免费观看高清完整版在线| 欧美日韩国产123区| 狠狠狠色丁香婷婷综合激情 | 国产福利精品导航| 亚洲精品国产视频| 精品乱人伦一区二区三区| 福利一区二区在线观看|