sergystepanov
7f2f1d70b1
Add configurable debouncer for spammy Libretro callbacks
2023-10-25 21:41:36 +03:00
Sergey Stepanov
6525106116
Update video encoders
2023-10-24 12:55:27 +03:00
Sergey Stepanov
3e116fcc52
Drop users when coordinator is lost
2023-10-21 18:45:38 +03:00
Sergey Stepanov
10507d9c53
Reorder shutdown functions
2023-10-21 00:34:15 +03:00
Sergey Stepanov
10c4cd9b7f
Add start/stop frontend lock
2023-10-20 22:43:51 +03:00
Sergey Stepanov
38dc69e4a2
Show hanged rooms
2023-10-20 22:43:51 +03:00
Sergey Stepanov
377306dc80
Clean frontend tests
2023-10-20 22:43:51 +03:00
Sergey Stepanov
da7059dc79
Tame logs
2023-10-20 22:43:51 +03:00
Sergey Stepanov
7977bce8a3
Fix dangling rooms when multiplaying
2023-10-18 21:29:21 +03:00
Sergey Stepanov
494ac0ed3b
Add empty rooms watcher
2023-10-17 21:39:16 +03:00
Sergey Stepanov
e8cec39476
Report on broken config when downloading Libretro cores
2023-10-17 19:23:00 +03:00
Sergey Stepanov
d698660c19
Allow changing video resolution during the stream
2023-10-17 15:16:45 +03:00
Sergey Stepanov
b1b33713d6
Add the initial libyuv support
...
The main benefit of libyuv, apart from shortening the video pipeline, is quite noticeable latency and CPU usage decrease due to various assembler/SIMD optimizations of the library. However, there is a drawback for macOS systems: libyuv cannot be downloaded as a compiled library and can only be built from the source, which means we should include a cropped source code of the library (~10K LoC) into the app or rise the complexity of macOS dev and run toolchains. The main target system -- Linux, and Windows will use compiled lib from the package managers and macOS will use the lib included as a shortened source-code.
Building the app with the no_libyuv tag will force it to use libyuv from the provided source files.
2023-10-15 18:55:53 +03:00
Sergey Stepanov
072b674fb1
Clean room init/deinit handlers
2023-10-15 18:55:53 +03:00
Sergey Stepanov
989d3b1c85
Move encoding libs to the top package level
2023-10-15 18:55:53 +03:00
Sergey Stepanov
f875d3fc42
Guard room creation with a mutex
...
Possible fix for the concurrent room creation while other is not destroyed properly.
2023-10-06 13:30:10 +03:00
Sergey Stepanov
cddf081b8f
Use locks in router with rooms
2023-10-06 01:12:27 +03:00
Sergey Stepanov
c1c4731640
Use faster Y flip of the video encoders (OpenGL/N64)
2023-09-29 22:36:14 +03:00
Sergey Stepanov
da51639625
Clean canvas.c
2023-09-24 14:22:34 +03:00
Sergey Stepanov
e83614068f
MacOS fix
2023-09-23 20:43:46 +03:00
Sergey Stepanov
56d8c4a928
Clean canvas drawing functions
2023-09-23 20:27:12 +03:00
Sergey Stepanov
85cef0dfec
Convert colors in C
2023-09-22 18:46:08 +03:00
Sergey Stepanov
8dd9e9c9be
Use buffered file writer
2023-09-22 18:46:08 +03:00
Sergey Stepanov
196930281b
Add the initial caged apps abstraction
...
In the current version of the application, we have strictly hardcoded the captured runtime application (FFI Libretro frontend) as well as the streaming transport (WebRTC). This commit makes it possible to choose these components at runtime.
In this commit, we no longer manage initially connected users separately from the rooms, and instead, we treat all users as abstract app sessions, rather than hardcoded WebRTC connections. These sessions may contain all the transport specifics, such as WebRTC and so on.
Rooms, instead of having the hardcoded emulator app and WebRTC media encoders, now have these components decoupled. In theory, it is possible to add new transports (e.g., WebTransport) and streaming apps (e.g., wrapped into an ffmpeg desktop app).
2023-09-16 20:12:24 +03:00
Sergey Stepanov
cccb3dce84
Fix some test on Arch
2023-09-16 20:12:24 +03:00
Sergey Stepanov
c27c88c0fa
Disable canvas pool with recording enabled for now
2023-08-24 00:14:25 +03:00
Sergey Stepanov
ddc841e8c6
Fold vpx/h264 struct options
2023-08-01 22:36:25 +03:00
Sergey Stepanov
49cb752b5c
Use implicit cast of app/game structs
...
That will make the code a bit tidier.
2023-08-01 22:27:21 +03:00
Sergey Stepanov
7fe3a893f6
Remove service package
2023-08-01 22:27:08 +03:00
Sergey Stepanov
b7fb079243
Derace the frontend when parallel testing
2023-08-01 22:25:55 +03:00
Sergey Stepanov
d7e8ca5ace
Remove SSL from the monitoring routes
2023-07-07 15:28:50 +03:00
Sergey Stepanov
8fef57aa8d
Use TLS with the monitoring / profiling routes
2023-07-06 00:04:05 +03:00
Sergey Stepanov
65b6e3208f
Fix lint warnings
2023-06-27 23:45:57 +03:00
Sergey Stepanov
d5bb271469
Add core hacks options
2023-06-23 18:39:36 +03:00
Sergey Stepanov
860c8b9d45
Add system param into the library
2023-06-16 14:12:41 +03:00
Sergey Stepanov
a6bcf5cd94
Fix scale option (it is slow)
2023-05-27 17:36:57 +03:00
sergystepanov
7668ef7bd8
Refactor media ( #401 )
...
* Encapsulate media
* Write audio by 4 bytes instead 2
* Update deps
2023-05-27 17:34:35 +03:00
Sergey Stepanov
2ed6e8724f
Add Alwa's Awakening (Demo) NES ROM
2023-05-22 18:34:58 +03:00
Sergey Stepanov
75e41e4fd0
Fix static x264 static link on Windows
2023-05-14 01:47:58 +03:00
Sergey Stepanov
b227260060
Embed config.yaml into both apps
2023-05-12 14:31:21 +03:00
Sergey Stepanov
9231120a55
Add base path for games in workers
2023-05-12 14:31:21 +03:00
Sergey Stepanov
62fc68e88b
Add optional static linking with vpx, x264, opus
2023-04-24 00:16:00 +03:00
Sergey Stepanov
ece1efad16
Add optional static linking with vpx, x264, opus
2023-04-23 23:51:38 +03:00
Sergey Stepanov
8893e1e5bf
Update config manager
2023-04-22 17:05:28 +03:00
Sergey Stepanov
eda90d74e6
Rename C.stop (it crashes PCSX on Ubuntu) wtf omegalol
2023-04-21 00:26:41 +03:00
Sergey Stepanov
ee58af488d
Advance 1 frame only with Mupen
2023-04-20 22:54:35 +03:00
Sergey Stepanov
c8eb672ecd
Fix missing return
2023-04-20 22:54:12 +03:00
Sergey Stepanov
f00c27a226
Clean nanoarch
2023-04-20 14:18:57 +03:00
Sergey Stepanov
853c7a6f81
Fix save/load for Mupen64
...
By passing function arguments into the synchronized un-libco loop, we can now save and restore Mupen game states without segfaults.
2023-04-16 13:24:28 +03:00
Sergey Stepanov
b48a6c92f6
Refactor nanoarch names
2023-04-16 13:24:28 +03:00