以ffmpeg 3.4 中的ffplay 来举例
全局初始化
av_register_all
avformat_network_init
AVFORMAT 设置过程
avformat_alloc_context
avformat_open_input 打开流主要是demuxing 解复用
avformat_find_stream_info 获取AVFORMAT中codec等信息
codec 设置过程
avcodec_alloc_context3
avcodec_find_decoder 获取解码器设置
avcodec_open2 初始化AVCodecContext从而能够使用解码器解码
av_init_packet 初始化avpacket
av_read_frame 读取avpacket
av_frame_alloc 分配avframe
avcodec_send_packet 向decoder发送avpacket
avcodec_receive_frame 从decoder获取avframe
以前版本ffmpeg 通过 avcodec_decode_video2来将avpacket解码成avframe
现在版本的ffmpeg 通过send receive来将avpacket avframe , 虽然新的ffmpeg 3.4还保留这个接口,但是其内部实现还是send receive 机制的