当前位置: 首页 > 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)的数据的值。

相关文章:

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

GetBitContext结构体和其相关的函数分析&#xff1a; FFmpeg中位操作相关的源码&#xff1a;GetBitContext结构体&#xff0c;init_get_bits函数、get_bits1函数和get_bits函数分析 FFmpeg源码&#xff1a;skip_bits、skip_bits1、show_bits函数分析 一、skip_bits函数 skip…...

加密

一、加密 加密运算需要两个输入&#xff1a;密钥和明文 解密运算也需要两个输入&#xff1a;密钥和密文 密文通常看起来都是晦涩难懂、毫无逻辑的&#xff0c;所以我们一般会通过传输或者存储密文来保护私密数据&#xff0c;当然&#xff0c;这建立在一个基础上&#xff0c;…...

Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)

作者&#xff1a;来自 Elastic Vincent du Sordet 我们将看到 Kibana Lens 编辑器中的神奇数学公式如何帮助突出显示高值。 简介 在上一篇博文《作为非设计师设计直观的 Kibana 仪表板》中&#xff0c;我们强调了创建直观仪表板的重要性。它展示了简单的更改&#xff08;分组…...

【C++】多态and多态原理

目录 一、多态的概念 二、多态的定义及实现 &#x1f31f;多态的构成条件 &#x1f31f;虚函数 &#x1f31f;虚函数的重写 &#x1f320;小贴士&#xff1a; &#x1f31f;C11 override 和 final &#x1f31f;重载、重写&#xff08;覆盖&#xff09;、重定义&#xf…...

C# 实现二维数据数组导出到 Excel

目录 功能需求 范例运行环境 Excel DCOM 配置 设计实现 组件库引入 ​编辑​ 方法设计 生成二维数据数组 核心方法实现 调用示例 总结 功能需求 将数据库查询出来的数据导出并生成 Excel 文件&#xff0c;是项目中经常使用的一项功能。本文将介绍通过数据集生成二维…...

nlohmann::json中有中文时调用dump转string抛出异常的问题

问题描述 Winodows下C开发想使用一个json库&#xff0c;使用的nlohmann::json&#xff0c;但是遇到json中使用中文时&#xff0c;转成string&#xff0c;会抛出异常。 nlohmann::json contentJson;contentJson["chinese"] "哈哈哈";std::string test con…...

Unity中InputField一些属性的理解

先看代码&#xff1a; using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…...

【webpack4系列】webpack构建速度和体积优化策略(五)

文章目录 速度分析&#xff1a;使用 speed-measure-webpack-plugin体积分析&#xff1a;使用webpack-bundle-analyzer使用高版本的 webpack 和 Node.js多进程/多实例构建资源并行解析可选方案使用 HappyPack 解析资源使用 thread-loader 解析资源 多进程并行压缩代码方法一&…...

从零开始搭建 PHP

&#x1f6e0;️ 从零开始搭建 PHP 环境&#xff1a;详细教程 PHP&#xff08;Hypertext Preprocessor&#xff09;是最流行的后端脚本语言之一&#xff0c;广泛用于构建动态网站和 Web 应用程序。在开始 PHP 开发之前&#xff0c;首先需要搭建 PHP 运行环境。无论你使用的是 …...

【数据结构】8——图3,十字链表,邻接多重表

数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表 文章目录 数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表&#xff08;Adjacency Multilist&#xff09;例子 前言 除了之前的邻接矩阵和邻接表 …...

eth-trunk 笔记

LACP&#xff1a;Link Aggregation Control protocol 链路聚合控制协议 将多条以太网物理链路捆绑在一起成为一条逻辑链路&#xff0c;从而实现增加链路带宽的目的。同时&#xff0c;这些捆绑在一起的链路通过相互间的动态备份&#xff0c;可以有效地提高链路的可靠性 一、配…...

通信工程学习:什么是接入网(AN)中的TF传送功能

接入网&#xff08;AN&#xff09;中的TF传送功能 在通信工程中&#xff0c;TF&#xff08;Transfer Function&#xff09;传送功能是指为接入网&#xff08;AN&#xff09;不同位置之间提供通道和传输介质&#xff0c;以实现数据的有效传输。以下是关于TF传送功能的详细解释&a…...

【JavaEE】IO基础知识及代码演示

目录 一、File 1.1 观察get系列特点差异 1.2 创建文件 1.3.1 delete()删除文件 1.3.2 deleteOnExit()删除文件 1.4 mkdir 与 mkdirs的区别 1.5 文件重命名 二、文件内容的读写----数据流 1.1 InputStream 1.1.1 使用 read() 读取文件 1.2 OutputStream 1.3 代码演示…...

安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 系统导航方式默认一般是按键的,如果要改成手势的话,我们来看看用户怎么修改的: 设置=>系统=>手势=>系统导航,在这里进行修改。我们来分析下这个流程,并且将其修改为…...

[技术杂谈]暗影精灵8plus电竞版台式机安装和使用注意

最近买回二手台式机准备做深度学习训练模型使用。由于个人不是十分有钱&#xff0c;因此下血本入手一台&#xff0c;不然深度学习玩不转。配置&#xff1a;i9-12900K / 64G d4 3733频率 / 1TSSD2TB机械 / RTX3090 24G显卡 旗舰版 机箱45L超大机箱。买回来后整体不错&#…...

【加密算法基础——AES解密实践】

AES 解密实践 AES 解密是对使用 AES 加密算法加密的数据进行恢复的过程。 常用的解密方式有三种&#xff1a; 在线解密工具&#xff1a;格式比较好控制&#xff0c;但是有些在线工具兼容性不好&#xff0c;有时候无法解出&#xff0c;不知道是自己的密文密钥没找对&#xff0…...

