[#1530] Create new controls UI for video playback (#1537) Addresses #1530 Create a new controls UI layer for the DamusVideoPlayer, providing play/pause, volume control, content scale, playback rate controls, as well as a seek/timecode bar. <img width="594" alt="Screenshot 2023-09-05 at 11 42 46" src="https://github.com/damus-io/damus/assets/1031501/de89196e-0951-4a59-8430-99a8cd166e60"> <img width="586" alt="Screenshot 2023-09-05 at 11 42 55" src="https://github.com/damus-io/damus/assets/1031501/4a947870-640d-4c7e-89f7-1eab30326aa3"> Current features: - Scrub on the horizontal seek bar to change the playback time - Play/Pause button - Mute/Unmute button and volume vertical slider - Select playback rate from 0.5x up to 2.0x - Tap video to hide/show controls - Player has option to hide controls on startup - Player's video tap behavior can be customized Fixes: - The VideoPlayer has been reworked from frame-by-frame updating to an event-driven model, significantly improving performance and understandability. Known Issues: - This still suffers from [#1386] as that is a navigation/data model architecture issue, not specific to the video player. Note: - This feature DOES NOT INCLUDE A FIX FOR #1386 ! That fix will be provided in a future PR. Bounty: 100k satoshis(BTC) -> 0.001 BTC Payout Address: `bc1q5sxugecyhq5stxn4d79p4908hdr7ljcn35uyk7` <img width="341" alt="btc001" src="https://github.com/damus-io/damus/assets/1031501/54552b4f-ad4e-4842-b1a2-2ac44bf47ad7"> issue/1530-video-controls, 2 commits
Move the Block helper type to its own file (#1496) Move the Block helper type to its own file, collapse the various standalone functions for parsing block data, and refactor consumers to initialize a Block with given data and access its members as needed. This is a more "idiomatic" approach to these C-backed data structures, and moves a number of these functions, extensions, and types into `fileprivate` scope, removing them from the global symbols and generally cleaning up their interface and usage. I plan to continue these "cleanup and refactor" changes as I learn more about the repository. refactor/block-initializer, 1 commits