已开启
修复 OHOS FrameInfoHelper 的 DrDc 锁失效问题 #6
修复 OHOS FrameInfoHelper 的 DrDc 锁失效问题 #6
已开启
Zhou创建于 8月11日
Zhou
Zhou
8月11日

问题描述

FrameInfoHelperImpl 构造时,先通过 std::move(drdc_lock) 将
DrDc 锁传递给基类,随后又将同一个参数传递给 GPU 序列上的
OnGpu 对象。

第一次移动后,本地的 scoped_refptr 已经为空,导致 OnGpu
收到空的 DrDc 锁。播放 HEVC 视频并初始化解码器时,会触发
RefCountedLock DCHECK,随后 GPU 进程因 SIGABRT 退出。

GPU 进程退出后,视频解码 Mojo 连接断开,最终表现为:

  • PIPELINE_ERROR_DISCONNECTED
  • 播放器显示错误
  • 视频无法正常播放

根本原因

原实现第一次初始化基类时移动了 drdc_lock:

gpu::RefCountedLockHelperDrDc(std::move(drdc_lock))
likedislike
合并受阻