fix multi display fps control (#8455)
* Calculate fps without distinguish displays, use one fps control because the controlled side control fps of all displays with one FPS variable. * Because all displays decode frame in one thread, when there are N displays, the video frames received in one second is `fps * N`, so the calculated decode fps should be divided by N. Because the actual display count is not obvious in rust, when no data frame is received for 5 seconds, the display is considered inactive, and only the active display is used as the dividend. Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
committed by
GitHub
Unverified
parent
65edd55516
commit
1765c7bbf4
@@ -1692,7 +1692,7 @@ pub async fn io_loop<T: InvokeUiSession>(handler: Session<T>, round: u32) {
|
||||
let frame_count_map: Arc<RwLock<HashMap<usize, usize>>> = Default::default();
|
||||
let frame_count_map_cl = frame_count_map.clone();
|
||||
let ui_handler = handler.ui_handler.clone();
|
||||
let (video_sender, audio_sender, video_queue_map, decode_fps_map, chroma) =
|
||||
let (video_sender, audio_sender, video_queue_map, decode_fps, chroma) =
|
||||
start_video_audio_threads(
|
||||
handler.clone(),
|
||||
move |display: usize,
|
||||
@@ -1720,7 +1720,7 @@ pub async fn io_loop<T: InvokeUiSession>(handler: Session<T>, round: u32) {
|
||||
receiver,
|
||||
sender,
|
||||
frame_count_map,
|
||||
decode_fps_map,
|
||||
decode_fps,
|
||||
chroma,
|
||||
);
|
||||
remote.io_loop(&key, &token, round).await;
|
||||
|
||||
Reference in New Issue
Block a user