AV1 hardware decode

1. webrtc中AV1的真实数据流(接收端)

RTP packet
  → depacketize
    → OBU (fragment / aggregate)
      → Temporal Unit (TU)
        → Encoded Frame
          → Decoder

2.

🔹 ① RTP → OBU(AV1Depacketizer)

  • 处理:

    • OBU aggregation

    • OBU fragmentation(Z / Y bits)

  • 保证:

    • OBU 按 bitstream 顺序恢复

  • 不关心 decoder

👉 这一层只负责:

“把 RTP payload 还原成合法的 OBU 序列”


🔹 ② OBU → Temporal Unit(FrameAssembler)

  • marker bit / TU boundary 作为结束条件

  • 收集:

    • OBU_FRAME_HEADER

    • OBU_TILE_GROUP

    • OBU_METADATA

  • 直到:

    • 当前 TU 完整

👉 这里已经形成了 “一个可 decode 的单位”


🔹 ③ Temporal Unit → EncodedImage(Frame)

在 WebRTC 里:

  • EncodedImage

    • 是 decoder 的输入单位

    • 1 TU

  • 字段包括:

    • timestamp

    • frame type (key / delta)

    • data buffer(OBU bitstream)

👉 这一步你口中的 “组成 frame”
在代码里其实是:组成一个 EncodedImage


🔹 ④ EncodedImage → Decoder(VideoToolbox / libaom)

  • WebRTC 把完整 TU 的 OBU:

    • 按 AV1 Annex B / length-prefixed

    • 喂给 decoder

  • Decoder:

    • 可能 decode 新 frame

    • 也可能 SEF(show existing frame)

👉 decoder 不认识 RTP / OBU
👉 它只吃:完整 frame bitstream

posted @ 2025-12-23 18:04  AndyHu518  阅读(3)  评论(0)    收藏  举报