feat(webrtc): 新增解码耗时统计并修复黑屏问题
1. 新增自编码与全托管模式的解码耗时探针(VideoSink),统计帧率与解码耗时。 2. 修复 SPS 与 PPS 作为独立 CONFIG 单元发送时被误丢弃导致 H.264 永久黑屏的问题。 3. 优化分片重组缓冲,丢弃过期单元并限制缓冲堆积以防内存泄漏。
This commit is contained in:
@@ -100,6 +100,22 @@ class SelfCodecDecoder {
|
||||
}
|
||||
}
|
||||
|
||||
/// 读取解码耗时统计。返回包含以下键的 Map(毫秒),失败返回 null:
|
||||
/// - lastMs:最近一帧解码耗时;
|
||||
/// - avgMs:最近窗口内的平均解码耗时;
|
||||
/// - maxMs:峰值解码耗时;
|
||||
/// - count:累计已解码帧数。
|
||||
Future<Map<String, dynamic>?> getStats() async {
|
||||
if (_disposed || _textureId == null) return null;
|
||||
try {
|
||||
final res = await _channel.invokeMethod<dynamic>('getStats');
|
||||
if (res is Map) return res.cast<String, dynamic>();
|
||||
} catch (_) {
|
||||
// 解码未就绪或被释放时忽略。
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// 释放原生解码资源。重复调用安全。
|
||||
Future<void> dispose() async {
|
||||
if (_disposed) return;
|
||||
|
||||
Reference in New Issue
Block a user