Commit graph

175 commits

Author SHA1 Message Date
Sergey Stepanov
9b56ffc87c
Fix macOS tests
Main thread locking hangs OpenGL emulators.
2024-05-07 21:05:12 +03:00
sergystepanov
421e9115cc
Add new options4rom config param (#452)
* Add new options4rom config param

Allows changing core options depending on the ROM name.
2024-04-24 16:38:33 +03:00
Sergey Stepanov
b3f677d32f Use for range 2024-04-22 18:10:35 +03:00
Sergey Stepanov
8d79680b81 Migrate to rand/v2 2024-04-22 18:10:35 +03:00
Sergey Stepanov
84f55691eb
Check if dup frame didn't exist
FBNeo can return dup frame flag before its first frame.
2024-03-21 23:02:02 +03:00
Sergey Stepanov
4d5033f03c Allow duplicate frames
Some cores for performance reasons may return duplicate frames (i.e. previous frames) instead of rendering them again.
2024-03-21 16:10:09 +03:00
Sergey Stepanov
43d3f84993
Add support of the 0RGB1555 pixel format 2024-03-08 18:43:23 +03:00
Sergey Stepanov
91ace06f8b
Replace the hasMultitap option with a more general solution
The new hid option enables users to map a specific Libretro device (or multiple devices) to the input ports. For instance, this allows users to map a Multitap controller with the snes9x core.
2024-03-05 21:34:37 +03:00
Sergey Stepanov
92e59672f9
Expose scale factor value 2024-03-02 16:38:53 +03:00
Sergey Stepanov
4195b7f2dc
Disable load test for new mGBA 2024-02-29 00:53:04 +03:00
Sergey Stepanov
17fe1a938a
Fix serialize test for new mGBA
Consecutive retro_serialize calls won't return same states for mGBA anymore.
2024-02-29 00:38:41 +03:00
Sergey Stepanov
000bc4f661
Load apps after rendering 1 frame
This is mandatory for Mupen and DOSBox save states. Enabled for all emulators.
2024-02-25 12:33:03 +03:00
Sergey Stepanov
3459c7e8d6 Add VP9 encoder option 2024-02-15 14:06:28 +03:00
Sergey Stepanov
61b4108dce
Disable save states tests for Nestopia
Savestates are broken in the Nestopia version 1ae59e3. Wait when new version (revert) is pushed into the nightly repo.
2024-02-13 19:37:23 +03:00
Sergey Stepanov
ce7aa1be62
Disable frame duplication by default
It breaks newer PCSX rearmed versions by pushing dozen of frames in bursts.

To implement a proper support later.
2024-02-13 18:50:38 +03:00
Sergey Stepanov
a6e56a208c Pin nano string options during Retro callbacks 2024-02-10 21:13:49 +03:00
Sergey Stepanov
b7b530fe60
Update libretro.h 2023-11-26 22:39:52 +03:00
Sergey Stepanov
4fbfa1d4e3
Fix possible NPEs 2023-11-26 22:39:46 +03:00
Sergey Stepanov
e6e537d799 Add a generic S3 provider for cloud saves 2023-11-13 21:33:12 +03:00
Sergey Stepanov
2e91feb861 Add initial automatic aspect ratio change
Depending on the configuration param coreAspectRatio, video streams may have automatic aspect ratio correction in the browser with the value provided by the cores themselves.
2023-11-03 01:12:22 +03:00
Sergey Stepanov
5d65ff14d5
Fix test 2023-10-26 16:39:00 +03:00
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