从 HEVC 参考软件获取一些信息

2023-12-08

我是 HEVC 新手,现在正在了解参考软件(现在正在研究帧内预测)。

编码后我需要获取如下信息。

  • 给定 CTU 的 CU 结构
  • 对于计算期间的每个 CU,它是信息(例如 QP 值、选择的亮度模式、选择的色度模式、CU 是否处于 CTU 分割决策的最终 CU 结构中等)

我知道 CTU 的决定是在以下时间做出的:m_pcCuEncoder->compressCtu( pCtu )被叫进TEncSlice.cpp。但我到底可以从哪里获得这些具体信息呢?有人可以帮我弄这个吗?

附注我也在学习C++(我有Java背景)。


编辑:这篇文章是编码器端的解决方案。然而,解码器端的解决方案远没有那么复杂。

如果您不熟悉代码,那么在编码器中获取 CTU 信息(分区等)有点棘手。但我会尽力帮助你。 我要告诉你的一切都是基于 JEM 代码而不是 HM,但我很确定你也可以将它们应用到 HM。

您可能已经注意到,每个 CTU 的压缩/编码有两个完全独立的阶段:

  1. RDO 阶段:首先是率失真优化循环来“做出决定”。在此阶段,实际上测试所有可能的参数组合(例如不同的分区、帧内模式、滤波器等)。在此阶段结束时,RDO 确定最佳组合并将其传递到第二阶段。
  2. 编码阶段:这里编码器执行实际的最终编码步骤。这包括根据 RDO 阶段确定的参数将所有 bin 写入比特流。

在 CTU 级别,这两个阶段由m_pcCuEncoder->compressCtu( pCtu )m_pcCuEncoder->encodeCtu( pCtu )函数分别在compressSlice()的功能TEncSlice.cpp file.

鉴于上述信息,您必须在以下位置查找您要查找的内容:第二阶段而不是第一阶段(你可能已经知道这些事情,但我怀疑你可能正在看第一阶段)。

所以,现在这是我获取信息的建议。这不是最好的方法,但在这里更容易解释。 您首先在 HM 代码中转到这一点:

compressGOP() -> encodeSlice() -> encodeCtu() -> xEncodeCU()

然后找到预测模式(帧内/帧间)编码的行:

m_pcEntropyCoder->encodePredMode()

此时,您可以访问pcCU对象,其中包含在第一阶段做出的所有最终决策,包括您要查找的信息。在代码的这一点上,您处理的是单个 CU,而不是整个 CTU。但如果您想要整个 CTU 的信息,您可以返回

compressGOP() -> encodeSlice() -> encodeCtu()

并找到该行xEncodeCU()函数第一次被调用。在那里,您将可以访问pCtu object.

提醒: each TComDataCU目的 (pcCU如果您处于 CU 级别,或者pCtu如果您处于 CTU 级别)的规模WxH被分割为NumPartition=(W/4)x(H/4)大小分区4x4。每个分区都可以通过索引访问(uiAbsPartIdx) 表示其 Z 扫描顺序。例如,uiAbsPartIdx对于分区<x=8,y=0> is 4.

现在,您执行以下步骤:

  1. 获取分区数(NumPartition)在你的pCtu通过致电pCtu->getTotalNumPart().

  2. 循环所有NumPartition分区并调用函数pCtu->getWidth(idx), pCtu->getHeight(idx), pCtu->getCUPelX(idx) and pCtu->getCUPelY(), where idx是你的循环迭代器。这些函数返回每个的以下信息CU恰逢4x4分区于idx:宽度、高度、X 位置、Y 位置。 [两个位置都是相对于像素的<0,0>框架的]

  3. 上述信息足以推导当前的CTU分区pCtu!所以最后一步是编写一段代码来做到这一点。

这是如何在第二阶段(即编码阶段)提取 CTU 分区信息的示例。但是,您可以调用一些适当的函数来获取第二个问题中的其他信息。例如,要获取选定的亮度帧内模式,您可以调用pCtu->getIntraDir(CHANNEL_TYPE_LUMA, idx), 代替getWidth()/getHeight()功能。或者pCtu->getQP(CHANNEL_TYPE_LUMA, idx)得到QP值。

