FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析

=================================================================

GetBitContext结构体和其相关的函数分析:

FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析

FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析

=================================================================

一、skip_bits函数

skip_bits函数定义在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的头文件libavcodec/get_bits.h中:

cpp 复制代码
static inline void skip_bits(GetBitContext *s, int n)
{
    OPEN_READER(re, s);
    LAST_SKIP_BITS(re, s, n);
    CLOSE_READER(re, s);
}

该函数在已使用init_get_bits函数进行初始化后,才能被调用。其作用是跳过s->buffer指向的缓冲区中的从第s->index位开始的音视频码流二进制数据,总共跳过n位(bit)。执行完skip_bits函数后,s->index的值会加n。

形参s:既是输入型参数也是输出型参数。指向已经被初始化的GetBitContext类型的变量。

形参n:输入型参数。需要跳过的位数。

返回值:无

二、skip_bits1函数

skip_bits1函数定义在FFmpeg源码的头文件libavcodec/get_bits.h中:

cpp 复制代码
static inline void skip_bits1(GetBitContext *s)
{
    skip_bits(s, 1);
}

该函数在已使用init_get_bits函数进行初始化后,才能被调用。其作用是跳过s->buffer指向的缓冲区中的第s->index位音视频码流二进制数据,总共跳过1位(bit)。执行完skip_bits1函数后,s->index的值会加1。

形参s:既是输入型参数也是输出型参数。指向已经被初始化的GetBitContext类型的变量。

返回值:无

三、show_bits函数

show_bits函数定义在FFmpeg源码的头文件libavcodec/get_bits.h中:

cpp 复制代码
/**
 * Show 1-25 bits.
 */
static inline unsigned int show_bits(GetBitContext *s, int n)
{
    register unsigned int tmp;
    OPEN_READER_NOSIZE(re, s);
    av_assert2(n>0 && n<=25);
    UPDATE_CACHE(re, s);
    tmp = SHOW_UBITS(re, s, n);
    return tmp;
}

该函数在已使用init_get_bits函数进行初始化后,才能被调用。其作用是展示s->buffer指向的缓冲区中的从第s->index位开始的音视频码流二进制数据,总共展示n位(bit)。执行show_bits函数后,s->index的值不会增加。

形参s:输入型参数。指向已经被初始化的GetBitContext类型的变量。

形参n:输入型参数。总共需要展示的位数。

返回值:被展示的n位(bit)的数据的值。

相关推荐
小鹿研究点东西4 小时前
AI直播系统怎么搭?
人工智能·ffmpeg·自动化·音视频·语音识别
Nightwish56 小时前
Oracle 数据库巡检检查清单
数据库·oracle·ffmpeg
luoyayun36119 小时前
Qt/QML + FFmpeg 实现多音频文件顺序拼接功能
qt·ffmpeg·音频拼接
wbcuc1 天前
ffmpeg工具把m4s合并为mp4 powershell脚本
ffmpeg·m4s
luoyayun3612 天前
Qt + FFmpeg 实战:实现音频格式转换功能
qt·ffmpeg·音频格式转换
都在酒里3 天前
【极致低延时】香橙派部署 MediaMTX 实现 WebRTC 推流,延时仅 500-800ms,比局域网 ffmpeg 拉流快近 10 倍!(附踩坑全记录)
linux·arm开发·ffmpeg·webrtc·orangepi·嵌入式软件
Empty-Filled3 天前
用 Kap + FFmpeg 把录屏转成小体积 GIF:产品操作演示图制作实践
ffmpeg·kap
矜辰所致4 天前
嵌入式语音开发应用基础说明
ffmpeg·ai 语音·嵌入式语音·语音播放·语音采样
luoyayun3614 天前
Qt + FFmpeg 实战:音频静音段检测
qt·ffmpeg·音视频·静音段检测
小鹿研究点东西6 天前
直播带货长视频AI自动剪辑开播:一场直播如何反复利用?
ffmpeg·自动化·音视频·语音识别