参考:​​刻意练习FFmpeg系列:通过思维导图快速了解FFmpeg源码整体结构体 - 知乎​

 AVCodecContext 中包含一个 AVCodec* codec指针,具体是什么codec由用户指定,ffmpeg提供的codec 均是 AVCodec,AVCodec中规定了encode 和 decode 函数指针,所有的 codec 都要把自己的实现复制给这两个指针。

应用编码时只需要面向AVCodecContext的接口即可:

编码:

ff_alloc_packet2
ff_alloc_packet
avcodec_encode_audio2
avcodec_encode_video2
avcodec_encode_subtitle
avcodec_send_frame
avcodec_receive_packet

解码:

ff_decode_bsfs_init
ff_decode_get_packet
avcodec_send_packet
avcodec_receive_frame
avcodec_decode_video2
avcodec_decode_audio4

例如:

[多媒体] FFmpeg中AVCodecContext的工作原理_思维导图