The VideoCache was creating Input objects but not storing them,
so input.dispose() was never called. This caused WebCodecs
VideoDecoder resources to leak, leading to browser crashes
during video playback.
Changes:
- Store Input object in VideoSinkData
- Call input.dispose() on initialization errors
- Call input.dispose() when clearing video from cache
- Clear frame references when disposing
This follows the same pattern as AudioManager which properly
manages Input disposal.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>