WSCLib SDK 1.0.0
GPU-accelerated video output framework for Windows
Loading...
Searching...
No Matches
wsclib.h
Go to the documentation of this file.
1
11#pragma once
12
13#ifdef WSCLIB_EXPORTS
14#define WSC_API extern "C" __declspec(dllexport)
15#else
16#define WSC_API extern "C" __declspec(dllimport)
17#endif
18
19#include <windows.h>
20
23
24#define WSC_VERSION_MAJOR 1
25#define WSC_VERSION_MINOR 0
26#define WSC_VERSION_PATCH 0
27#define WSC_VERSION_STRING "1.0.0"
28
30typedef struct WSCVersion
31{
32 int major;
33 int minor;
34 int patch;
35 const char *string;
37
43
45
48
63
65
68
75typedef struct WSCColorParams
76{
77 float brightness;
78 float contrast;
79 float saturation;
80 float hue;
82
88typedef struct WSCCropRect
89{
90 float left;
91 float top;
92 float right;
93 float bottom;
95
99typedef struct WSCTextOverlay
100{
101 const char *text;
102 int x, y;
104 COLORREF color;
106
110typedef struct WSCImageOverlay
111{
112 const char *filePath;
113 int x, y;
114 int width;
115 int height;
116 float opacity;
118
122typedef struct WSCAdapterInfo
123{
124 int index;
125 char name[256];
126 unsigned vendorId;
127 unsigned deviceId;
130
132
135
142WSC_API int WSC_EnumAdapters(WSCAdapterInfo *infos, int maxCount);
143
149
156
161
163
166
174WSC_API int WSC_CreateOutput(HWND parentHwnd, int x, int y, int w, int h);
175
182
189
197WSC_API WSCResult WSC_SetOutputBounds(int outputId, int x, int y, int w, int h);
198
207WSC_API WSCResult WSC_NotifyResize(int outputId, int w, int h);
208
210
213
222
230WSC_API WSCResult WSC_SetCrop(int outputId, const WSCCropRect *crop);
231
239
249
261WSC_API WSCResult WSC_SetImageOverlayFromMemory(int outputId, const void *data,
262 int dataSize, int x, int y,
263 int width, int height, float opacity);
264
272WSC_API WSCResult WSC_SetFlip(int outputId, int flipX, int flipY);
273
280WSC_API WSCResult WSC_SetRotation(int outputId, int degrees);
281
283
287
289typedef struct WSCRecordParams
290{
291 int width;
292 int height;
293 int fps;
296
304WSC_API WSCResult WSC_StartRecording(int outputId, const char *filePath,
305 const WSCRecordParams *params);
306
313
319WSC_API int WSC_IsRecording(int outputId);
320
322
326
328typedef struct WSCStreamParams
329{
330 int width;
331 int height;
332 int fps;
335
345WSC_API WSCResult WSC_StartStreaming(int outputId, const char *url,
346 const WSCStreamParams *params);
347
354
360WSC_API int WSC_IsStreaming(int outputId);
361
363
366
376WSC_API WSCResult WSC_SubmitFrame(int outputId, const void* bgra,
377 int width, int height, int pitch);
378
387WSC_API WSCResult WSC_SubmitTestFrame(int outputId, int width, int height,
388 unsigned char r, unsigned char g,
389 unsigned char b, unsigned char a);
390
392
396
403WSC_API WSCResult WSC_LoadImage(int outputId, const char *filePath);
404
412WSC_API WSCResult WSC_LoadImageFromMemory(int outputId, const void *data,
413 int dataSize);
414
416
420
427WSC_API WSCResult WSC_SetOutputZOrder(int outputId, int zOrder);
428
434WSC_API int WSC_GetOutputZOrder(int outputId);
435
437
441
452
465
467
471
478WSC_API WSCResult WSC_SubmitTexture(int outputId, void *d3d11Texture2D);
479
492WSC_API WSCResult WSC_SubmitTextureNV12(int outputId, void *d3d11Texture2D,
493 int subresourceIndex);
494
508WSC_API WSCResult WSC_SubmitFrameNV12(int outputId, const void *nv12Data,
509 int width, int height, int pitch);
510
512
516
523
530
WSCResult WSC_SetTextOverlay(int outputId, const WSCTextOverlay *overlay)
Set a text overlay for an output.
WSCResult WSC_SetRotation(int outputId, int degrees)
Set rotation for an output.
WSCResult WSC_SetImageOverlay(int outputId, const WSCImageOverlay *overlay)
Set an image overlay (logo/watermark) from a file.
WSCResult WSC_SetImageOverlayFromMemory(int outputId, const void *data, int dataSize, int x, int y, int width, int height, float opacity)
Set an image overlay from a memory buffer.
WSCResult WSC_SetColorParams(int outputId, const WSCColorParams *params)
Set color adjustment for an output.
WSCResult WSC_SetCrop(int outputId, const WSCCropRect *crop)
Set crop rectangle for an output.
WSCResult WSC_SetFlip(int outputId, int flipX, int flipY)
Set horizontal/vertical flip for an output.
void * WSC_GetD3D11DeviceContext()
Get the internal ID3D11DeviceContext pointer.
void * WSC_GetD3D11Device()
Get the internal ID3D11Device pointer.
void WSC_Shutdown()
Shut down WSCLib and release all resources.
int WSC_EnumAdapters(WSCAdapterInfo *infos, int maxCount)
Enumerate available GPU adapters.
WSCResult WSC_InitWithAdapter(int adapterIndex)
Initialize WSCLib with a specific GPU adapter.
WSCResult WSC_Init()
Initialize WSCLib with the default GPU adapter.
WSCResult WSC_SubmitFrame(int outputId, const void *bgra, int width, int height, int pitch)
Submit a BGRA frame from CPU memory.
WSCResult WSC_SubmitTestFrame(int outputId, int width, int height, unsigned char r, unsigned char g, unsigned char b, unsigned char a)
Submit a solid-color test frame.
unsigned WSC_GetCapabilities()
Query available hardware capabilities.
WSCHWCapability
Hardware capability flags (bitmask).
Definition wsclib.h:444
@ WSC_CAP_D3D11_VA
Definition wsclib.h:448
@ WSC_CAP_NONE
Definition wsclib.h:445
@ WSC_CAP_NVENC
Definition wsclib.h:447
@ WSC_CAP_NVDEC
Definition wsclib.h:446
@ WSC_CAP_ZERO_COPY
Definition wsclib.h:449
@ WSC_CAP_VIDEO_PROC
Definition wsclib.h:450
WSCResult WSC_LoadImageFromMemory(int outputId, const void *data, int dataSize)
Load an image from a memory buffer and submit to an output.
WSCResult WSC_LoadImage(int outputId, const char *filePath)
Load an image file and submit it to an output.
WSCResult WSC_SetOutputBounds(int outputId, int x, int y, int w, int h)
Move/resize a child output window.
WSCResult WSC_DestroyOutput(int outputId)
Destroy an output and free its GPU resources.
int WSC_CreateOutput(HWND parentHwnd, int x, int y, int w, int h)
Create an output as a child window inside a parent HWND.
WSCResult WSC_NotifyResize(int outputId, int w, int h)
Notify WSCLib that the output window has been resized.
int WSC_CreateOutputFromNative(HWND nativeHwnd)
Create an output bound directly to an existing native HWND.
WSCResult WSC_StopRecording(int outputId)
Stop recording.
WSCResult WSC_StartRecording(int outputId, const char *filePath, const WSCRecordParams *params)
Start recording the output to an MP4 file.
int WSC_IsRecording(int outputId)
Check if an output is currently recording.
WSCResult
Result codes returned by WSCLib functions.
Definition wsclib.h:51
@ WSC_OK
Definition wsclib.h:52
@ WSC_ERROR_NOT_ACTIVE
Definition wsclib.h:59
@ WSC_ERROR_MAP_FAIL
Definition wsclib.h:56
@ WSC_ERROR_DECODE_FAIL
Definition wsclib.h:61
@ WSC_ERROR_INVALID_PARAM
Definition wsclib.h:54
@ WSC_ERROR_ALLOC_FAIL
Definition wsclib.h:57
@ WSC_ERROR_FILE_NOT_FOUND
Definition wsclib.h:60
@ WSC_ERROR_DEVICE_FAIL
Definition wsclib.h:55
@ WSC_ERROR_NOT_INIT
Definition wsclib.h:53
@ WSC_ERROR_INVALID_ID
Definition wsclib.h:58
int WSC_IsStreaming(int outputId)
Check if an output is currently streaming.
WSCResult WSC_StopStreaming(int outputId)
Stop streaming.
WSCResult WSC_StartStreaming(int outputId, const char *url, const WSCStreamParams *params)
Start streaming to a URL via ffmpeg subprocess.
WSCVersion WSC_GetVersion()
Get WSCLib version info.
WSCResult WSC_SubmitFrameNV12(int outputId, const void *nv12Data, int width, int height, int pitch)
Submit raw NV12 frame data from CPU memory.
WSCResult WSC_SubmitTexture(int outputId, void *d3d11Texture2D)
Submit a D3D11 texture directly (GPU→GPU, no CPU copy).
WSCResult WSC_SubmitTextureNV12(int outputId, void *d3d11Texture2D, int subresourceIndex)
Submit an NV12 texture via D3D11 Video Processor.
int WSC_GetOutputZOrder(int outputId)
Get current z-order of an output.
WSCResult WSC_SetOutputZOrder(int outputId, int zOrder)
Set z-order for an output. Higher values are on top.
GPU adapter information.
Definition wsclib.h:123
char name[256]
Definition wsclib.h:125
int index
Definition wsclib.h:124
unsigned deviceId
Definition wsclib.h:127
unsigned vendorId
Definition wsclib.h:126
long long dedicatedVideoMemoryMB
Definition wsclib.h:128
Color adjustment parameters (per-output).
Definition wsclib.h:76
float brightness
Definition wsclib.h:77
float saturation
Definition wsclib.h:79
float hue
Definition wsclib.h:80
float contrast
Definition wsclib.h:78
Crop rectangle using normalized coordinates (0.0–1.0).
Definition wsclib.h:89
float top
Definition wsclib.h:91
float right
Definition wsclib.h:92
float bottom
Definition wsclib.h:93
float left
Definition wsclib.h:90
Image overlay parameters (logo / watermark).
Definition wsclib.h:111
int height
Definition wsclib.h:115
float opacity
Definition wsclib.h:116
int x
Definition wsclib.h:113
int width
Definition wsclib.h:114
int y
Definition wsclib.h:113
const char * filePath
Definition wsclib.h:112
Recording parameters.
Definition wsclib.h:290
int bitrateMbps
Definition wsclib.h:294
int fps
Definition wsclib.h:293
int width
Definition wsclib.h:291
int height
Definition wsclib.h:292
Streaming parameters.
Definition wsclib.h:329
int bitrateMbps
Definition wsclib.h:333
int height
Definition wsclib.h:331
int width
Definition wsclib.h:330
int fps
Definition wsclib.h:332
Text overlay parameters.
Definition wsclib.h:100
int y
Definition wsclib.h:102
COLORREF color
Definition wsclib.h:104
int x
Definition wsclib.h:102
const char * text
Definition wsclib.h:101
int fontSize
Definition wsclib.h:103
Version information structure.
Definition wsclib.h:31
const char * string
Definition wsclib.h:35
int major
Definition wsclib.h:32
int minor
Definition wsclib.h:33
int patch
Definition wsclib.h:34
#define WSC_API
Definition wsclib.h:14