- NDIContext struct handles NDIlib_initialize/send_create/send_destroy/destroy
so NDIlib_destroy() is guaranteed even if send_create fails (was leaked before)
- malloc/free for 10-bit and 16-bit frame buffers → std::vector<uint8_t>
- NDI frame structs point into vector data, no manual lifetime management
- static_cast for FourCC instead of C-style cast
- Tidy: ndi_frame_count replaces ndi_frame_counter, ++prefix form
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>