Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
35 check-ins using file doc/a12.md version fca73f977a
2025-07-13
| ||
13:30 | (net) a12: expose keyframe controls, fixes to first frame tpack cast This was a fun-one. Shmifsrv vbuffer only sets vbuffer size if VENC is for passthrough, otherwise buffer-bound is calculated through stride/pitch. Since we passed vbuffer size to tunpack the i-frame generation context would fail, but delta frames etc. would still be passed raw as a12 frame encoder for zstd+tpack does validate actual data contents and calculate size from that. There is still another ugly bug in that for the sink side, a12_unpack when given a shmif context will _resize that context based on the unpacked vbuffer. That field is given by the tpack dance, but that's defined by the cell dimensions of the 'driver' sink which might have different densities and font preferences than other sinks. To fix that, a12.c need to track DISPLAYHINT and when it gets cell_w/cell_h and decodes a tpack buffer, calculate the intended size manually before resizing. Leaf check-in: ebc85b6033 user: letoram tags: master, trunk | |
2025-07-10
| ||
22:30 | (net) let session.c sink thread share lock with a12helper check-in: d36ef70702 user: letoram tags: master, trunk | |
2025-07-09
| ||
22:30 | (net) hashmap_iterate takes 1 return for continuation This should fix the problem of only one sink getting updates. check-in: 745785b046 user: letoram tags: master, trunk | |
22:19 | (net) session: expose channel-id for framequeue this still need to correspond to a SEGREQ event in the view-only sink so that it can compose accordingly. check-in: bc30becc17 user: letoram tags: master, trunk | |
19:47 | (net) session: forward correct tunining parameters for tpack check-in: 23c2d11ea0 user: letoram tags: master, trunk | |
17:05 | (net) session: --cast signs of life Successfully hosted tests/frameservers/counter via arcan-net --cast /path/to/counter then connected a primary sink to it (first come owns it) and then connect/disconnect a client on another machine and it gets to view-only the current state of the first channel. check-in: 20d6c08e82 user: letoram tags: master, trunk | |
2025-07-08
| ||
21:15 | (build) prototype warning fixes check-in: 24ff999ba9 user: void tags: master, trunk | |
16:52 | (net) session: wire in first attempt at frame cache for casting This is for the last big step in the feature matrix of what we need as building blocks for the intended first round of a12 appls, i.e. letting multiple sinks view the same source. There is a lot that can be done with it, but settle for just pushing towards PoC stage by adding a mode to session where the first connected sink becomes the 'driver' and the frames that are produced gets mirrored to any other sink that connects. The main complications to look out for will be the usual 'how to handle secondary surfaces' in order to preserve deferred composition, with cat9 open embed style being the tough example. check-in: 8f1c2243bb user: letoram tags: master, trunk | |
2025-07-07
| ||
17:26 | (net) session: expose parent process cli options over shmif check-in: e8509ab60b user: letoram tags: master, trunk | |
09:51 | (net) session: source-sinking through directory tunnel back This was rather simple, just forgot to pass the secret onwards. Now thread sanitizer across the most complex source-sink case is finally possible. check-in: d836c8f44b user: letoram tags: master, trunk | |
2025-07-06
| ||
15:44 | (net) session: introduce key-management This is a consolidated version of the pattern in net.c merging the directory- spawned, local hosted and directory-joined forms. check-in: ba8fc41a67 user: letoram tags: master, trunk | |
06:43 | (net) send reset/register on resumption This works with the caveat that if the sink side WM deletes the window, causing the connection to terminate, this will not cause the termination to hit and the old session will still recover. Similarly, if say, afsrv_terminal: #exit kills the window the server will still try to resumption it. Both suggest that there is an issue with lifecycle tracking at these transitions. check-in: 78c8cffa11 user: letoram tags: master, trunk | |
2025-07-05
| ||
21:40 | (net) [regression warning] refactor -l -- /shmif/client hosting This will break pull use of arcan-net -- /some/bin. To get away from the fork() + continued exec use in arcan-net which stops thread sanitizer from working, and make net.c less messy -- we split into a new binary, arcan-net-session. This binary will take care of spinning up the shmif client and mapping to an a12 sink, but also prepare for two major features and a tui UI for runtime parameter controls. The first feature is to be able to resume an interrupted connection by leveraging the crash recovery _RESET mechanism. This is done by tracking the public-key used to authenticate, and the status of the shmif client primary when the a12 connection has terminated. If the client is still alive, bind it to the public-key and look for that on new connections. The second feature is a bit more complex, but it is to have a broadcast option where encoded video frames are kept from the session that the first source gets. Any new connections are then fed these frames within a GOP-sequence friendly window as passthrough. This lets one a12 connection 'drive' the shmif client, and the others view it. It will be single window only (and uncomposited, if composition is wanted, host through lwa+wm). check-in: 7e0e57c14b user: letoram tags: master, trunk | |
21:32 | (arcterm) handle SIGUSR1 in cli=lua mode and dump trace This is an intermediate convenience (before adding full debugif) to capture livelocks in lash scripts. check-in: 71e8543711 user: letoram tags: master, trunk | |
2025-07-04
| ||
08:45 | (shmif) poll in blocking recvfds() to avoid 100% spin on nonblock socket check-in: 6150579486 user: letoram tags: master, trunk | |
2025-06-29
| ||
19:01 | (build) adds few more dependencies to flake.nix check-in: e65ca0e5d4 user: cipharius tags: master, trunk | |
18:44 | (build) adds flake.nix with all of the build dependencies check-in: a28bab3e82 user: cipharius tags: master, trunk | |
2025-06-26
| ||
16:29 | (net) obsd warnings check-in: 11cc3d5829 user: letoram tags: master, trunk | |
04:41 | (build) move arc4random() to arcan_random() for musl- compat check-in: 555656c25a user: letoram tags: master, trunk | |
2025-06-25
| ||
06:06 | (net) expose debug report generation as .report resource This solves for half of the triaging point. It makes it so a developer permission key can generate and download the report for the appl it specifies, a config option to flush after this has occured (the flush happens instantly, meaning that if the connection is severed while the report is downloaded, it is lost). It can be parried for by tracking the transfer and waiting for STREAMSTATUS to latch the unlink, if needed. It's just fringe enough to not warrant the effort right now. It also adds config.lua scope controls to block the flush, and admin functions to enumerate installed appls and explicitly flush. What's missing is the .ctrl layer, both for merging into the report itself, and more importantly - an external ticket service config and functions to issue a ticket into it. check-in: 66835228e0 user: letoram tags: master, trunk | |
06:02 | (shmif) don't warn if migrate called without connp set check-in: b85540ac80 user: letoram tags: master, trunk | |
2025-06-24
| ||
15:51 | (net) add build_debug_pkg(applname) for collecting .debug This enumerates all accepted public keys with a local state store, extracts .debug snapshots and packages them into one descriptor. The purpose for this is to then let the developer access that as a .file for local triaging, or for the .ctrl- VM runner to further analyze it to generate tickets. check-in: 235473f9fb user: letoram tags: master, trunk | |
03:48 | (build) off-by-one in awk extraction of buildtag check-in: 807f065909 user: letoram tags: master, trunk | |
03:19 | (build) fossil tip tagging fix for out-of-tree build dir check-in: e1e9d2c13e user: letoram tags: master, trunk | |
03:18 | (net) h264 raw bitstream debug dump accidentally enabled check-in: 0db5c7ce2a user: letoram tags: master, trunk | |
01:57 | (net) make outbound buffer-ringbuffer size configurable check-in: 64252e0016 user: letoram tags: master, trunk | |
00:58 | (net) missing critical-region safeguard around post-auth flush check-in: e151a800b5 user: letoram tags: master, trunk | |
00:57 | (net) add (incomplete) pre-encrypt buffer validation function check-in: 5bb7302356 user: letoram tags: master, trunk | |
2025-06-23
| ||
17:27 | (lwa) queue EXIT_FAILURE if parent connection dies without recovery check-in: d73c64121b user: letoram tags: master, trunk | |
2025-06-22
| ||
08:48 | (net) move a12int_insecure_ helpers to context option and update test check-in: df3887ea43 user: letoram tags: master, trunk | |
2025-06-21
| ||
23:58 | (lua) extend open_nonblock with table form This is in preparation for handling parallel transfers through afsrv_net/arcan-net. The problem this is meant to solve is that if an appl does something like: stdin = net_open("@stdin", ...) decode = launch_decode(...) open_nonblock(stdin, false, "appl:/something", decode) Any subsequent transfers will be queued and not dispatched until decode finishes streaming. This breaks simple cases like an a12-ctrl+appl that may stream video from a static source while also presenting static imagery that comes server-side. There's no reasonable heuristic for this since afsrv_decode etc. can be used for static imagery as well, the option is either to instruct _decode to locally cache before decoding (which can be gigabytes of data and still block) or, as the approach is here, to add hinting: open_nonblock(stdin, {parallel = true}, "appl:/something", decode) Then (next patch) let arcan-net see that this should be parallelised and request it on a different channel. This gives the appl the option of ~255 (assuming no other dynamic sourcing or tunneling) ongoing transfers. check-in: 75fde94de0 user: letoram tags: master, trunk | |
11:15 | (net) wire in request_nonblock, accept_nonblock for ctrl This is a prerequisite for dynamic/filtered .index as well as ctrl- dictated streaming transfers. check-in: 5fe4c48b76 user: letoram tags: master, trunk | |
04:55 | (net) ensure \0 terminating in pkg unpack Off-by-one causing some packaging to fail validation. check-in: 6221073f42 user: letoram tags: master, trunk | |
04:54 | (tui) split out nbio processing for re-use elsewhere open_nonblock is needed in dir-ctrl lua VM now, rather than re-implement the same processing loop again, prepare for re-using the tui one as that has seen the heaviest testing. check-in: 63c9ea2ed4 user: letoram tags: master, trunk | |
2025-06-19
| ||
11:19 | (doc/net) extend A12 directory-extension This adds more detail on FAP signing, directory linking and extends appl directory announcements to cover tui-only appls as well as a 'default' flag for key-defined 'default' appl. check-in: 0e987189a3 user: letoram tags: master, trunk | |