x264 参考帧管理原理:reference_build_list 函数

reference_build_list函数

原理

  1. 功能

构建参考列表,它根据当前编码帧的POC(Picture Order Count)来决定哪些帧可以作为参考帧。

  1. 内部执行流程
  • 声明了一个布尔变量b_ok,用于在排序循环中作为标志;
  • 初始化参考帧列表0和1的计数器i_fref[0]、i_fref[1];
  • 如果当前编码的切片类型是I帧,则不需要构建参考帧列表,直接返回;
  • for循环遍历参考队列每个参考帧,根据它们的POC与当前帧的POC比较,将它们分配到参考帧列表0或1中;
    • 如果参考帧标记为损坏b_corrupt,则跳过该帧;
    • 如果参考帧的POC小于当前帧的POC,则将参考帧reference[i]添加到参考帧列表fref[0]中;
    • 如果参考帧的POC大于当前帧的POC,则将参考帧reference[i]添加到参考帧列表fref[1]中;
  • 如果需要从参考帧列表的末尾移除帧(由内存管理控制器mmco指定);
    • do-while 循环使用冒泡排序算法对参考帧列表0中的帧按帧编号进行排序;
      • for 循环i_ref[0]每一帧,如果当前参考帧帧序i_frame小于下一参考帧的帧序i_frame,则调用XCHG函数交换参

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

独孤思维:赚不到的人,身边也都是不赚钱的垃圾

01 如果你身边的人,都被你吐槽垃圾,那么你一定垃圾。 因为你身处在垃圾之中,而你不愿意改变,那么你肯定垃圾。 如果你做副业,一直没赚到钱,也一直在埋怨项目不行。 那么一定是你这个人不行。 无论换多…

android源码下载编译模拟器运行

安卓aosp源码下载,编译,模拟器运行 virtualbox7 安装ubuntu20.04,ubuntu22.04 编译android aosp 源码可以,但是模拟器跑不了,哪个版本都是要么黑屏,要么整个vbox虚拟机闪退。解决方案使用vmware17 ##拯救…

性能优化相关:nginx负载均衡中的动静分离

结合上次博客:正向代理和反向代理 什么是动静分离: 静态资源:包含css文件、图片、js文件、配置文件等 动态资源:脚本处理等 更改/usr/local/nginx/conf下的nginx.conf文件,设置动静目录,添加如下 locatio…

Ubuntu——配置安装服务

目录 一、安装JDK 二、安装IntelliJ IDEA 三、安装Docker-ce 1.环境清理以免有遗留组件 2.安装Docker 3.测试 #检查版本 sudo cat /etc/issue 一、安装JDK Ubuntu提供了一个名为apt的软件包管理工具,通过它可以使用命令行的方式安装、更新和删除软件包。 使用…

Day03 左侧菜单数据绑定

一.左侧菜单数据绑定 1.首先,进行项目结构塔建。按照Prism 框架约定,要使用自动查找绑定功能。即View (视图)中自动查找并绑定到对应的ViewModel(视图模型,处理视图业务逻辑)。就需要在项目中按…

大数据在金融行业的深度应用与未来展望

一、引言 随着信息技术的迅猛发展,大数据已经成为推动金融行业创新的重要力量。从精准营销、个性化服务到风险管理和产品创新,大数据的应用正在不断重塑金融行业的格局。本文将深入探讨大数据在金融行业的深度应用,分析其特征特点、解决方案以及面临的挑战与机遇,并展望其…

【C++】6-7 你好,输出的格式控制(三角形)

6-7 你好,输出的格式控制(三角形) 分数 10 全屏浏览 切换布局 作者 向训文 单位 惠州学院 完善程序:输入行数rows(大于0),第一行输出rows个*,接下来每行的*个数减1,直…

LeetCode刷题之HOT100之搜索旋转排序数组

2024/6/2 雨一直下,一个上午都在床上趴着看完了《百年孤独》,撑伞去吃了个饭,又回到了宿舍。打开许久未开的老电脑,准备做题了。《百年孤独》讲了什么,想表达什么,想给读者留下什么,我不知道&am…

