diff options
| author | 2025-09-08 13:54:36 -0400 | |
|---|---|---|
| committer | 2025-09-08 13:54:36 -0400 | |
| commit | ce955da36daa278d5b331b3c97e228e733a5125e (patch) | |
| tree | e221231e7c0da5324355af44a2e53f41166e3a05 /TODO | |
| parent | cbbb0c16dc3d9c375ac2a18ca3d59cc308d41beb (diff) | |
| download | camu-ce955da36daa278d5b331b3c97e228e733a5125e.tar.gz camu-ce955da36daa278d5b331b3c97e228e733a5125e.tar.bz2 camu-ce955da36daa278d5b331b3c97e228e733a5125e.zip | |
Major FFmpeg build improvements
- Make build more compatible with a traditional linux environment.
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'TODO')
| -rw-r--r-- | TODO | 255 |
1 files changed, 255 insertions, 0 deletions
@@ -0,0 +1,255 @@ +== Colors +#f0e6dc #412f2d #934a5b #5a6811 + +== Names + * camu + - liana + * libalabaster + * libnaunet + - nnwt + * stela + +== Webite/Manual +=== Website + * Landing Page + - Video Demo + * Products Page + * Downloads + * Contact + * Source Code + * Design Documents + +=== Manual: + * Installation and Usage + +== TODO +=== TODAY + - [x] Commit libalabaster build update. + - [x] Commit stela changes. + - [ ] Commit ffmpeg build update. + - [ ] Consolidate spng, stb_img, and wuffs into one file with server/client ifdefs + - [ ] Startup timing information + - From main() to window_system_main() then everything in desktop_open(). + - Might as well work on the cleanup part too. + - [ ] Packet benchmark. + - Create packet, write bunch of ints, send to another thread, thread adds everything. + - [ ] RPC header packing. + - [ ] Look for more obvious packet_stream/rpc optimizations. + +=== DMMN + - [ ] List lock. + - [ ] Reconnect/Reseek. + - [ ] Verbose connection logging. + - [ ] List clear. + +=== List + - [x] list.c:294 assert. + - Very common in testing with remote client (SINK_LOCAL-only theory still possible). + - [ ] Better name for set_current() type functions. + - [ ] Fix ref counting and unloading. + - [ ] List unset. + - [ ] Cleanup pizzabot. + - [ ] Gapless/Queued. + - Consider case where an entry gets queued on the sink at a point when the list already + expects it to be playing. + - [ ] list_close(): Free resources if no sinks or wait for all sinks to be removed then free resources. + - [ ] End on a paused entry should advance with the next entry starting paused. + - [ ] Allow ended entry to be unpaused (skip to next). + - [ ] Factor in estimated ping. + - Per-sink? + - [ ] Use ended state sink-side? + - Never set ended entry? + - [ ] Docs. + +=== Sink + - [x] CTRL+C twice forces SIGINT. + - [ ] Synced pausing is broken when video processing falls massively behind. + - Will cause 'Requested PTS is lower than oldest frame in video_buffer'. + - [ ] Mark entries for removal rather than remove in-place. + - [ ] More optimal command queue. + +=== Cache + - See cache/entry.h. + - [ ] EOF when seeking forward in slow http source. + - [ ] HTTP timeout. + +=== Liana + - [ ] Node connection pool. + - [ ] One "connection" object should suffice for retrieving duration, handling stream, and loading visual data for client. + +=== VCR + - Proper "Whole File" implementation. + - [ ] Track loop count, reset on flush? + - [ ] Reject images. + - [ ] Internalize "packet cache" logic. + +=== Codecs + - [ ] Better wuffs support. + - [ ] https://snisurset.net/code/abydos + +=== Desktop/CMV + - [ ] Consistent cleanup on errors. + - Start from desktop.c:camu_desktop_open(). + - [ ] More visual sink-only status. + - [ ] mpv/libplacebo shaders. + - [ ] Diagonal swipe for pause. + - [ ] Motion blur for next/prev. + - Nintendo switch photo viewer-like. + - [ ] Overlay text for volume. + - [ ] Idle animation. + - https://www.shadertoy.com/view/wtsXRX + +=== Renderer + - [ ] vaapi fallback if Vulkan decoding not available. + - [ ] Command queue. + - [ ] Queue creation/deletion. + - [ ] Texture upload. + - [ ] MOMO frame queue. + - [ ] Log when scaling flips from required to not and vice versa. + +=== CMC + - [ ] Browse pane. + - [ ] Tile implementation. + - [ ] Flesh out "user" concept enough to be usable. + +=== Portal + - [ ] Post cache thread-safety. + - [ ] https://github.com/lwthiker/curl-impersonate + +=== Node + - [ ] Implement node paradigm. + - [ ] Allow cmv to act as a node. + +=== libnaunet + - [ ] Native Windows file backend. + - https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataa + +=== Stela + - [x] X11/common nix Vulkan. + - [x] GLFW Vulkan destroy surface. + - [-] X11 and GLFW cursor. + - [x] Xcursor + - [-] Fix vaapi on x11. + - It's actually Xwayland lacking dma import extension. + - [ ] 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? + - [ ] Latency tweaking. + - Wayland presentation timing. + - https://github.com/ishitatsuyuki/LatencyFleX + +=== Other Optimizations + - [ ] Walk up cmv and document program design. + - [ ] Memory pool for al_alloc_object. + - [ ] alloca str_to_c_str. + +=== Style + - [ ] Pass on log levels. + - [ ] Rename mutex variables to lock. + +=== Tests + - [ ] Emulate slow packet stream connection. + - ev_set_io_collect_interval() in loop.c. + - [ ] Fast open -> shuffle spam -> disconnect deadlock. + - [ ] Simulate ping, connection speed, connection instablitiy. + - [ ] Seek again before slow client can respond to the first seek. + - [ ] al_array_contains + - [ ] al_array_unsorted_search_by_key + +=== Build + - [x] Allow forcing ffmpeg-compat. + - 3 levels? latest, 4, 3. + - [x] allow --force-fallback-for=libavcodec. + - [x] Allow selecting window from camu. + - [x] 'guess' option + - [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). + +=== External + - [ ] miniaudio dsound flush. + - [ ] notcurses ffmpeg flush/reset. + +=== camu_db +==== Transfer + - [ ] json.dumps(d).decode('unicode-escape').encode('utf8') + - [ ] Index all posts. + - [ ] Impement remake_post() using raw responses. + - [ ] Estimate size requirement. + - [ ] Re-write database using moves for resources. + +==== Status + - [ ] 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. + - [ ] Flag with unchecked updated date. + - [ ] Move in twitterN/pixivN temporary directories. + - Clear up significant space. + - Rewrite everything with moves. + - [ ] Setup system for downloading a list of tweet IDs. + - [ ] Download likes. + - [ ] Download missing? Twitter posts. + - [ ] Proper format for TikTok. + - [ ] Proper format for Youtube. + - [ ] Sort out and attempt to source various loose files. + +== References +=== egl_resize + * https://gitlab.freedesktop.org/mesa/mesa/-/issues/6547 + * https://github.com/KhronosGroup/EGL-Registry/pull/160/files + * https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18984 + * https://gitlab.freedesktop.org/mesa/mesa/-/issues/7217 + +=== hwdec + * https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/blob/meson-4.4/meson.build + * https://ffmpeg.org/doxygen/trunk/qsv_decode_8c-example.html + * https://github.com/Themaister/Granite/blob/master/video/ffmpeg_hw_device.cpp + * https://trac.ffmpeg.org/wiki/HWAccelIntro + * https://github.com/mpv-player/mpv/blob/master/video/decode/vd_lavc.c#L699 + * https://trac.ffmpeg.org/wiki/Hardware/VAAPI + +=== subs +* Get subtitles. +ffmpeg -i <path>.mkv -map 0:s:2 -vn -an -codec:s ass <output>.ass +* Detect type. +uchardet subs.srt +* Re-encode subs. +ffmpeg -sub_charenc ISO-8859-1 -i <path>.srt <output>.ass +* Single audio and video streams. +ffmpeg -i <path>.mkv -map 0:v -map 0:a -c:v copy -c:a copy <output>.mkv +* Add subtitles. +ffmpeg -i <path>.mkv -i <path>.ass -map 0:v -map 0:a -map 1:s -c:v copy -c:a copy -c:s copy <output>.mkv + +=== No stdlib +https://github.com/mjansson/rpmalloc + +=== Android +https://blog.differentpla.net/blog/2022/05/10/nvidia-shield-adb/ +https://github.com/brackeen/glfm/blob/main/examples/touch.c +https://developer.android.com/ndk/reference/group/audio#aaudiostream_gettimestamp +https://github.com/googlearchive/android-audio-high-performance/blob/master/aaudio/hello-aaudio/src/main/cpp/PlayAudioEngine.cpp +https://github.com/google/ExoPlayer/blob/release-v1/library/src/main/java/com/google/android/exoplayer/audio/AudioTrack.java +https://www.youtube.com/watch?v=FJW8nGV4jxY + +=== Audio +https://github.com/lipnitsk/mocp/blob/master/equalizer.c#L10 + +=== cmsb +https://github.com/NixOS/nixpkgs/pull/37730/files +Could help with iteration. + +== Ideas/Plans + - [ ] Stela KMS backend. + - [ ] XMB (XrossMediaBar) spiritual succesor. + - [ ] Minecraft mod. + - [ ] Non-TCP (UDP, QUIC?) protocol support. + - [ ] NDS client. + +=== JSON parsing lib + - Reference serde_json? + - https://old.reddit.com/r/C_Programming/comments/wjoghd/implementing_an_optional_type_in_c/ + - https://github.com/serde-rs/json + - https://old.reddit.com/r/embedded/comments/1byxt04/attribute_packed_in_embedded_systems_pros_and_cons/ + - https://www.gnu.org/software/c-intro-and-ref/manual/html_node/Attributes.html + +// vim: set ft=asciidoc: |