您始终可以在以下位置找到提供有用信息的函数列表:pCtu水平,在TComDataCU class (TComDataCU.cpp).

我希望这可以帮助你。如果没有,请告诉我!

祝你好运,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 HEVC 参考软件获取一些信息 的相关文章

  • 不支持S/W HEVC(H265)解码的有效解决方案

    最近从WIN7更换为WIN10后 xff0c PotPlayer播放器加速出现不同步情况 xff0c 网上查找了很多办法 xff0c 最终奏效 失败方法一 xff1a FFmpeg64 dll 下载FFmpeg64 dll xff08 ht
  • Video Evaluation by Python

    Here is the code to calculate for PSNR and SSIM of YUV My code has its advantage that it can process the problem by batc
  • IMAGE INPAINTING

    IMAGE INPAINTING We need get good Int i j I t n i j Here using Laplacian Operator http www cnblogs com xfzhang archive 2
  • Motion Detection

    Frame Difference Method FDM Background Subtraction Method BSM B is background image Adaptive Background Substraction Met
  • 电赛猜题?我觉得没用,还不如做好这些!

    01 前言 大家好 我是张巧龙 转眼又到22年电赛 这个公众号上有很多同学可能都参加过电赛 有毕业的已经工作的 也有没毕业的今年要参加 我第一次接触电赛是在大一暑期 从参加电赛到指导学生参加电赛 转眼快十年了 20年省赛有6个省一等奖 21
  • windows使用小技巧 ━━ Windows 10 HEVC扩展要收费怎么办?教你怎么免费下载HEVC扩展

    现在最新的方法 Download K Lite Codec Pack Full 可以无视下面的内容 平时我一般都使用potplayer打开视频 但在整理视频的时候mov格式的文件总是不能显示缩略图 如果用windows10自带图片查看器打开
  • H264 NAL 单元前缀

    我需要对 H264 NAL 单位分隔符前缀进行一些澄清 00 00 00 01 and 00 00 01 我正在使用 Intel Media SDK 生成 H264 并将其打包到 RTP 中 问题是到目前为止我只是在寻找00 00 00 0
  • 为什么从 avi 容器解码帧并将其编码为 h264/mp​​4 不起作用?

    我开始使用 ffmpeg 我想将 avi 文件转换为 mp4 h264 文件 我读过很多帖子 包括this 但我找不到任何好的示例如何将帧保存到 mp4 文件 下面的代码是简化的代码 它从 avi 文件中解码帧并将其编码为 H264 mp
  • h264 idea 比特流是如何组织的? / 标头起始码

    我试图通过使用十六进制编辑器查看视频文件的比特流来了解一些有关 h264 的知识 我发现here视频对象平面 0x000001b6 和 i 帧 0x000001b600 的起始码 但我在视频文件中找不到很多这样的字节 大多数情况下 这些起始
  • 从 HEVC 参考软件获取一些信息

    我是 HEVC 新手 现在正在了解参考软件 现在正在研究帧内预测 编码后我需要获取如下信息 给定 CTU 的 CU 结构 对于计算期间的每个 CU 它是信息 例如 QP 值 选择的亮度模式 选择的色度模式 CU 是否处于 CTU 分割决策的
  • ffmpeg 忽略每个帧速率选项,将结果锁定为 25 fps

    ffmpeg 版本 3 4 8 0ubuntu0 2 版权所有 c 2000 2020 FFmpeg 开发人员 无论我做什么 ffmpeg 都会忽略所有内容并将其编码为 25fps framerate 60什么也没做 t 60什么也没做 r
  • 将 16 位灰度 PNG 转换为 HEVC/x265

    我想将 12 位图像信号转换为 HEVC 以进行有效压缩 因为我需要能够重建原始 12 位信号 所以压缩需要是无损可逆的 目前我的数据为 16 位 PNG 文件 我的第一次尝试是使用 ffmpeg ffmpeg y framerate 1
  • Android 上的视频录制到循环缓冲区

    我正在寻找最好的方法 如果有的话 将连续视频捕获到 SD 卡上的循环缓冲区 从而允许用户在事件发生后捕获事件 标准视频录制API允许您直接写入文件 当达到限制 由用户设置 或SD卡的容量 时 您必须停止并重新启动录制 这将创建一个长达 2
  • 在 OSX 上最佳使用 hevc_videotoolbox 和 ffmpeg

    我正在使用 ffmpeg 4 3 1 将视频从 h264 转换为 h265 最初我很兴奋地发现我可以使用 Mac 的 GPU 并使用 hevc videotoolbox 标志来加速转换 我的 Mac 硬件是第 10 代 Intel i5 和
  • iPhone HTTP Streaming .m3u8 和 .ts 文件 - 如何使用 ffmpeg 创建

    我正在尝试使用 ffmpeg 获取经过苹果验证的 http 媒体流 但出现错误 以下是一些错误示例 警告 播放列表内容类型为 application x mpegurl 但应该 是 application vnd apple mpegurl
  • 适用于 HEVC 的 Android MediaCodec

    我正在研究使用 android MediaCodec 类来解码 HEVC 有这样做的项目示例吗 目前我使用以下配置解码器 AMEDIAFORMAT KEY MIME video hevc AMEDIAFORMAT KEY MAX HEIGH
  • 如何将 YUV420p 转换成 RGB 用于 ffmpeg 编码器?

    我想使用 C 代码从位图图像制作 avi 视频文件 我写了以下代码 Get RGB array data from bmp file uint8 t rgb24Data new uint8 t 3 imgWidth imgHeight hB
  • android jcodec:如何设置帧速率

    我有一组图像 我想生成幻灯片作为视频文件 我正在使用jcodec 当我对帧进行编码时 是否可以指定该帧必须显示一定的时间 例如 1 秒 是的 可以指定帧的时间 它的解释是https github com jcodec jcodec issu
  • 让 Safari 在 HTML 5 视频标签中首选 HEVC

    我目前正在研究向视频添加 HEVC 支持的可行性 但在使用 Safari 时遇到了问题 这是示例来源
  • 有没有办法在转码之前使用 ffmpeg 确定文件的编码?

    我计划使用 ffmpeg 确保上传到我网站的所有视频文件都编码为 mp4 h264 我不想自动处理每个文件 而是希望通过仅处理那些还不是 mp4 h264 的文件来最小化处理开销 有没有一种简单的方法可以使用 ffmpeg 或其他命令行实用

