故事的主角是ff_read_packet,显然,如今ff_read_packet已经不是对外的接口了,是ffmpeg内部使用的一个接口。
想要理解ff_read_packet,必须从之前的接口av_read_packet的设计意图着手:
#if FF_API_READ_PACKET
int av_read_packet(AVFormatContext *s, AVPacket *pkt)
{
return ff_read_packet(s, pkt);
}
#endif
obsolete是废弃的,老式的,意思。
这个函数是用来从媒体文件中读取一个transport 包的,这里头参数AVFormatContext被认为是一个“媒体文件句柄”,所需要读取的包就是pkt,将会被这个函数填充。
因此应该传入的是包的地址。
返回值为0,表示成功,其他的AVERROR_XXXX都是错误.
#if FF_API_READ_PACKET
/**
* @deprecated use AVFMT_FLAG_NOFIL