summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO255
1 files changed, 255 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..a25cfd3
--- /dev/null
+++ b/TODO
@@ -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: