长篇好文,手机电池充、放电架构与工作流程讲解_手机快充架构-CSDN博客

2026-07-06 23:55 来源:CSDN博客
摘要
从电池的角度来看,它既放电为整个手机提供能量,... 此外,电池低电量时放电会特别快,不能让用户上一秒看手机还有15%的电,下一秒就突然变成1%了,甚至有的手机玩一玩游戏,电量反而蹦高了,这都是非常不友好的体验。 我们看下实际充电曲线,上图是某手机实测的充电曲线,黄色是usb电压,蓝色是usb电流,...

  VCL和NAL

  1.VCL只关心编码部分,重点在于编码 算法 以及特定硬件平台的实现,VCL输出的是编码后的纯视频流信息,没有任何冗余头信息。

  NAL关心是是VCL的输出纯视频流如何被表达和封包以利于网络传输。

  封包目的别人知道怎么传输和解码

  (1)SODB:string of Data Bits(2)RBSP:Raw Byte Sequence Payload(3)NALU:Network Abstraction Layer Units

  关系:

  (4)SODB + RBSP trailing bits = RBSP 最原始的数据是SODB叠加一部分(RBSP头尾信息)(5)NAL header(1 byte) + RBSP = NALU 再加上一个字节的NAL header

  NALU是H264文件的基本组成单元,码流信息里面就是有一个个NALU。

  如何解码先看NAL header得到信息去分析 RBSP,RBSP去掉RBSP trailing bits得到SODB。

  SODB是海思自动生成,VLC播放器可以识别原始码流FFmpeg也可以解码出来。

  红色可以看出是I帧,蓝色是P帧。雷神信息更完善, WinHex 打开二进制文件。

  h264视频流总体分析

  (1)h264标准有多个版本,可能会有差异,具体差异不详

  (2)网上看的资料有时讲法会有冲突,或者无法验证的差异

  (3)以海思平台为主、为准、为案例,不能保证其他平台也完全一样

  (4)海思平台编码出来的H.264码流都是一个序列包含:1sps+1pps+1sei+1I帧+若干p帧(有些海思平台没有B帧)如下图:

  

  这里面的SPS PPS I帧 p帧是一个个的单元。

  2.NAL单元

  视频长码流持续不可能不分段,借助序列 每个序列有个I帧,一个I帧加上29个p帧就是30帧就是我们的帧率。

  相关概念

  (1)序列 sequence(2)分隔符 (3个00 和一个01就是H264的分隔符,序列中的每一个都要分隔)有效数据不能超过3个00 如果超过00 00 00第二个00后面加上03

(3)sps NALsize14个字节对上上图的到81

  (4)pps 4个字节(5)sei 5个字节(6)NALU单元

RTSP保持实时性,只能丢掉pSLICE。所以引入重要性参考级别,数字越大表示越重要这一帧。如下图参考级别为3。
67为SPS后面字节就用SPS解析,整个NALU解析把整个一段序列解析下来解码播放