fix:调整切换清晰度逻辑

This commit is contained in:
liyi 2025-06-23 15:39:00 +08:00
parent de6d2628f6
commit ce193a2195

View File

@ -91,9 +91,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
int? lastDecodedIFrameSeq;
//
bool _allowStreamResetOnce = false;
//
Future<void> _initVideoDecoder() async {
try {
@ -166,17 +163,16 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
int frameSeqI,
ScpMessage scpMessage,
) {
//
if (_allowStreamResetOnce &&
// frameSeq回绕I帧
if (!_pendingStreamReset &&
_lastFrameSeq != null &&
frameType == TalkDataH264Frame_FrameTypeE.I &&
frameSeq < _lastFrameSeq!) {
// I帧loading并重置所有本地状态
AppLog.log(
'检测到新流I帧(仅切换清晰度后允许)frameSeq回绕进入loading并重置: frameSeq=$frameSeq, lastFrameSeq=$_lastFrameSeq');
'检测到新流I帧frameSeq回绕进入loading并重置: frameSeq=$frameSeq, lastFrameSeq=$_lastFrameSeq');
Future.microtask(() => state.isLoading.value = true);
_pendingStreamReset = true;
_allowStreamResetOnce = false; //
//
_stopFrameProcessTimer();
//
@ -189,13 +185,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
_startFrameProcessTimer();
// returnI帧初始化解码器并解码
//
} else if (!_allowStreamResetOnce &&
_lastFrameSeq != null &&
frameType == TalkDataH264Frame_FrameTypeE.I &&
frameSeq < _lastFrameSeq!) {
//
AppLog.log('检测到I帧回绕但未切换清晰度不重置: frameSeq=$frameSeq, lastFrameSeq=$_lastFrameSeq');
return;
}
// pendingStreamResetI帧
if (_pendingStreamReset) {
@ -1344,8 +1333,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
_pendingStreamReset = false;
_pendingResetWidth = width;
_pendingResetHeight = height;
//
_allowStreamResetOnce = true;
}
void _initHdOptions() {
@ -1393,9 +1380,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
state.isLoading.value = false;
});
// loading卡住loading
state.isLoading.value = false;
//
_startFrameProcessTimer();