From 90da3b27d939b3b7af1cf7fed10dfaaa7e271622 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Thu, 30 Oct 2025 14:40:08 -0400 Subject: Fixes from testing sink change, document things Signed-off-by: Andrew Opalach --- TODO | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index d8d374b..af266a0 100644 --- a/TODO +++ b/TODO @@ -30,7 +30,14 @@ - [x] Small list refactor. - [x] Commit libnaunet changes. - [x] Consolidate spng, stb_img, and wuffs into one file with server/client ifdefs. - - [ ] Sink errored buffer fixes. + - [x] Commit subproject changes. + - [-] Sink errored buffer improvement. + - [-] More checks for VIDEO_EMPTY() || VIDEO_ENDED() for better experience. + - This was an actual correctness issue. + - [x] Checking buffer states needs a lock, check asserts. + - [ ] Commit fixes. + - [ ] Commit changes. + - [ ] Header cleanup. - [ ] Packet benchmark. - Create packet, write bunch of ints, send to another thread, thread adds everything. - [ ] Startup timing information. @@ -39,6 +46,16 @@ - [ ] RPC header packing. - [ ] Look for more obvious packet_stream/rpc optimizations. +== Emscripten Sink + - [ ] WebSocket packet_stream. + - [ ] Server-side WebSocket and TCP. + - nn_multiplex handles WebSocket upgrade. + - [ ] Analyze thread-safety requirements of nn_signal usage. + - [ ] Sink + - [ ] VCR + - [ ] Should still be able to rely on miniaudio. + - [ ] MOMO should be comptabible with WebGL. + === DMMN - [ ] List lock. - [ ] Reconnect/Reseek. @@ -77,6 +94,9 @@ - [ ] HTTP timeout. === Liana + - [ ] Invalid connection handling. + - [ ] Clearest way to "cut off connection immediately". + - [ ] Max packet size (invalid header). - [ ] Node connection pool. - [ ] One "connection" object should suffice for retrieving duration, handling stream, and loading visual data for client. @@ -87,6 +107,7 @@ - [ ] Internalize "packet cache" logic. === Codecs + - [ ] Negotiate codec with sinks. - [ ] Better wuffs support. - [ ] https://snisurset.net/code/abydos @@ -103,11 +124,11 @@ - https://www.shadertoy.com/view/wtsXRX === Renderer + - [ ] queue_libplacebo rgb24 upload fails on ANV and Wine(wined3d), at least. - [ ] vaapi fallback if Vulkan decoding not available. - [ ] Command queue. - [ ] Queue creation/deletion. - [ ] Texture upload. - - [ ] queue_libplacebo rgb24 upload fails on ANV. - [ ] MOMO frame queue. - [ ] Log when scaling flips from required to not and vice versa. @@ -124,6 +145,14 @@ - [ ] Implement node paradigm. - [ ] Allow cmv to act as a node. +=== libalabaster + - [x] Thread-safe rand(). + - [x] AL_THREAD_LOCAL_SRAND + - [ ] Scrap trying to use stdlib rand() and copy a prng algorithm from somewhere. + - Worrying about predicting the state in libc is actually dumb. + - https://prng.di.unimi.it/xoroshiro64starstar.c + - https://prng.di.unimi.it/ + === libnaunet - [ ] Native Windows file backend. - https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataa @@ -135,6 +164,10 @@ - [x] Xcursor - [-] Fix vaapi on x11. - It's actually Xwayland lacking dma import extension. + - [ ] Wayland xkb. + - https://wayland-book.com/seat/keyboard.html + - https://xkbcommon.org/doc/current/xkbcommon_8h.html#a638bf7a52db06f383ce5a4ef99dfe539 + - https://github.com/glfw/glfw/blob/8e15281d34a8b9ee9271ccce38177a3d812456f8/src/wl_window.c#L1880 - [ ] Configurable depth and stencil buffer. - [ ] Consider server-side transcode in terms of the build. - If video decode specific GPU device wiring is needed, should it be in stela? @@ -152,6 +185,7 @@ - [ ] Rename mutex variables to lock. === Tests + - [x] Sporadic buffer errors. - [ ] Emulate slow packet stream connection. - ev_set_io_collect_interval() in loop.c. - [ ] Fast open -> shuffle spam -> disconnect deadlock. @@ -160,6 +194,16 @@ - [ ] al_array_contains - [ ] al_array_unsorted_search_by_key +==== Test cases +// BUFFER_QUEUED -> BUFFER_INIT in CLIENT_REMOVE_BUFFERS. +// - Ended audio or video only-entry processes a seek right after being skipped from. +// - In switch_to(), because it's ended, remove_entry_buffers() is not called on this entry. +// - During the seek within CLIENT_REMOVE_BUFFERS (this point before this change), +// we don't touch an empty buffer's state. An empty buffer that was QUEUED stays QUEUED. +// - CLIENT_RECONNECTED has no effect because the entry is not current. +// - Now, if this entry is ever switch_to()'d, add_or_queue_entry() will assert +// because a buffer's state being QUEUED at that point is invalid. + === Build - [x] Allow forcing ffmpeg-compat. - 3 levels? latest, 4, 3. @@ -169,6 +213,7 @@ - [x] Don't require shaderc if libplacebo found. - [x] Audio optional based on if libpulse/libasound are found. - [x] libalabaster option for release build with asserts (al_assert only). + - [ ] Change git clone depth of subproject wraps based on build configuration. - [ ] Web build. === External @@ -184,6 +229,8 @@ - [ ] Re-write database using moves for resources. ==== Status + - [ ] Generate following list for pixiv and twitter, do twitter one-shots in twitter7/8. + - [ ] List all pixiv ids in database, compare against current following list. - [ ] Merge run/* in some way that respects the file dates. - [ ] Move original pixiv into proper DB. - [ ] Verify whether pixiv_app returns updated date or created date. -- cgit v1.2.3-101-g0448