FFmpeg完美入门【9】-FFmpeg架构之其他重要数据结构的初始化

http://it6655.com/2012/09/ffmpeg-9-html

1 AVStream

AVStream结构保存与数据流相关的编解码器,数据段等信息。比较重要的有如下二个成员:

AVCodecContext *codec; /**< codec context */

void *priv_data;

其中codec指针保存的就是上节所述的encoder或decoder结构。priv_data指针保存的是和具体编解码流相关的数据,如下代码所示,在ASF的解码过程中,priv_data保存的就是ASFStream结构的数据。

AVStream *st; ASFStream *asf_st;

st->priv_data = asf_st;

2 AVInputStream/ AVOutputStream

根据输入和输出流的不同,前述的AVStream结构都是封装在AVInputStream和AVOutputStream结构中,在av_encode( )函数中使用。AVInputStream中还保存的有与时间有关的信息。AVOutputStream中还保存有与音视频同步等相关的信息。

3 AVPacket

AVPacket结构定义如下,其是用于保存读取的packet数据。

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef  struct AVPacket 
{ 
int64_t pts ;  ///< presentation time stamp in time_base units
int64_t dts ;  ///< decompression time stamp in time_base units 
uint8_t  *data ; 
int size ; 
int stream_index ; 
int flags ; 
int duration ;  ///< presentation duration in time_base units 
void  ( *destruct ) ( struct AVPacket  * ) ; 
void  *priv ; 
int64_t pos ;  ///< byte position in stream, -1 if unknown 
} AVPacket ;

在av_encode()函数中,调用AVInputFormat的 (*read_packet)(struct AVFormatContext *, AVPacket *pkt)接口,读取输入文件的一帧数据保存在当前输入AVFormatContext的AVPacket成员中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值