随机推荐

  • 检测屏幕分辨率来加载替代 CSS 是个好主意吗?

    我与一位平面设计师合作 他一直希望制作大于我推荐的 960 像素的网站 我可以使用液体布局做一定量的工作 但我真的很喜欢能够加载不同的 CSS 以实现更大的分辨率 我用谷歌搜索并找到了下面的链接 但我担心我没有听到更多关于此的信息 这是一个
  • NSDate 一天的开始和一天的结束

    NSDate beginningOfDay NSDate date NSCalendar cal NSCalendar currentCalendar NSDateComponents components cal components N
  • 如何在android中使用Gson库解析json响应?

    我有 api 它的响应如下 0 serialize 1 login users token aaaaa message login successful 我如何使用 Gson 在 android 中解析它 创建一个 Json 的 pojo
  • 为什么 Tiles REGEXP 通配符定义会导致无尽的 jsp 包含错误

    我将tiles 2 2 2与Struts2 2 2 3一起使用 因为Struts2 Tiles插件相当旧 它的实现使用了许多Tiles已弃用的API 并且我想尝试REGEXP通配符 所以我在下面实现了我自己的监听器 我的TilesConta
  • 来自后台工作人员的文本框文本?

    我一直在试图弄清楚如何从后台工作人员中获取文本框的文本或其他属性 有人知道怎么做这个吗 我无法将其作为参数传递 因为它需要是实时的 谢谢您的帮助 我认为你只需要调用该属性 伪代码 private void bgw1 DoWork objec
  • 向订阅该主题的所有用户推送通知(使用 FCM Firebase 的登录用户除外)

    现在我有一个拥有一万多名成员的群组 并且我为一个群组创建了一个主题 通知主题 该群组中的所有用户都订阅了该主题 现在 在组内任何用户都可以添加图像 文件或视频等帖子 当用户添加帖子时 我需要向订阅该主题的所有用户发送通知 但除了一个之外 即
  • 如何检测 CMake 中的意外函数覆盖?

    我刚刚在我的 CMake 代码中发现了复制和粘贴错误 function name do something endfunction function name do something else endfunction 我已经多次复制 重命
  • SKLabelNode 将消失但仍然可点击

    我正在使用 SpriteKit 和 Swift 制作一个游戏 运行 Xcode 6 我有一个SKLabelNode 我们称之为myLabelNode对于这个例子 当我打电话时myLabelNode removeFromParent 它会像它
  • C# StreamReader 从标签输入文件?

    我一直在使用StreamReader inputFile代码来自ListBox它效果很好 但是 我想输入来自 txt文件到一个Label盒子代替 这可能吗 这是我尝试过的代码 它给了我一个错误描述 说明 Use of unassigned
  • 如何为 UIPageViewControllerDataSource 提供默认实现?

    我认为这个问题的答案通常会解决 Objective C 协议的问题 但这是我遇到的第一个问题 我希望在实施时使用这些方法UIPageViewControllerDataSourceWithConnections import UIKit p
  • 是否有*任何*情况下“for _ in [1,2,3]”根本不会循环?

    我正在编写一些代码并犯了一个错误 该错误简化为 func f gt Int for in 1 2 3 return 1 编译器向我显示一个错误 指出f缺少回报 这让我意识到我的错误 我忘记在周围放置一个 if 语句return 但后来我意识
  • python 多处理队列实现

    我无法理解如何将队列实现到下面的多处理示例中 基本上 我希望代码能够 1 产生2个进程 完成 2 将我的 id list 分成两部分 完成 3 让每个进程迭代列表 打印出每个项目 并且仅在完成列表后才关闭 我知道我必须实现某种类型的排队系统
  • 如何使用ajax从html获取数据并将数据传递到php

    您好 我很想知道如何将字符串从表单传递到 php 该 php 将测试其中是否有内容 然后使用此表单发布一条警报消息 尝试从中获取数据 然后显示它是否已通过正确 HTML 代码
  • 在 Android 中使用 NanoHTTPD

    我正在尝试使用 NanoHTTP 来提供 HTML 文件 然而 NanoHTTP 相对来说没有文档记录 而且我对 Android 还很陌生 我的问题是 我在哪里存储 html 文件 以及如何使用 NanoHTTP 提供它 答案很晚 但可能对
  • 如何从 Java 9+ 中的目录动态加载模块

    我一直在开发一个带有基于插件的系统的软件 用户可以在其中编写自己的插件 我对 JMPS 很陌生 但我想使用 JMPS 而不是 OSGi 来实现这一点 制作了一个单独的 API 模块 甚至创建了一个测试插件 插件以文件名 someplugin
  • UTC_TIMESTAMP() 是否受夏令时影响?

    我正在编写一个具有时段预订系统的应用程序 用户可以位于不同的时区 因此我需要以 UTC 时间将值存储在数据库中 我想知道如何UTC TIMESTAMP 是在MySQL中计算的 可靠吗 如果服务器时区位于夏令时地区UTC TIMESTAMP
  • Laravel 多文件上传验证

    我目前正在以一种形式工作 我在多个文件上传验证方面遇到一些问题 我的表单中只有一个字段允许上传多个文件
  • 如何在 pyplot 中的分组条形图中标记组?

    我想在 pyplot 中做类似以下的事情 我也可以在其中标记条形图和组 我能够标记条形 但不知道如何标记组 谢谢 默认的Seaborn 条形图会创造一个传说来显示岁月 import numpy as np import pandas as
  • C# - httpWebRequest 流的大小是否有限制?

    我正在尝试构建一个应用程序 使用 httpwebrequests 从自定义网络服务器下载一个小二进制文件 20 25 KB 这是服务器端代码 Stream UpdateRequest context Request InputStream
  • 从 HEVC 参考软件获取一些信息

    我是 HEVC 新手 现在正在了解参考软件 现在正在研究帧内预测 编码后我需要获取如下信息 给定 CTU 的 CU 结构 对于计算期间的每个 CU 它是信息 例如 QP 值 选择的亮度模式 选择的色度模式 CU 是否处于 CTU 分割决策的