AppWebStream
AppWebStream copied to clipboard
Sample code for streaming an application window using H.264 to a web browser
In this proof of concept code change we remove the implicit conversion from RGB32 to a format supported by H264 MF encoder. MF H246 encoder support MFVideoFormat_IYUV format https://docs.microsoft.com/en-us/windows/win32/medfound/h-264-video-encoder In...
ExifTool forum posting: https://exiftool.org/forum/index.php?topic=17154.0 Figure out how to best add the following metadata: * [ ] Origin: (x,y,z) coordinate of top-left pixel: Investigate `CameraPose` [XMP Device Tag](https://exiftool.org/TagNames/XMP.html#Device) * [x] Pixel-spacing:...
The StreamReceiver project is currently suffering from too large image-display latency due to buffering. This is clearly a client-side problem, since Google Chrome doesn't exhibit the same problem. **GOAL**: Shrink...
Follow instructions on https://developer.apple.com/videos/play/wwdc2023/10122/ (15min into the movie) for how to add `ManagedMediaSource` support in JavaScript for iOS compatibility. Subtasks: * [x] Create `ManagedMediaSource` instead of `MediaSource` if available (called...
Test switching to the newer [Desktop Duplication API](https://learn.microsoft.com/en-us/windows/win32/direct3ddxgi/desktop-dup-api) for frame grabbing instead of `BitBlt`. CVUS claims that this have improved performance on Vivid. Links: * [IDXGIOutputDuplication](https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/nn-dxgi1_2-idxgioutputduplication) interface * [DXGIDesktopDuplication](https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/DXGIDesktopDuplication) sample...
Extend `AppWebStream` to support DPI change during encoding. The DPI is encoded in the "avc1" atom that's only transmitted at the start of the stream. We'll therefore probably need to...
Task: * Replace handcrafted HTTP server with a proper HTTP library such as Windows [HTTP server](https://learn.microsoft.com/en-us/windows/win32/http/http-api-start-page) API. Motivation: * Improve robustness. * Enable authentication
Modified MF-related parameter values and added asynchronous frame processing logic. The latency issue has been somewhat improved, but further optimization may still be needed. I tried switching to the Media...
set the latency related parameters to 0
Extension of #22. Alternative approaches: * [ ] Per-frame `CreationTime` editing: Works fine with StreamReceiver, but Google Chrome pauses video playback if the time-stamps increase too slowly, and playback doesn't...