HM配置文件

HM针对不同需求提供了三种配置文件:intra_only、random-access和low-delay。分别又有针对8比特和10比特的配置文件。具体如下:

  • Intra, main

  • Intra, high efficiency, 10 bit

  • Random access, main

  • Random access, high efficiency, 10 bit

  • Low delay, main

  • Low delay, high efficiency, 10 bit

  • Low delay, main, P slices only (optional)

  • Low delay, high efficiency, P slices only, 10 bit (optional)

注:当待编码视频是10比特视频而配置文件是8比特时(InternalBitDepth=8),10比特的像素x需要转换为8比特(x+2)/4然后裁剪到[0,255]。同样当待编码视频是8比特视频而配置文件是10比特时(InternalBitDepth=10),8比特的像素x需要转换为10比特4*x。这个转换在HM中自动进行无需额外操作。

Intra-only配置

在 intra-only模式中,所有待编码图像都被当作IDR图像采用帧内预测编码。不存在时域参考图像。且图像内QP不会变化。下图是 intra-only模式编码示意图,图像上的数字代表编码顺序。

 

Low-delay配置

low-delay有low-delay P和low-delay B两种模式。对于low-delay模式,第一帧图像是IDR图像。在low-delay P模式中除第一帧外都是P图像。在low-delay B模式中除第一帧外都是B图像。对于两种模式,无论是P图像还是B图像都只参考播放顺序在其前的图像。且在low-delay B模式中参考图像列表RefPicList0 和RefPicList1相同。每个帧间预测图像的QP是在帧内图像的QP上加一个补偿值,补偿值由所处的时域层决定。

下图是 Low-delay模式编码示意图,图像上的数字代表编码顺序。

 

Random-access配置

在random-access模式中,编码时使用了分层B结构(hierarchical B structure)。下图是random-access模式编码示意图,图像上的数字代表编码顺序。

 

每隔一定间隔编码一个I帧,间隔由配置项IntraPeriod 决定,一般根据帧率配置为1秒一个I帧。第一个I帧为IDR图像,其他I帧为非IDR图像(Open GOP)。显示顺序在连续I帧间的图像被编码为B帧。

处于时域最低层的帧间预测图像(GPB),可以参考帧内图像或帧间图像。第二和第三时域层由referenced B pictures图像组成。最高时域层只包含non-referenced B picture图像。每个帧间预测图像的QP是在帧内图像的QP上加一个补偿值,补偿值由所处的时域层决定。

感兴趣的请关注微信公众号Video Coding

 

### YAML 文件中 `hm` 的用途与示例 在给定的引用材料中,未直接提及 `hm` 这一特定关键词的具体含义或用法。然而,在引用[2]中提到了日志配置文件 `shared-log.yaml` 中的内容[^2]。此部分展示了如何通过 YAML 配置来设置日志级别、日期格式以及日志存储路径等内容。 如果假设 `hm` 是指代某个模块或者组件(例如 `com.hmall`),那么其可能的作用是在应用程序中定义该模块的日志记录行为。以下是基于通用实践的一个推测性解释: #### 日志配置中的 `hm` 在实际开发过程中,开发者可能会针对不同的包名或类名设定独立的日志等级以便于调试和监控程序运行状态。例如,在上述提到的 `shared-log.yaml` 文件里设置了如下内容: ```yaml logging: level: com.hmall: debug ``` 这里明确了对于名为 `com.hmall` 的 Java 包及其子包下的所有类,默认采用 DEBUG 级别的日志输出模式。这意味着任何来自这些类内部发出的消息只要达到或超过 DEBUG 层级都会被打印出来供分析人员查看。 #### 示例代码片段展示如何加载并应用此类配置项 下面给出一段简单的 Spring Boot 应用启动时自动读取外部资源目录下指定名称 YML/Properties 类型属性文件作为全局参数的一部分实现方法: ```java @SpringBootApplication @PropertySource(value="classpath:/config/shared-log.yaml", ignoreResourceNotFound=true, factory=YamlPropertySourceFactory.class) public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } } ``` 其中需要注意的是我们自定义了一个工厂类 `YamlPropertySourceFactory` 来支持正确解析 `.yaml` 后缀形式的数据源而非默认仅限 `.properties`. --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值