编解码所涉及到的函数

2019-01-29  本文已影响4人  未来的路就在那

1,void av_register_all(void);
注册了和编解码器有关的组件,还注册了复用器,解复用器,协议处理器.
2,int avformat_network_init(void);使用网络
3,int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
Open an input stream and read the header. The codecs are not opened.读取多媒体数据文件头,根据视音频流创建相应的AVStream。

4,int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
此函数需要讲解,实在不懂具体做了什么

编解码器相关的函数

5,int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, AVCodec **decoder_ret, int flags);
获取音视频对应的stream_index

6,AVCodec *avcodec_find_decoder(enum AVCodecID id);
根据AVCodecContext结构体的codec_id获取编解码器的结构体

7,int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
打开编解码器

解码相关的函数,AVPacket、AVFrame、SwsContext
8,AVPacket, AVFrame的初始化

9,int av_read_frame(AVFormatContext *s, AVPacket *pkt);
返回流的下一帧。此函数返回存储在文件中的内容,但不验证解码器是否有有效的帧。它将把文件中存储的内容拆分为帧,并为每个调用返回一个帧。它不会忽略有效帧之间的无效数据,从而为解码器提供最大可能的解码信息。

10,int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt);
没看懂源码的解释

11,struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param);

12,int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[]);

上一篇 下一篇

猜你喜欢

热点阅读