Spring01

spring框架 spring是轻量级的容器框架 spring framework 1、Spring核心学习内容 IOC、AOp, jdbcTemplate,声明式事务 2、IOC:控制反转&#xff0c;孚以管理部8号对象 3.AOP:切面编程4.JDBCTemplate:是spring提供一套访问数据库的技术,应用性强&#xff0c;相对好理解5.声明式…...

gogps 利用广播星历解算卫星位置matlab函数satellite_orbits详细注解版

主要注释了广播星历计算GPS BDS卫星位置的。 function [satp, satv] satellite_orbits(t, Eph, sat, sbas)% SYNTAX: % [satp, satv] satellite_orbits(t, Eph, sat, sbas); % % INPUT: % t clock-corrected GPS time % Eph ephemeris matrix % sat satellite…...

Oracle按照某一字段值排序并显示,相同的显示序号

Oracle按照某一字段值排序并显示,相同的显示序号 最近的工作遇到对于相同的字段,按照序号去显示值,并对相同的值进行排序 实验了半天,感觉满意的答案,分享给大家 第一种: ROW_NUMBER 语法: ROW_NUMBER() OVER (ORDER BY your_column) AS sequence_number 说明: 根据your_column…...

【Java基础】String详解

文章目录 String一、String 概述1、基本特性2、不可变性3、String、StringBuilder、StringBuffer 二、字符串 创建与内存分配1、字面量 / 双引号2、new关键字3、StringBuilder.toString()4、intern() 方法5、小结 三、字符串 拼接1、常量常量2、变量 拼接3、final变量 拼接4、拼…...

解锁TranslucentTB:4种高效实现Windows任务栏透明化的方法

解锁TranslucentTB&#xff1a;4种高效实现Windows任务栏透明化的方法 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 任务栏作为Windows…...

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署

Wan2.2-I2V-A14B开源大模型&#xff1a;支持ONNX导出与边缘设备轻量化部署 1. 开箱即用的文生视频解决方案 Wan2.2-I2V-A14B是一款强大的文生视频开源大模型&#xff0c;能够将文本描述直接转化为高质量视频内容。这个专为RTX 4090D 24GB显卡优化的私有部署镜像&#xff0c;让…...

Windows下OpenClaw安装指南:一键对接Phi-3-mini-128k-instruct模型

Windows下OpenClaw安装指南&#xff1a;一键对接Phi-3-mini-128k-instruct模型 1. 为什么选择OpenClawPhi-3-mini组合&#xff1f; 去年我在尝试自动化办公流程时&#xff0c;发现市面上的RPA工具要么太笨重&#xff0c;要么需要复杂的编程。直到遇到OpenClaw这个开源智能体框…...

大模型微调终极指南:从基础概念到实战技巧

前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的爆发式发展正在深刻改变人工智能的格局。然而&#xff0c;如何将这些通用模型适配到特定领域和任务&#xff0c;成为了开发者面临的核心挑战。本文将系统性地梳理大模型后训练的核心方法&#xff0c;从监督微调…...

瑞芯微Linux驱动工程师面试技术要点解析

1. 瑞芯微Linux驱动工程师面试全解析 作为一名在嵌入式Linux领域摸爬滚打多年的老司机&#xff0c;今天想和大家分享一份瑞芯微社招Linux驱动工程师的真实面经。不同于网上那些泛泛而谈的面试技巧&#xff0c;这份面经完全基于实际项目经验展开&#xff0c;可以说是"写什么…...

告别纸上谈兵:用STM32和FreeRTOS动手复现NCRE嵌入式考试里的经典案例

告别纸上谈兵&#xff1a;用STM32和FreeRTOS动手复现NCRE嵌入式考试里的经典案例 当你在NCRE三级嵌入式考试的题库里反复刷到"任务调度优先级"或"I2C时序配置"这类概念时&#xff0c;是否觉得这些知识点就像漂浮在空中的理论碎片&#xff1f;作为经历过这个…...

5个技巧让你高效畅玩Switch游戏:开源Ryujinx模拟器全攻略

5个技巧让你高效畅玩Switch游戏&#xff1a;开源Ryujinx模拟器全攻略 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款采用C#语言开发的开源Nintendo Switch模拟器&#x…...

02_Neo4j知识体系之Cypher核心语法与CRUD实战

02_Neo4j知识体系之Cypher查询语言深度解析 体系 查询语言层&#xff1a;Cypher核心语法、CRUD操作、高级查询、路径模式、聚合分析、条件过滤、Quantified Path Patterns&#xff08;QPP&#xff09;关联能力&#xff1a;与属性图模型、索引设计、执行计划分析、图应用建模和…...

d3d8to9:Direct3D 8到9的API转换解决方案及技术实现

d3d8to9&#xff1a;Direct3D 8到9的API转换解决方案及技术实现 【免费下载链接】d3d8to9 A D3D8 pseudo-driver which converts API calls and bytecode shaders to equivalent D3D9 ones. 项目地址: https://gitcode.com/gh_mirrors/d3/d3d8to9 诊断D3D8游戏兼容性问题…...

4大维度构建高可靠性加密货币自动交易系统

4大维度构建高可靠性加密货币自动交易系统 【免费下载链接】binance-trade-bot Automated cryptocurrency trading bot 项目地址: https://gitcode.com/gh_mirrors/bi/binance-trade-bot 一、价值定位&#xff1a;为什么专业交易者都在用自动化交易工具&#xff1f; 为…...