=================================================================
AVIOContext结构体和其相关的函数分析:
FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析
FFmpeg源码:read_packet_wrapper、fill_buffer函数分析
FFmpeg源码:ffurl_seek2、ffurl_seek、avio_size函数分析
=================================================================
一、avio_skip函数的声明
avio_skip函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的头文件libavformat/avio.h中:
cpp
/**
* Skip given number of bytes forward
* @return new position or AVERROR.
*/
int64_t avio_skip(AVIOContext *s, int64_t offset);
该函数作用是:让AVIOContext文件位置指针跳过offset个字节。
形参s:既是输入型参数也是输出型参数。指向一个AVIOContext(字节流上下文结构体)变量。关于AVIOContext结构体可以参考:《FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析》。
形参offset:输入型参数,表示需要跳过的字节数。
返回值:失败返回一个负数,成功返回跳过的字节数。
二、avio_skip函数的定义
avio_skip函数定义在libavformat/aviobuf.c中:
cpp
int64_t avio_skip(AVIOContext *s, int64_t offset)
{
return avio_seek(s, offset, SEEK_CUR);
}
可以看到avio_skip函数内部就是调用了avio_seek函数。关于avio_seek函数用法可以参考:《FFmpeg源码:avio_seek函数分析》