Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2116842
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2016-05-10 16:19:15

1. 
av_read_frame返回后可以保证读到的是一个完整帧
av_read_frame(is->pFormatCtx, is->packet);
  1. int av_read_frame(AVFormatContext *s, AVPacket *pkt)
  2. {
  3.     1. 先判断AVPacketList中是否有数据,若有数据直接从AVPacketList中返回一帧
  4.     2. 若AVPacketList中没有数据,:
  5.     ret = read_frame_internal(s, pkt); ;;读取一帧
  6.     add_to_pktbuf(); ;;将packet加入s->raw_packet_buffer中
  7.     av_packet_unref();
  8. }

av_read_frame
-->read_frame_internal
  1. static int read_frame_internal(AVFormatContext *s, AVPacket *pkt)
  2. {
  3.     av_init_packet(pkt); //pkt中的变量设为0,buf设为NULL
  4.     ff_read_packet();
  5. }


av_read_frame
-->read_frame_internal
  --> ff_read_packet
ff_read_packet()
{
     1. 检查raw_packet_buffer中是否有buf,有的话直接probe_codec然后返回
    2. 若没有buf,则:
          av_init_packet(pkt);
         ret = s->iformat->read_packet(s, pkt);             //调用具体container的read_packet
         pts dts 的有关操作
         force_codec_ids(s, st);   
         add_to_pktbuf  
         probe_codec     
}


下面就进入到具体的container的read函数中
av_read_frame
-->read_frame_internal
  --> ff_read_packet
    --> mov_read_packet
mov_read_packet()
{
}
阅读(4234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~