当前位置: 首页 > news >正文

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中:

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中:

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中:

/*** 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)的数据的值。

http://www.lryc.cn/news/439122.html

相关文章:

  • 加密
  • Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)
  • 【C++】多态and多态原理
  • C# 实现二维数据数组导出到 Excel
  • nlohmann::json中有中文时调用dump转string抛出异常的问题
  • Unity中InputField一些属性的理解
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 从零开始搭建 PHP
  • 【数据结构】8——图3,十字链表,邻接多重表
  • eth-trunk 笔记
  • 通信工程学习:什么是接入网(AN)中的TF传送功能
  • 【JavaEE】IO基础知识及代码演示
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • [技术杂谈]暗影精灵8plus电竞版台式机安装和使用注意
  • 【加密算法基础——AES解密实践】
  • Spring01
  • gogps 利用广播星历解算卫星位置matlab函数satellite_orbits详细注解版
  • Oracle按照某一字段值排序并显示,相同的显示序号
  • 【Java基础】String详解
  • cmd命令
  • 《中文Python穿云箭量化平台二次开发技术11》股票基本信息获取分析及应用示例【前十大股东占股比例提取及分析】
  • OSINT技术情报精选·2024年9月第1周
  • 51单片机应用开发---二进制、十六进制与单片机寄存器之间的关系(跑马灯、流水灯实例)
  • 信息安全工程师(6)网络信息安全现状与问题
  • 亚数TrustAsia亮相第十四届智慧城市与智能经济博览会,入围“2024数据要素创新应用优秀成果”!
  • Linux基础开发环境(git的使用)
  • VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found
  • 春天(Spring Spring Boot)
  • Oracle EBS AP预付款行分配行剩余预付金额数据修复
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战7-ArkTS语法进阶