* fix: windows, improve audio buffer (#9770)
* .
* fix statics does not record
and avoid channel changing when drio audio when audio is stero
* add some commence
---------
Co-authored-by: zylthinking <zhaoyulong@qianxin.com>
* Add option auto record outgoing session
* In the same connection, all displays and all windows share the same
recording state.
todo:
Android check external storage permission
Known issue:
* Sciter old issue, stop the process directly without stop record, the record file can't play.
Signed-off-by: 21pages <sunboeasy@gmail.com>
* Both encoding and decoding use fallback if first frame fails
* More aggresive max fail counter
* Update hwcodec, add judgement when length of the encoded data is zero, https://github.com/rustdesk/rustdesk-server-pro/discussions/382#discussioncomment-10525997
* Fix serde hwcodec config toml fails when the non-first vec![] is empty, https://github.com/toml-rs/toml-rs/issues/384, the config file is used for cache, when check process is not finished, the cache is used.
* Allow cm not start for pro user
Signed-off-by: 21pages <sunboeasy@gmail.com>
The device should have the capability to play a sufficient audio buffer during each period to meet the audio config, so the playback speed is not slow.
The audio delay is caused by network jitter. The controlled side sends audio data every 10ms, but it often happens that multiple packets are sent together. During underrun periods, the controlling side plays extra silence data instead, resulting in the device playing more audio than the configured amount.
* 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>
check process send config to ipc server, other process get config from ipc server. Process will save config to toml, and the toml will be used if the config is none.
when start check process: ipc server process start or option changed
from disable to enable
when get config: main window start or option changed from disable to
enable, start_video_audio_threads.
Only windows implements signature, which is used to mark whether the gpu software and hardware information changes. After reboot, the signature doesn't change. https://asawicki.info/news_1773_how_to_programmatically_check_graphics_driver_version, use dxgi way to get software version, it's not consistent with the visible driver version, after updating intel driver with small version change, the signature doesn't change. Linux doesn't use toml file.
Signed-off-by: 21pages <sunboeasy@gmail.com>
* avoid create unnecessary video decoder
Signed-off-by: 21pages <pages21@163.com>
* controlled side uses the most frequent selected codec
Signed-off-by: 21pages <pages21@163.com>
* fix black screen when control old version's second screen
For versions that do not support multiple displays, the display parameter is always 0, need set type of current display
Signed-off-by: 21pages <pages21@163.com>
---------
Signed-off-by: 21pages <pages21@163.com>
* update hwcodec, gpucodec repo is merged to hwcodec
Signed-off-by: 21pages <pages21@163.com>
* rename gpucodec.rs to vram.rs
Signed-off-by: 21pages <pages21@163.com>
* rename all gpucodec to vram, because vram is a feature of hwcodec
Signed-off-by: 21pages <pages21@163.com>
* use one check process and one config file
* set check encode image size to 720p
Signed-off-by: 21pages <pages21@163.com>
---------
Signed-off-by: 21pages <pages21@163.com>
* Opt sync conctrl with password source, add some comments
* For sync from recent, legacy ab remove forceRelay, rdpPort, rdpUsername,
because it's not used, personal ab add sync hash
* Opt style of add Id dialog
Signed-off-by: 21pages <pages21@163.com>