AVPicture中data与linesize关系

AVPicture中data与linesize关系

分类: FFMPEG2010-12-31 20:30 2481人阅读 评论(3) 收藏 举报

filter测试存储

AVPicture结构中data和linesize关系

AVPicture里面有data[4]和linesize[4]其中data是一个指向指针的指针(二级、二维指针),也就是指向视频数据缓冲区的首地址,而data[0]~data[3]是一级指针,可以用如下的图来表示:

data
-->xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
          
 ^                       
 ^                     
 ^
           
|               
         
 |                    
   |
       
data[0]            
  
data[1]            
 data[2]

比如说,当pix_fmt=PIX_FMT_YUV420P时,data中的数据是按照YUV的格式存储的,也就是:

data
-->YYYYYYYYYYYYYYYYYYYYYYYYUUUUUUUUUUUVVVVVVVVVVVV
            ^                                 
     
^                 
   
^
           
|                                      
  
|                    
  |
      
data[0]                             
  data[1]           
 data[2]

linesize是指对应于每一行的大小,为什么需要这个变量,是因为在YUV格式和RGB格式时,每行的大小不一定等于图像的宽度。

linesize = width + padding size(16+16)
for YUV
       linesize =
width*pixel_size  for RGB
padding is needed during Motion Estimation and
Motion Compensation for Optimizing MV serach and  P/B frame
reconstruction

for RGB only one channel is available
so RGB24 : data[0] = packet
rgbrgbrgbrgb......
          
linesize[0] =
width*3
data[1],data[2],data[3],linesize[1],linesize[2],linesize[2] have no
any means for RGB

测试如下:(原始的320×182视频)
如果pix_fmt=PIX_FMT_RGBA32
linesize 的只分别为:1280 
0    0     0

如果pix_fmt=PIX_FMT_RGB24
linesize 的只分别为:960   0   
0     0

如果pix_fmt=PIX_FMT_YUV420P
linesize 的只分别为:352   176 
176   0

参考:http://bbs.chinavideo.org/viewthread.php?tid=119&extra=page%3D1%26filter%3Ddigest&page=1

时间: 2024-11-10 09:39:48

AVPicture中data与linesize关系的相关文章

OSGI中的service依赖关系管理

众所周知,对于高动态高可扩展的应用,OSGI是一个非常好的平台.但是,也因此增加了复杂性,开发中对service的依赖变得复杂.这也是service的关系管理成为OSGI中一个非常重要的部分,我们来看看OSGI中service依赖关系管理的方式.篇幅原因,只关注发展历程,不具体介绍每个方式的详细实现细节. 概括的说,目前在OSGI中主要有以下几种service依赖关系管理的方法: 1. Service listener 2. Service binder 3. Dependency Manage

在SQL Server中查看对象依赖关系

原文 在SQL Server中查看对象依赖关系 Viewing object dependencies in SQL Server Deleting or changing objects may affect other database objects like views or procedures that depends on them and in certain instances, can “break” the depending object. An example can

【转】UML中的几种关系详细解析

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务.一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法). 3) 类的属性即类的数据职责,类的操作即类的行为职责 一.依赖关系(Dependence) 依

UML中的6大关系详细说明

UML中的6大关系详细说明: 1.关联关系: 含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法:通常含有"知道","了解"的含义 体现:在C#中,关联关系是通过成员变量来实现的: 方向:双向或单向: 图示:实线 + 箭头:箭头指向被关联的类:2.依赖关系: 含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义:依赖关系仅仅描述了类与类之间的一种使用与被使用的关系: 体现:在C#中体现为局部变量.方法/函数的参数或者是对静态方法的调用: 方向:

Hibernate中的一对一映射关系

Hibernate中的一对一映射关系有两种实现方法(一对一关系:例如一个department只能有一个manager) I使用外键的方式 步骤:1在一对一关联的持久化类中互相添加对方对象属性,   例如在department中添加private manager manager属性:   department代码如下: package com.atguigu.hibernate.one2one.foreign; public class Department { private Integer d

jQuery 中 data 方法的实现原理

前言:jQuery 作为前端使用最多最广泛的 JS 库,其源码每个 JSer 都应该研究一下.早就打算看却一直被各种事拖着,上次某公司面试时被问到 jQuery 中 data 方法是如何实现的,结果答不上来懊悔不已.现在终于下决心开始看 jQuery 的源码,就从 data 方法开始.本人也是前端新手,如果文章中有理解不当或者错误之处,欢迎留言指出,3Q~ jQuery 版本为 1.8.2 data() 的使用方法 // 向一个 dom 元素绑定数据 $("#header").data

angularjs 中的scope继承关系——(2)

转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include 假设在我们的 controller 中, $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11}; HTML 为: <script type="text/ng-template" id="/tpl1.html&quo

jquery中data函数的用法示例

jquery中data() 方法向被选元素附加数据,或者从被选元素获取数据.这使我们通过HTML自定义属性,操作数据,显得非常方便.通常我们也会通过给html自定义属性这样的做法,来存储和操作数据.在jquery中也给我们 提供了data(name,value)这样的方法,来非常方便的实现.有了data()这个方法,你就可以很方便的在一个html标签中添加data-*这样的自定义属性.接下来,就data()方法简单的做下了解. 以下是摘自w3school中对data用法的说明: data方法从元

使用真机测试时,在eclipse中data文件夹打不开

我们知道,在真机测试的时候,在某个应用程序中产生的db文件存在于data/data/应用的包名/中,这是我们很可能需要去该文件夹去查看一下,但是这个文件夹很可能打不开.以下给出解决办法: 1)使用RE文件管理器把data文件夹的权限更改为可读写,问题就解决了 2)使用模拟器 使用真机测试时,在eclipse中data文件夹打不开