【DM642学习笔记十】DSP优化记录
#pragma DATA_SECTION(onchipBuf0_y,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_y,);
#pragma DATA_SECTION(onchipBuf1_y,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_y,);
#pragma DATA_SECTION(onchipBuf0_u,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_u,);
#pragma DATA_SECTION(onchipBuf1_u,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_u,);
#pragma DATA_SECTION(onchipBuf0_v,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_v,);
#pragma DATA_SECTION(onchipBuf1_v,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_v,); #pragma DATA_SECTION(onchipBuf0_r,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_r,);
#pragma DATA_SECTION(onchipBuf1_r,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_r,);
#pragma DATA_SECTION(onchipBuf0_g,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_g,);
#pragma DATA_SECTION(onchipBuf1_g,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_g,);
#pragma DATA_SECTION(onchipBuf0_b,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf0_b,);
#pragma DATA_SECTION(onchipBuf1_b,".INTPROCBUFF");
#pragmaDATA_ALIGN(onchipBuf1_b,);
//片上缓冲区
unsigned charonchipBuf0_y[PROC_WIDTH];
unsigned charonchipBuf1_y[PROC_WIDTH];
unsigned charonchipBuf0_u[PROC_WIDTH_2];
unsigned charonchipBuf1_u[PROC_WIDTH_2];
unsigned charonchipBuf0_v[PROC_WIDTH_2];
unsigned charonchipBuf1_v[PROC_WIDTH_2];
unsigned charonchipBuf0_r[PROC_WIDTH];
unsigned charonchipBuf1_r[PROC_WIDTH];
unsigned charonchipBuf0_g[PROC_WIDTH];
unsigned charonchipBuf1_g[PROC_WIDTH];
unsigned charonchipBuf0_b[PROC_WIDTH];
unsigned charonchipBuf1_b[PROC_WIDTH];
//原始图像 YUV
extern unsigned charsrc_Y[IMGWIDTH*IMGHEIGHT];//720*576
extern unsigned charsrc_U[IMGWIDTH_2*IMGHEIGHT];
extern unsigned charsrc_V[IMGWIDTH_2*IMGHEIGHT];
//RGB图像
extern unsigned charsrc_R[PROC_WIDTH*PROC_HEIGHT];//352*288
extern unsigned charsrc_G[PROC_WIDTH*PROC_HEIGHT];
extern unsigned charsrc_B[PROC_WIDTH*PROC_HEIGHT]; void yuv2rgb888()
{ int i=,j=;
int y,u,v,r,g,b;
int v359,v183,u88,u454;
unsigned char *py,*pu,*pv,*pr,*pg,*pb;
// const int dif=0x8080;//
for ( i = ; i <; i ++ )
{
//copy一行到片上 144-432行,180列~180+352列
DAT_copy(src_Y+(i+)*IMGWIDTH+, onchipBuf0_y, PROC_WIDTH);
DAT_copy(src_U+(i+)*(IMGWIDTH>>)+, onchipBuf0_u,PROC_WIDTH_2);
DAT_copy(src_V+(i+)*(IMGWIDTH>>)+, onchipBuf0_v, PROC_WIDTH_2);
py=onchipBuf0_y;
pu=onchipBuf0_u;
pv=onchipBuf0_v;
pr=onchipBuf0_r;
pg=onchipBuf0_g;
pb=onchipBuf0_b;
#pragmaMUST_ITERATE(,, );
for(j=;j
{ y=(*py);//u-=128; v-=128;//y-=16;y不减16
u=(*pu)-;
v=(*pv)-;
v359=*v>>;
u88=*u>>;
v183=*v>>;
u454=*u>>;
r= y+v359; // r=y+1.402*v;
r&=~(r>>);
r = (r |((-r)>>) ) & 0xFF;
g= y-u88-v183; //g=y-0.34414*u-0.71414*v;
g&=~(g>>);
g = (g |((-g)>>) ) & 0xFF;
b= y+u454; //b=y+1.772*u;
b&=~(b>>);
b = (b |((-b)>>) ) & 0xFF;
*pr++=r;
*pg++=g;
*pb++=b;
//
py++; y=(*py); //y-=16; y减了16之后比原来灰度暗了16左右。∴不减。
r= y+v359; //r=y+1.402*v;
r&=~(r>>);
r = (r |((-r)>>) ) & 0xFF;
g= y-u88-v183; //g=y-0.34414*u-0.71414*v;
g&=~(g>>);
g = (g |((-g)>>) ) & 0xFF;
b= y+u454; // b=y+1.772*u;
b&=~(b>>);
b = (b |((-b)>>) ) & 0xFF;
*pr++=r;
*pg++=g;
*pb++=b;
py++; pu++;pv++;
}
//处理完后,copy给片外r、g、b[352*288]
DAT_copy(onchipBuf0_r,src_R+i*PROC_WIDTH, PROC_WIDTH);
DAT_copy(onchipBuf0_g,src_G+i*PROC_WIDTH, PROC_WIDTH);
DAT_copy(onchipBuf0_b,src_B+i*PROC_WIDTH, PROC_WIDTH);
}
}
r&=~(r>>);
r = (r | ((-r)>>) ) & 0xFF;
g &=~(g>>);
g = (g | ((-g)>>) ) & 0xFF;
b &=~(b>>);
b = (b | ((-b)>>) ) & 0xFF;
代替(1),能实现更好的软件流水。
if ( r>) r=; else if ( r< ) r=;
if ( g> ) g=; else if ( g< ) g=;
if ( b> ) b=; else if ( b< ) b=;
说明:如下图所示,后者(1)不能软件流水~(都在片内处理的情况下)t1=14634366 clocks ≈10*t0!!!


=> 优化后

【DM642学习笔记十】DSP优化记录的更多相关文章
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化 第一章:向量代数 1.向量计算的时候,使用XMV ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
随机推荐
- winform的datagridview控件滚动更新数据
范例源码下载地址:http://files.cnblogs.com/files/luoxiaozhao/PrintDemo.rar
- C#winfrom listview 设置显示图片
ListView控件有5种显示图片方式:LargeIcon(大图标),Detail(详细),SmallIcon(小图标),List(列表),Tile,常用前4种. 这里说一下设置方式:LargeIc ...
- PAT甲级——A1113 Integer Set Partition
Given a set of N (>) positive integers, you are supposed to partition them into two disjoint sets ...
- datagrid 的标题的内容不对应整齐
$(document).ready(function(){ var column = "[["+ "{'title':'工号','field':'grantorCode' ...
- webpack 简单笔记(一)
安装部分不介绍了 (一)第一个最简单的demo,单入口,单文件 目录结构: webapck.config.js中代码: 'use strict' const path = require('path' ...
- h5对接jssdk支付分并调用开启支付分页面
1.ws.config签名 调用ticket等获取ws.config的签名,下面会调用方法再调用方法时需要再次按照调用方法的签名 wx.config({ debug: true, // 开启调试模 ...
- win10下aria2和BaiduExporter的配置和安装
一.aria2的配置 下载 aria2下载地址: https://github.com/aria2/aria2/releases 链接:https://pan.baidu.com/s/1olJyZkX ...
- [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列
题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...
- DuiLib学习笔记2.写一个简单的程序
我们要独立出来自己创建一个项目,在我们自己的项目上加皮肤这才是初衷.我的新建项目名为:duilibTest 在duilib根目录下面有个 Duilib入门文档.doc 我们就按这个教程开始入门 首先新 ...
- ng-zorro-mobile中遇到的问题
一.Modal(弹出框)使用上的问题 在官方文档中,Modal是这样使用的: 这里需要注意的一点就是,看到上方代码中只用了Modal的全局方式,所以个人认为下面这段注入初始化的东西是没有用的便去掉: ...