Great work @lev!
Glad that you found a model which works for funding development and releasing it to the public (understood re: license limitations there).
If I was designing this myself i’d probably have something like the following node set:
- Reader (HAP) : Loads HAP file, outputs file reference
- Info (HAP) : Gives all file info
- AudioClock (HAP)
- VideoClock (HAP)
- FrameClock (HAP)
- HAPTexture (HAP, DX11.Texture2D)
- HAPTexture (HAP, DX11.Texture2D YUV)
- HAPTexture (HAP, EX9.Texture)
- FileStream (HAP DX11.Texture2D) <- module which wraps everything above with your current proposed interface
The Reader node accepts a Clock input. The clocks have time start/end or frame start/end for FrameClock. Also play/skip/etc controls are applied to the Clock. I’m sure that’s not quite right, but anyway I’d split the playback control elements from the file reading / texture handling / info parts
Something like that.
I generally find ‘one big node’ is good for beginners but gets frustrating quickly. So a big module / broken down into plugins is the best way to expose power and simplicity.
Feel free to ignore this of course! otherwise hope it’s useful