Streaming video and audio for Apple II
Go to file
kris 9da18f0ecc Initial working version of video player.
The basic strategy is that we remove as much conditional evaluation as
possible from the inner decode loop.

e.g. rather than doing opcode dispatch by some kind of table lookup
(etc), this is precomputed on the server side.  The next opcode in the
stream is encoded as a branch offset to that opcode's first instruction,
and we modify the BRA instruction in place to dispatch there.

TCP buffer management is also offloaded to the server side; we rely on
the server to explicitly schedule an ACK opcode every 2048 bytes to
drop us into a slow path where we move the W5100 read pointer, send
the TCP ACK, and block until the read socket has enough data to
continue with.

This outer loop is overly conservative (e.g. since we're performing
exactly known read sizes we can omit a lot of duplicate bookkeeping),
i.e. there is a lot of room for optimizing this.

Experimental (i.e. not working yet) support for audio delay loop;
we should be able to leverage the way we do offset-based dispatch to
implement variable-delay loops with some level of cycle resolution.
2019-02-24 00:03:36 +00:00
ethernet/ethernet Initial working version of video player. 2019-02-24 00:03:36 +00:00
frame_sequence.py Extract out input video decoding into separate module. 2019-02-23 23:32:07 +00:00
main.py Extract out input video decoding into separate module. 2019-02-23 23:32:07 +00:00
memory_map.py Implement a much more efficient mechanism for mapping an array between 2019-02-23 23:44:29 +00:00
opcodes_test.py Update cycle timing from working ethernet player. 2019-02-23 23:38:14 +00:00
opcodes.py Update cycle timing from working ethernet player. 2019-02-23 23:38:14 +00:00
scheduler.py
screen.py Fix deprecation warning on newer numpy 2019-02-23 23:33:18 +00:00
server.py Send contents of out.bin file 2019-02-23 23:28:33 +00:00
video_test.py Video() is now aware of target frame rate, and will continue to emit 2019-02-23 23:52:25 +00:00
video.py Video() is now aware of target frame rate, and will continue to emit 2019-02-23 23:52:25 +00:00