Skip to content
/ kvmd Public

Commit 0f75867

Browse files
committed
web: enabled gop=0 workaround for all browsers
Right now this problem can be reproduced on Firefox and Safari. Enabled for all just for paranoid reasons.
1 parent 34c322e commit 0f75867

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

web/share/js/kvm/stream_janus.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,24 +82,27 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __organizeH
8282
};
8383
};
8484

85-
var __ff_hack_h264_gop = null;
85+
var __fix_zero_h264_gop = null;
8686
var __resize_listener_installed = false;
8787

8888
self.ensureStream = function(state) {
8989
__state = state;
9090
__stop = false;
91-
if (tools.browser.is_firefox && __state && __ff_hack_h264_gop !== __state.h264.gop) {
92-
// uStreamer делает RTP playout-delay=0,0 при gop=0, и 0,10s для gop>0
93-
// При смене playout-delay с 0,>0 на 0,0 у фокса сносит крышу и поток фризится.
91+
if (__state && __fix_zero_h264_gop !== __state.h264.gop) {
92+
// Проблема воспроизводится на фоксе и сафари, и не воспроизводится на хроме.
93+
// Из параноидельных соображений фикс включен для всех браузеров.
94+
//
95+
// В общем, uStreamer делает RTP playout-delay=0,0 при gop=0, и 0,10s для gop>0
96+
// При смене playout-delay с 0,>0 на 0,0 у браузера сносит крышу и поток фризится.
9497
// Перезапускаем стрим для этого случая.
9598
// Потенциально тут может быть гонка между тем, что RTP-пакеты с 0,0
9699
// еще не дошли, а стрим уже перезапустился, но ничего не поделаешь.
97100
// Альтернативно можно детектить состояние, когда трафик потребляется,
98101
// но при этом отображается 0fps (собственно, так и выглядит фриз).
99-
if (__ff_hack_h264_gop !== null && __state.h264.gop === 0) {
102+
if (__fix_zero_h264_gop !== null && __state.h264.gop === 0) {
100103
self.stopStream();
101104
}
102-
__ff_hack_h264_gop = __state.h264.gop;
105+
__fix_zero_h264_gop = __state.h264.gop;
103106
}
104107
__ensureJanus(false);
105108
if (!__resize_listener_installed) {
@@ -109,7 +112,7 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __organizeH
109112
};
110113

111114
self.stopStream = function() {
112-
__ff_hack_h264_gop = null;
115+
__fix_zero_h264_gop = null;
113116
__stop = true;
114117
__destroyJanus();
115118
if (__resize_listener_installed) {

0 commit comments

Comments
 (0)