<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; buaaxiao</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/buaaxiao/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 13:40:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Intel_IPP 的基本使用方法</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/intel_ipp/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/intel_ipp/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 06:48:21 +0000</pubDate>
		<dc:creator>buaaxiao</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[软件开发工具]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/intel_ipp/</guid>
		<description><![CDATA[  IPP - “Intel Integrated Performance Primitives” （Intel IPP ）是一套跨平台的软件函数库，他提供了广泛的多媒体功能：音频解码器（例如： H263 、 MPEG-4 ）、图像处理 (JPEG) 、信号处理、语音压缩（例如： G723 、 GSM 、 AMR ）和加密机制。“Intel IPP” 包含各种的函数，用于进行向量与图像处理、颜色转换、过滤、分屏、设置域值、变换，以及算术、统计、几何与图形运算。对于每个函数， “Intel IPP” 均支持多种数据类型和分布，同时保持了数据结构的最小化，它提供了丰富的选项供用户在设计与优化应用程序时选用，不必再去编写特定代码。Intel IPP 针对大量的 Intel Microprocessor （微处理器）进行优化： Intel Pentium 4 处理器，采用 Intel Centrino 移动运算技术的 Intel Pentium M 处理器组件， Intel Itanium 2 处理器、 Intel Xeon 处理器以及采用 Intel XScale 技术的 Intel PCA [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>IPP - “Intel Integrated Performance Primitives” （Intel IPP ）是一套跨平台的软件函数库，他提供了广泛的多媒体功能：音频解码器（例如： H263 、 MPEG-4 ）、图像处理 (JPEG) 、信号处理、语音压缩（例如： G723 、 GSM 、 AMR ）和加密机制。“Intel IPP” 包含各种的函数，用于进行向量与图像处理、颜色转换、过滤、分屏、设置域值、变换，以及算术、统计、几何与图形运算。对于每个函数， “Intel IPP” 均支持多种数据类型和分布，同时保持了数据结构的最小化，它提供了丰富的选项供用户在设计与优化应用程序时选用，不必再去编写特定代码。Intel IPP 针对大量的 Intel Microprocessor （微处理器）进行优化： Intel Pentium 4 处理器，采用 Intel Centrino 移动运算技术的 Intel Pentium M 处理器组件， Intel Itanium 2 处理器、 Intel Xeon 处理器以及采用 Intel XScale 技术的 Intel PCA 应用处理器。采用一套跨平台结构的通用 API ，使用者除了不需要担心平台兼容性的问题，更节省了开发成本以及研发时间，使用者可以轻轻松松移植原有应用程序。特性Intel IPP 功能优化多媒体函数· 不再需要以 Hard-Coding 方式针对特定的处理器进行优化· 提高应用程序的可靠性· 节省时间：内置调度器选择优化处理，并根据处理器自动调度特定的运行时代码· 在基于信号和图像的数据结构的特定约束方面，改善了应用程序的灵活性Intel IPP 节省开发时间“Intel Integrated Performance Primitives” 为软件应用程序提供了一个连接界面，它可以增强 Intel 最新微处理器的性能，同时还具有加速上市时间、降低开发成本等优势。您不必针对特定的处理器专门去编写代码，即可利用处理器的高级功能。许多使用 “Intel IPP” 的多媒体应用程序开发人员已经大大改善了他们的软件在 Intel 处理器上的性能。高度的灵活性给予您自由发挥的空间“Intel IPP” 函数库针对 Itanium 2 微处理器、 Intel Xeon 、 Pentium III 、 Pentium 4 处理器以及采用 Intel Centrino 移动计算技术的 Pentium M 处理器元件进行过优化。“Intel IPP” 还针对 Intel XScale 微处理器的 “Intel 个人客户端架构 ” （ Intel R PCA ）进行优化。这一个应用程序开发界面 (API) 可以跨越许多平台使用，使得多媒体应用程序开发人员能够轻松实现跨品台兼容，并有助于降低开发成本。取得性能增强效果Intel IPP 提供优化功能，让使用者在最短的时间内能得到最佳的效能， Intel IPP4.1 提供更丰富的优化效能，</p>
<p>关于Intel IPP的基本使用方法来源:网络 |时间:2010-04-15 | 点击: 341次</p>
<p>　　 IPP是个好东西，里面的函数精而全，希望大家好好利用。因为IPP目前很少中文资料，我们只能靠自己摸索。下面就简单说说IPP在VC2005下的基本使用方法。</p>
<p>　　假定你的IPP是安装在“D:\Intel\IPP”目录下。</p>
<p>　　首先是配置VC2005的环境。打开VC2005后，点击菜单栏的“工具--选项”，在左侧找到“项目和解决方案--VC++目录”，在“可执行文件”的目录中添加“D:\Intel\IPP\bin”，在“包含文件”的目录中添加“D:\Intel\IPP\include”，在“库文件”中添加“D:\Intel\IPP\stublib”和“D:\Intel\IPP\lib”，确定即可。</p>
<p>　　然后就是具体的在项目中使用IPP了。我们这次的项目主要是使用IPP的图像处理函数，这些函数的具体说明可以在“D:\Intel\IPP\doc\ippiman.pdf”这个文件中找到。函数的命名其实也是很有规律的，例如图像拷贝的函数，也就是手册里的“4.Image Data Exchange and Initialization Functions”中的Copy这一功能，对于不同的图像，应当使用不同的Copy函数，它的命名是这样的：首先是前缀“ippi”，所有图像处理的函数都以“ippi”开头；然后是功能名称“Copy”，连起来就是“ippiCopy”；之后连一个下划线和对应的模式“ippiCopy_”，那个“”替换成对应的颜色模式，例如“8u_C1R”，其中的“C1R”表示图像只有一个颜色通道，而“8u”表示每个象素的颜色的数据类型都是8位无符号数，也就是说这种图像是一个字节表示一个像素的。我们平时用的比较多的是“8u_C3R”，也就是三个颜色通道，每个通道的数据类型都是8位无符号数。但是显示的时候往往需要4个通道的，也就是除了RGB以外，还多了一个Alpha通道（透明度），这是因为我们的电脑一般都设成32位色深的。这时我们就需要把24位的图像转化成32位的，用“ippiCopy_8u_C3AC4R”这个函数就可以了。其中“8u_C3”就代表原始图像是8位无符号数据，3个通道，而AC4R就表示目标图像是带有Alpha通道的4通道图像。再看看函数的完整形式：</p>
<p>　　其返回值是IppStatus，这个只要看看后面的返回值说明就知道啦，其实是一个整型值来的，只不过IPP里为了方便为这些值都用宏替换赋了名称，这里不再赘述。再来看看函数的参数，其中pSrc和pDst都是指针来的，pSrc就是源图像的图像数据指针，而pDst则指向目标图像的数据。前面的Ipp*中的datatype需要替换成相应的数据类型代码，例如8位无符号数，就是“Ipp8u*”了，大家看看手册前面的Function Naming中的Data Types那一节就知道了。而srcStep和dstStep则是指行扫描宽度，也就是图像的一行占用多少字节，这个参数在许多图像处理的函数中都会用到。例如一个320*240的8u_C3R图像，它的行扫描宽度就是320*(3*8)/8=960了。需要注意的是，行扫描宽度必须是4的整数倍，也就是DWORD对齐的，对于不满足4的整数倍的，则应补零对齐。那么上面那条公式就不能适用所有图像了，不过可使用下面的代码来正确计算行扫描宽度：</p>
<p>　　(((width*channels*8)+31) &gt;&gt; 5) &lt;&lt; 2</p>
<p>　　其中width是图像的宽度,channels是通道数。</p>
<p>　　最后的roiSize其实是一个IppiSize结构体来的，定义如下：</p>
<p>　　typedef struct {</p>
<p>　　int width;</p>
<p>　　int height;</p>
<p>　　} IppiSize;</p>
<p>　　很明显就是图像的宽高了。这些结构体之类的基本类型定义都在手册的Function Naming中有详细说明。</p>
<p>　　至于要使用这个函数需要包含哪个头文件呢？我们看到Copy函数的说明里后面有一句“The function ippiCopy is declared in the ippi.h file.”很好，#include "ippi.h"就是了。但是如果这样就直接编译，链接器便会告诉你有ippiCopy_8u_C3AC4R这么一个无法解析的外部符号。这是因为我们还没把库文件链接进来呢。ippi.h对应的库文件就是ippi.lib了。点击菜单的“项目--xxx属性--配置属性--链接器--输入”，在右边的“附加依赖项”中填入ippi.lib即可。若有多个库要使用，则用回车隔开。另外，为了兼容VC6.0的程序，在“项目--xxx属性--配置属性--常规”，右边的“字符集”应选择“多字节字符集”。</p>
<p>　　而在“项目--xxx属性--配置属性--调试”中，“工作目录”应设为“D:\Intel\IPP\bin”，这样运行时程序才能调用IPP的动态链接库，或者把所需要的dll文件复制到你的Debug或Release文件夹下面也行。</p>
<p>　　好了，至此我们的程序便可以编译运行了。感觉IPP用起来还是比较简便的，说明文档里也讲的很全，就是例子比较少，大家多实践实践应该比较容易上手的了。还是那句，边学边用，印象深，效率高。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/intel_ipp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

