THIRD PARTY / TINY H264 DECODER

Tiny H264软件解码

SDK 中的 TinyH264 是面向 G32S10 移植的轻量级 H.264 软件解码器,基于 udevbe/tinyh264 和 h264bsd,实现 Baseline/Constrained Baseline、CAVLC、I/P 帧的裸码流解码。

能力边界:TinyH264 当前只提供 H.264 解码,不支持编码;不支持 CABAC、B 帧和 High Profile。

OVERVIEW

项目概览

项目信息
SDK 组件code/third_party/tinyh264
上游项目udevbe/tinyh264(基于 h264bsd)
版本0.0.7,提交 524a702b6d98f8b9271238fdda9a064a1e6861e7
实现语言C
功能定位H.264 软件解码器
H.264 ProfileBaseline / Constrained Baseline
熵编码CAVLC
帧类型I / P 帧;不支持 B 帧
输出格式8 位 YUV420P / I420
输入格式完整 NAL 的 Annex-B 裸码流
开源许可证Apache-2.0

DEFAULTS

默认配置

  • 最大可见分辨率:1024 × 768。

  • 最大参考帧数:1。

  • 单次输入上限:256 KiB。

  • 解码内存使用 SDK newlib/PSRAM 堆,并保证 16 字节对齐。

  • 可通过创建前的配置修改最大宽度、最大高度、参考帧数和输入上限。

INTERFACE

接口与数据约定

接口用途
tinyh264_decoder_config_default获取默认配置
tinyh264_decoder_create创建解码器实例;NULL 配置使用默认值
tinyh264_decoder_decode解码输入码流,返回已消耗字节数和一帧 I420 图像
tinyh264_decoder_reset释放缓存并重建状态,保留配置
tinyh264_decoder_destroy释放解码器实例
tinyh264_memory_get_stats查询当前核心的解码器申请量、峰值和分配失败次数
  • 输入必须是完整 NAL 的 Annex-B 裸码流;网络分片需先拼包,MP4/AVCC 需先解封装或转换。

  • 解码输出固定为 I420,Y/U/V 平面按各自 stride 访问。

  • 返回图像指针在下一次 decode、reset 或 destroy 后失效,不能由调用方释放。

  • 同一解码器实例必须在任务上下文中串行调用。

  • 码流或资源错误后需要 reset 或 destroy;reset 后从 SPS/PPS/IDR 重新开始。

BUILD

编译配置

启用 SDK 组件:

CONFIG_THIRD_PARTY_TINYH264=y

该组件依赖 SDK newlib/PSRAM 堆,需要关闭 HEAP4:

# CONFIG_OS_FREERTOS_USE_HEAP4 is not set

REFERENCE

参考链接