Commit graph

69 commits

Author SHA1 Message Date
taisrisk
09c120d5ce Fix local video preview links in README
Replaced the absolute raw.githubusercontent URLs pointing to the main branch of
the upstream repository with relative paths (`./experiments/...`) so that
the `.mp4` preview videos render correctly on this new branch where they
actually exist.
2026-06-15 18:05:15 +00:00
taisrisk
3349473ee0 Update README to include recorded preview videos
Recorded and included `.mp4` examples of the high performance 1440p, HDR mode, and Pixel mode streams
then updated the markdown previews table to use these generated examples.
2026-06-15 17:34:35 +00:00
taisrisk
025b17e9e4 Implement pre-rendering buffer and background encoder thread
Overhauled the backend streaming loop in `stream_server.py` to use a threading queue for asynchronous frame encoding. This decouples heavy OpenCV work from the streaming loop, enabling smoother, high-framerate playback.
Updated `app.js` to buffer ~5 seconds of video stream natively before rendering, mitigating any frame drops from latency or encoder spikes.
2026-06-15 16:34:55 +00:00
taisrisk
318e6daab4 Update README to include recorded preview videos
Recorded and included `.webm` examples of the high performance 1440p, HDR mode, and Pixel mode streams
then updated the markdown previews table to use these generated examples.
2026-06-15 16:20:20 +00:00
taisrisk
4a07c82174 Implement high framerate, HDR mode, and latency improvements
Added `--max-fps` flag to explicitly control max frame rate up to 120 FPS.
Introduced 1440p resolution support in `get_cols_from_res`.
Added Mode 6 to support 32M Colors with experimental HDR (display-p3).
Optimized CV2 capture and javascript buffer logic for live latency reduction.
Added yielding to Python async loop for high FPS encoding stability.
Updated README.md to represent these fork enhancements.
2026-06-15 15:55:55 +00:00
taisrisk
9b6e379ee3 Implement high framerate, HDR mode, and latency improvements
Added `--max-fps` flag to explicitly control max frame rate up to 120 FPS.
Introduced 1440p resolution support in `get_cols_from_res`.
Added Mode 6 to support 32M Colors with experimental HDR (display-p3).
Optimized CV2 capture and javascript buffer logic for live latency reduction.
Added yielding to Python async loop for high FPS encoding stability.
Updated README.md to represent these fork enhancements.
2026-06-15 15:39:15 +00:00
taisrisk
720dccb149 Add 480p, 720p, and 1080p resolution presets
Added `--res` argument to both `stream_server.py` and `ascii_video_player2.py`
to easily set higher quality/density ASCII and pixel rendering.
The `res` argument maps `480p`, `720p`, and `1080p` presets
to appropriate column sizes (854, 1280, and 1920).
Updated `README.md` to document the new `--res` flag.
2026-06-15 15:13:03 +00:00
SteadyW
88b261eae9
Revise bandwidth requirements and remove license details
Updated the README to clarify bandwidth and GPU compatibility, and removed ethical guardrail explanation.
2026-06-15 15:59:20 +03:00
SteadyW
d06cf0af05
Revise README for Windows user shortcuts
Updated Windows user instructions for running scripts.
2026-06-15 15:50:26 +03:00
SteadyW
b1415e75ea
Delete play.bat 2026-06-15 15:48:38 +03:00
SteadyW
d9e2ea48e4
Delete serve.bat 2026-06-15 15:48:23 +03:00
SteadyW
a879b2b49c
Update README with developer note on static files
Added note for developers about using Compiler.py to generate static files.
2026-06-15 15:36:34 +03:00
SteadyW
151d2400d6
Update license section with anti-ad restriction
Clarified ethical guardrails regarding ad usage.
2026-06-15 15:36:02 +03:00
SteadyW
c07a7f7288
Revise license section and contact information in README
Updated the README to clarify the license and ethical guidelines.
2026-06-15 15:33:08 +03:00
SteadyW
4294e312e5
Add live interactive showcase section to README
Added a section for the live interactive showcase of the ASCILINE engine.
2026-06-15 15:19:39 +03:00
SteadyW
ef8dacaa48
Add LAN streaming instructions to README
Added instructions for LAN/Network streaming using the stream server.
2026-06-14 21:27:34 +03:00
SteadyW
bc53f91793
Add contact email to README 2026-06-14 19:38:01 +03:00
SteadyW
5731cfa928
Update contact information format in README 2026-06-14 19:36:55 +03:00
SteadyW
331becf6c4
Add contact information to README 2026-06-14 19:34:22 +03:00
SteadyW
b43808142e
Merge pull request #15 from YusufB5/revert-11-fix-startup-freeze
Revert "Fix #7: startup freeze (audio master clock jumps backward on cold start)"
2026-06-14 13:36:07 +03:00
SteadyW
667b412994
Revert "Fix #7: startup freeze (audio master clock jumps backward on cold start)" 2026-06-14 13:30:14 +03:00
SteadyW
bb0c096ffd
Merge pull request #11 from 1Aa1k/fix-startup-freeze
Fix #7: startup freeze (audio master clock jumps backward on cold start)
2026-06-14 13:05:19 +03:00
YusufB5
7071f2b422 feat: apply security, audio session, and ffmpeg zombie fixes 2026-06-14 12:44:19 +03:00
Nate
58626d7602 fix(#7): anchor the audio master clock so it never jumps backward (startup freeze)
Cold-start root cause: on a slow first load the <audio> element starts late, so
the audio-ready gate's wall-clock fallback has already advanced playback a second
or two by the time audio finally begins at currentTime≈0. The master clock then
snapped back toward 0, every buffered frame read as "in the future", and
renderFrame() deadlocked until audio caught up — the freeze. A refresh warms the
cache, audio starts immediately, the gap (and the freeze) vanish — which is why
reloading "fixes" it.

Fix: the first time audio is genuinely playing, capture the offset between the
wall clock and the audio clock and add it back, so the master clock follows
audio's *rate* without ever moving backward. When audio starts promptly the
offset is ~0, so normal playback is unchanged.

experiments/freeze_repro.js models a 2s-late audio start with a realistic jitter
buffer + 60fps render loop: the original code and a naive `currentTime > 0` guard
render 0-1 of ~96 frames after audio starts (frozen ~4s); the anchored clock
renders 96/96 smooth. Real-browser regression (muted Chrome): normal playback
unaffected at ~29 fps.
2026-06-14 01:24:05 -04:00
SteadyW
e130b0cc2f
Reorganize README with Star History and Support info
Added a section for Star History and support options while retaining the License section.
2026-06-13 23:27:06 +03:00
SteadyW
7085d33bcd
Add crypto donation options to README
Added donation information for project support.
2026-06-13 22:00:06 +03:00
YusufB5
444334cfba feat: added pause mechanism and updated user interface 2026-06-13 19:50:32 +03:00
SteadyW
f0a411e349
Update README with installation instructions
Added installation instructions to the README.
2026-06-13 13:27:29 +03:00
SteadyW
e3acb79c9b
Add real-time bandwidth monitoring instructions
Added instructions for monitoring bandwidth in real-time using the --debug flag.
2026-06-13 13:14:05 +03:00
SteadyW
e58a572316
Add quality and debug options to stream server help 2026-06-13 13:03:09 +03:00
YusufB5
ad7895b054 feat: activate adaptive codec in app.js and add debug flags 2026-06-13 12:08:29 +03:00
YusufB5
7ac8317371 Merge PR 9 into main 2026-06-13 12:07:44 +03:00
SteadyW
694889bd4c
Merge pull request #8 from TomZhang11/chore/gitignore-venv
Ignore Python virtual environment directories.
2026-06-13 12:01:12 +03:00
Nate
e3f282910d feat: adaptive raw/zlib/delta frame codec (opt-in, backward compatible)
The binary protocol re-sent the full grid every frame. This adds an opt-in
per-frame codec that picks the smallest of three encodings and tags it in a
1-byte header, without changing the rendered output:

  0 RAW    framebuffer as-is (legacy)
  1 ZLIB   zlib(framebuffer)
  2 DELTA  only the cells changed since the previous frame, patched on top

Clients opt in via /ws?codec=adaptive; omitting it yields the original protocol
byte-for-byte, so existing clients are unaffected. A keyframe is forced
periodically for resync. codec.js is shared by the browser and the Node test,
so the shipped decode path is the tested one.

Optional --quality {lossless,high,balanced,low} enables lossy temporal delta
(conditional replenishment): a colour cell is only re-sent once it drifts past a
tolerance from what the viewer already sees; the character plane stays exact.
Default lossless = bit-exact.

Measured wire savings (mode 5, 200x80): static screen 0.3% of legacy (~375x),
pixel mode 11.6%, high-motion 63% (never worse). Encoder tuned (zlib level 3,
smart candidate selection) to stay well under the frame budget.

Verified bit-exact two independent ways: Python->Node vectors and a live
adaptive-vs-legacy WebSocket diff. (A fuller mutation + Autobahn conformance
harness exists on request.)
2026-06-13 02:22:29 -04:00
Tom Zhang
137d3ad661 Ignore Python virtual environment directories.
Prevents accidental commits of local venv/.venv folders.
2026-06-12 21:00:53 -06:00
SteadyW
8c60ef12a0
Update README to correct binary protocol description 2026-06-12 23:16:17 +03:00
SteadyW
312d5d6df0
Clarify ASCII MOD compatibility in README
Updated wording for clarity regarding ASCII MOD compatibility.
2026-06-12 16:54:57 +03:00
SteadyW
8247b1e4ac
Update README with ASCII MOD compatibility note 2026-06-12 16:32:08 +03:00
SteadyW
5145abffaa
Replace video filenames with EXAMPLE versions 2026-06-11 14:40:12 +03:00
SteadyW
41f6950954
Update playlist.json with new video entries
Removed old playlist format and added new video entries.
2026-06-11 14:39:33 +03:00
SteadyW
18a91867fa
Update README.md 2026-06-11 14:38:53 +03:00
SteadyW
e7c77d916f
Enhance README with smart defaults and playlist details
Updated the README to clarify smart defaults and playlist format options.
2026-06-11 14:34:42 +03:00
YusufB5
de0b92030c feat: smart cols resolution 2026-06-11 14:25:36 +03:00
SteadyW
9910ae48f4
Revise ASCII and Pixel mode recommendations in README
Updated recommendations for ASCII and Pixel modes to reflect performance and visual quality improvements.
2026-06-10 17:27:38 +03:00
SteadyW
07e829fb2c
Adjust column width in README example command
Updated column width in stream command for better output.
2026-06-10 17:09:48 +03:00
SteadyW
b51b45fb5b
Improve image formatting in README.md
Updated image tags in README.md for better clarity and formatting.
2026-06-10 17:06:32 +03:00
SteadyW
acc96f546a
Revise Pixel Mode column recommendations in README
Updated recommended column settings for Pixel Mode to improve performance.
2026-06-10 16:55:29 +03:00
SteadyW
b1f2de6393 Fix table formatting - move Original Source text inline with image row 2026-06-08 23:23:46 +03:00
SteadyW
b092e50ad8
Update image source in README.md 2026-06-08 19:43:17 +03:00
YusufB5
b6d108d61b fix: remove copied architecture notes and update playlist docs 2026-06-07 23:22:41 +03:00