AVPicture结构体分析

/**
 * Picture data structure.
 *
 * Up to four components can be stored into it, the last component is
 * alpha.
 */
typedef struct AVPicture {
    uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
    int linesize[AV_NUM_DATA_POINTERS];     ///< number of bytes per line
} AVPicture;

avcodec.h头文件中的定义。其中的AV_NUM_DATA_POINTERS在AVFrame的结构体定义中定义如下:

typedef struct AVFrame {
#define AV_NUM_DATA_POINTERS 8
……

那么AVPicture结构体中保存两个东西:

1 data指针数组(8个元素的数组)(数组的每一个元素都是一个uint8_t类型的指针);

2 linesize数组(8个元素的数组),(每一行的字节数);

分析这个结构体最重要的一点就是:AVFrame和AVPicture的关系,AVPicture结构体的成员就是AVFrame结构体的强两个成员,这样在一些函数中就可以直接通过AVPicture结构体指针去访问AVFrame结构体变量。可以进行类型转换。

时间: 2024-08-14 21:14:58

AVPicture结构体分析的相关文章

FFmpeg: AVPacket 结构体分析

AVPacket是FFmpeg中很重要的一个数据结构,它保存了解封装之后,解码之前的数据(注意:仍然是压缩后的数据)和关于这些数据的一些附加信息,如显示时间戳(pts).解码时间戳(dts).数据时长,所在媒体流的索引等.对于视频来说,AVPacket通常包含一个压缩的Frame,而音频(Audio)则有可能包含多个压缩的Frame.并且,一个Packet有可能是空的,不包含任何压缩数据,只含有side data(side data,容器提供的关于Packet的一些附加信息.例如,在编码结束的时

转 kobject结构体分析

转载自:http://blog.csdn.net/zhoujiaxq/article/details/7646050 未知作者,以及源地址 ,敬请谅解. kobject是组成设备device.驱动driver.总线bus.class的基本结构. 如果把前者看成基类,则后者均为它的派生产物. device.driver.bus.class构成了设备模型,而kobject内嵌于其中,将这些设备模型的部件组织起来,并形成了sysfs文件系统.kobject就是device.driver.bus.cla

82599网卡驱动rx descriptor结构体分析

82599 datasheet: 7.1.6  节    大概位于314页 对驱动的理解关键是对数据结构的理解. The 82599 posts receive packets into data buffers in system memory. The following controls are provided for the data buffers: ? The SRRCTL[n].BSIZEPACKET field defines the data buffer size. See

FFMPEG结构体分析:AVFrame(解码后的数据)

https://blog.csdn.net/jxcr1984/article/details/52766524 本文转自: http://blog.csdn.net/leixiaohua1020/article/details/14214577 /*   *雷霄骅   *[email protected]   *中国传媒大学/数字电视技术   */   /**   * Audio Video Frame.   * New fields can be added to the end of AVF

libevent源码分析1 ----evnet相关结构体分析

位于代码event-internal.h中. event_base类似事件的集合,你创建一个事件,必须将该事件指定一个集合. struct event_base { 50     const struct eventop *evsel; /*evsel和evbase就类比与类和对象之间的关系,evbase是evsel的 51     一个具体实现,指在这里使用的复用模型*/ 52     void *evbase; 53     /*这个event_base所关注的事件数目*/ 54     i

Linux中ifreq 结构体分析和使用

结构原型: struct ifreq{#define IFHWADDRLEN 6 union {  char ifrn_name[IFNAMSIZ];   } ifr_ifrn;  union {  struct sockaddr ifru_addr;  struct sockaddr ifru_dstaddr;  struct sockaddr ifru_broadaddr;  struct sockaddr ifru_netmask;  struct  sockaddr ifru_hwadd

Linux中ifreq 结构体分析和使用 及其在项目中的简单应用

[基础知识说明] 结构原型: /* * Interface request structure used for socket * ioctl's.  All interface ioctl's must have parameter * definitions which begin with ifr_name.  The * remainder may be interface specific. */ struct ifreq {#define IFHWADDRLEN 6 union { 

TCP、UDP、IP报头结构体分析

TCP数据段格式  TCP是一种可靠的.面向连接的字节流服务.源主机在传送数据前需要先和目标主机建立连接.然后,在此连接上,被编号的数据段按序收发.同时,要求对每个数据段进行确认,保证了可靠性.如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段. 下图为TCP头部结构: ●源.目标端口号字段:各占16比特.TCP协议通过使用"端口"来标识源端和目标端的应用进程.端口号可以使用0到65535之间的任何数字,但是这些端口号已经被分为公认端口.注册端口和动态/私有

cpp反汇编之类和结构体分析

废话不多说.. #include<stdio.h> class CNumber { public: CNumber() { m_nOne = 1; m_nTwo = 2; } int __stdcall GetNumberOne() { return m_nOne; } int GetNumberTwo() { return m_nTwo; }<pre name="code" class="plain">1: #include<stdi