31 lines
719 B
Dart
31 lines
719 B
Dart
import 'dart:typed_data';
|
|
|
|
/// SPS/PPS/I帧依赖关系管理器
|
|
class FrameDependencyManager {
|
|
Uint8List? _sps;
|
|
Uint8List? _pps;
|
|
int? _lastIFrameSeq;
|
|
|
|
/// 更新SPS缓存
|
|
void updateSps(Uint8List sps) {
|
|
_sps = sps;
|
|
}
|
|
/// 更新PPS缓存
|
|
void updatePps(Uint8List pps) {
|
|
_pps = pps;
|
|
}
|
|
Uint8List? get sps => _sps;
|
|
Uint8List? get pps => _pps;
|
|
|
|
/// 判断是否有可用I帧
|
|
bool get hasIFrame => _lastIFrameSeq != null;
|
|
int? get lastIFrameSeq => _lastIFrameSeq;
|
|
void updateIFrameSeq(int seq) {
|
|
_lastIFrameSeq = seq;
|
|
}
|
|
|
|
/// 判断指定I帧序号是否为最近一次成功解码的I帧
|
|
bool isIFrameDecoded(int? seq) {
|
|
return seq != null && seq == _lastIFrameSeq;
|
|
}
|
|
} |