列表的可变性

列表的可变性 Python里的内置数据类型, 大致上可分为可变与不可变两种。 可变(mutable):列表、字典、集合不可变(immutable):整数、浮点数、字符串、字节串、元组 列表是可变的,当…

无法拒绝!GPT-4o 完美适配安卓手机,畅享丝滑体验

无法拒绝!GPT-4o 完美适配安卓手机,畅享丝滑体验 前言 人工智能的飞速发展,给我们的生活带来了前所未有的便利。作为AI技术的代表之一,GPT凭借其强大的自然语言处理能力,已经成为许多用户日常生活和工作中的得力助手…

超大功率光伏并网逆变器学习(三相) 一

1.超大功率用的IGBT开关频率通常很低,比如6KHz 2.线电压和相电压的关系 相电压 A AB线电压-CA线电压 相电压 B BC线电压-AB线电压 相电压 C CA线电压-BC线电压 3.坐标变换 ABC三相信号通过Clark坐标变换得到αβ两相静止信号,其中α与A相重合,β与α…

基于数据驱动的自适应性小波构造(MATLAB)

以地震领域为例,时频变换能够刻画地震资料的时频特征,进而辅助地质构造解释。在各种时频分析工具中,连续小波变换CWT是描述地震资料时频特征的常用工具。选择合适的基小波是CWT的关键问题。对于不同类型的信号前人有针对性的设计了许多基小波…

TCP/IP(网络编程)

一、网络每一层的作用 *网络接口层和物理层的作用:屏蔽硬件的差异,通过底层的驱动,会提供统一的接口,供网络层使用 *网络层的作用:实现端到端的传输 *传输层:数据应该交给哪一个任…

ajax框架在Web前端的应用与挑战

ajax框架在Web前端的应用与挑战 在Web开发的广阔领域中,ajax框架以其独特的魅力,吸引了众多前端开发者的目光。然而,它并非完美无缺,也存在一些应用上的挑战。本文将深入探讨ajax框架在Web前端的应用及其所面临的挑战&#xff0c…

排序算法教程(个人总结版)

1. 引言 1.1 什么是排序算法 排序算法是一类算法,用于将一组数据按特定顺序排列。常见的排序顺序有升序和降序。 1.2 排序算法的应用领域 排序算法在许多领域有广泛应用,如数据分析、数据库管理、信息检索、计算机图形学等。排序操作是计算机科学中基…

移植2D物理引擎到LVGL

背景 在LVGL交流群,有网友提出想要移植物理引擎到LVGL,遂有了本文。阅读本文需要对IDF和LVGL有所了解 过程 2D物理引擎有很多,经过一番调研选择了Chipmunk2D 下载源码 此处省略一万字,Github访问可能会有些慢 添加文件 将…

针对软件性能问题,如何定位解决?解决思路总结

针对软件性能问题,我们可以按照以下步骤来定位和解决: 一、性能问题定位 响应时间分析: 响应时间是用户感知软件性能的重要指标之一。通过对系统的响应时间进行分析,可以定位到导致响应时间延长的关键路径。这些关键路径可能是数据…

前端3剑客(第1篇)-初识HTML

100编程书屋_孔夫子旧书网 当今主流的技术中,可以分为前端和后端两个门类。 前端:简单的理解就是和用户打交道 后端:主要用于组织数据 而前端就Web开发方向来说, 分为三门语言, HTML、CSS、JavaScript 语言作用HT…

【Mysql语句优化---Explain使用以及相关属性含义】

Explain使用以及相关属性含义 一.explain中的列 接下来我们将展示 explain 中每个列的信息。 1. id列 id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。 id列越大执行优先级越高,id相…

罗德里格斯旋转公式证明-简洁

罗德里格斯旋转公式证明。 设旋转向量为 ( n , θ ) (n, \theta) (n,θ),设其对应的旋转矩阵为 R R R, 如何证明? R c o s θ I n ∧ s i n θ ( 1 − c o s θ ) n n T Rcos\theta I n^{\wedge}sin\theta(1-cos\theta)nn^{T} RcosθI…