Image Stride(内存图像行跨度)
2016-07-11 14:24
751 查看
当视频图像存储在内存时,图像的每一行末尾也许包含一些扩展的内容,这些扩展的内容只影响图像如何存储在内存中,但是不影响图像如何显示出来;Stride 就是这些扩展内容的名称,Stride 也被称作 Pitch,如果图像的每一行像素末尾拥有扩展内容,Stride 的值一定大于图像的宽度值,就像下图所示:
两个缓冲区包含同样大小(宽度和高度)的视频帧,却不一定拥有同样的 Stride 值,如果处理一个视频帧,必须在计算的时候把 Stride 考虑进去;
另外,一张图像在内存中有两种不同的存储序列(arranged),对于一个从上而下存储(Top-Down) 的图像,最顶行的像素保存在内存中最开头的部分,对于一张从下而上存储(Bottom-Up)的图像,最后一行的像素保存在内存中最开头的部分,下面图示展示了这两种情况:
一张从下而上的图像拥有一个负的 Stride 值,因为 Stride 被定义为[从一行像素移动到下一行像素时需要跨过多少个像素],仅相对于被显示出来的图像而言;而 YUV 图像永远都是从上而下表示的,以及任何包含在 Direct3D Surface 中的图像必须是从上而下,RGB 图像保存在系统内存时通常是从下而上;尤其是视频变换,特别需要处理不同
Stride 值的图像,因为输入缓冲也许与输出缓冲不匹配,举个例子,假设你想要将源图像转换并且将结果写入到目标图像,假设两个图像拥有相同的宽度和高度,但是其像素格式与 Stride 值也许不同;
两个缓冲区包含同样大小(宽度和高度)的视频帧,却不一定拥有同样的 Stride 值,如果处理一个视频帧,必须在计算的时候把 Stride 考虑进去;
另外,一张图像在内存中有两种不同的存储序列(arranged),对于一个从上而下存储(Top-Down) 的图像,最顶行的像素保存在内存中最开头的部分,对于一张从下而上存储(Bottom-Up)的图像,最后一行的像素保存在内存中最开头的部分,下面图示展示了这两种情况:
一张从下而上的图像拥有一个负的 Stride 值,因为 Stride 被定义为[从一行像素移动到下一行像素时需要跨过多少个像素],仅相对于被显示出来的图像而言;而 YUV 图像永远都是从上而下表示的,以及任何包含在 Direct3D Surface 中的图像必须是从上而下,RGB 图像保存在系统内存时通常是从下而上;尤其是视频变换,特别需要处理不同
Stride 值的图像,因为输入缓冲也许与输出缓冲不匹配,举个例子,假设你想要将源图像转换并且将结果写入到目标图像,假设两个图像拥有相同的宽度和高度,但是其像素格式与 Stride 值也许不同;
相关文章推荐
- HTML5音频
- IOS对于多线程NSOperation方式的一些发现.
- Java并发编程:阻塞队列
- How to handle big repositories with git
- opencv-计算原始LBP特征
- java多态的实现(一)
- {小结}2016.07.11【初中部 NOIP提高组 】模拟赛C
- Virtual Box下配置Host-Only联网方式详解
- 转: 环信联合创始人:App主流反垃圾服务难点和技术实现全解析
- 在C#中使用Google Protocol Buffers
- 带有一键清空功能的EditText
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- Java上传文件common-fileupload
- HTML5视频
- UIStack View如何让你的开发更简单(iOS 9和Xcode 7)
- springmvc
- 显示服务器上传的文件
- Nexus 7 搞机教程
- 转载 foreach比递归效率低
- CentOS 6.3 中安装VirtualBOX增强工具失败:Building the main Guest Additions module[FAILED]