===================================
07-04-23
Update Master from Beta branch.\
- Version 2.007.010
Cumulative update.
Spout.cpp
06.01.23 - UIntToPtr for cast of uint32_t to HANDLE
cast unsigned int array for glGetIntegerv instead of result
Avoid c-style cast where possible
08.01.23 - Code review - Use Microsoft Native Recommended rules
08.03.23 - GetSenderAdapter use SetAdpater instead of SetAdapterPointer
21.03.23 - ReceiveSenderData - use the format of the D3D11 texture generated
by OpenDX11shareHandle for incorrect sender information.
SpoutCopy.cpp
02-04-23 - Corrected source pointer increment in rgba2rgba when not inverted
SpoutDirectX.cpp
06.01.23 - Correct IsPreferenceAvailable() to pass array length to registry function
08.01.23 - CreateSharedDX11Texture - option for keyed shared texture
18.03.23 - CreateDX11StagingTexture - use default DX11 format for zero or DX9 forma
SpoutFrameCount.cpp
06.01.23 - CheckKeyedAccess - switch on hr to avoid narrowing cast to DWORD
Avoid c-style cast where possible
08.01.23 - CheckTextureAccess/AllowTextureAccess
remove texture check for default null texture
Code review - Use Microsoft Native Recommended rules
19.03.23 - WaitFrameSync - do not block if the sender has not created a sync event
SpoutGLextemsions.cpp
20.01.23 - Changes to gl definitions for compatibility with Glew
15.02.23 - SpoutGLextensions.h
Correct glUnmapBufferPROC from void to GLboolean
Correct glGenBuffersPROC buffers arg from const
SpoutSenderNames.cpp
06.01.23 - GetActiveSender, getActiveSenderName, FindActiveSender
Change from fixed sendername argument to maxlength (default SpoutMaxSenderNameLen)
08.01.23 - FindActiveSender - test max length passed
Code review - Use Microsoft Native Recommended rules
SpoutSharedMemory.cpp
07.01.23 - Change m_pName from const char* to char* for strdup
SpoutUtils.cpp
14.01.23 - OpenSpoutConsole - add MessageBox warning if using a dll
EnableSpoutLog - open console rather than call OpenSpoutConsole
15.01.23 - Use SpoutMessageBox so it doesn't freeze the application GUI
16.01.23 - Add SpoutMessageBox caption
17.01.23 - Add SpoutMessageBox with variable arguments
Add ConPrint for SpoutUtils console (printf replacement)
Remove dll build warning MessageBox.
Change "ConPrint" to "_conprint" and use Writefile instead of cout.
18.01.23 - _conprint - cast WriteFile size argument to DWORD
19.03.23 - Update SDKversion to 2.007.010
SpoutDX.cpp
08.01.23 - Add SpoutUtils functions
23.01.23 - CheckSender - Flush after shared texture release
17.03.23 - ReceiveSenderData - if there is a valid D3D11 format, use it.
18.03.23 - CreateDX11StagingTexture - use default DX11 format for zero or DX9 formats
19.03.23 - Remove redundant CreateDX11StagingTexture and use SpoutDirectX function
ReceiveSenderData - create a DX11 receiving texture with compatible format for unknown or DX9 formats.
21.03.23 - ReceiveSenderData - revert to using the format of the D3D11 texture
generated by OpenDX11shareHandle for incorrect sender information.
SpoutLibrary.cpp
17.03.23 - SpoutLibrary.h - add redefinitons to avoid include of GL.h
Spout.cpp ReceiveSenderData - if there is a valid D3D11 format, use it.
18.03.23 - For MingW compatibility remove old style include guard from header
Test for _MSC_VER for pragma warnings in header
Test for NTDDI_WIN10_RS4 define for graphics preferences
07.04.23 Rebuild with SDK version 2.007.010 - release VS2022 - 32/64 bit /MD
===================================
05-01-23
Update Master from Beta branch.\
- Version 2.007.009
- Release 2.007.009 published
SpoutCommon.h
- Disable Visual Studio warning 26812) (unscoped enums)
Spout.cpp
- 10.04.22 - ReceiveSenderData() - correct duplication of DX9 formats
- 16.04.22 - Add more log notices to GetSenderAdapter
- 18.04.22 - Change default invert from true to false for fbo sending functions
- 28.04.22 - SelectSenderPanel - if SpoutPanel is not found,
show a MessageBox and direct to the Spout home page - 05.05.22 - SendFbo - mods for default framebuffer
- 30.07.22 - SendFbo - avoid using glGetIntegerv if width and height are passed in
Revert to default invert true after further testing with default framebuffer. - 28.10.22 - Add GetPerformancePreference, SetPerformancePreference, GetPreferredAdapterName
- 01.11.22 - Add SetPreferredAdapter
- 03.11.22 - Add IsPreferenceAvailable
SetAdapter - GL/DX compatibility is re-tested in OpenSpout - 07.11.22 - Add IsApplicationPath
Update ReceiveSenderData code comments for Windows Graphics Preferences - 28.11.22 - SelectSenderPanel - correct warning if SpoutPanel is not found instead of the
ShellExecute Windows error and allow user the option to open the Spout home page. - 05.12.22 - Add CleanSenders to SetSenderName
- 07.12.22 - SelectSender return bool
- 12.12.22 - SetSenderName - return if the same name
- 13.12.22 - SetSenderName revise for null name passed
- 14.12.22 - Remove SetAdapter. Requires OpenGL setup.
- 18.12.22 - Change unused bDX9 argument to const with default
- 20.12.22 - More checks for null arguments
- 22.12.22 - Compiler compatibility check
Conditional compile of preference functions
SpoutCopy.cpp
- 10.04.22 - Casting changes to avoid Warning C26451 : Arithmetic overflow
- 07.10.22 - Corrected missing alpha from rgb2rba and rgb2bgra functions
- 24.10.22 - Add experimental rgb_to_bgrx_sse
- 28.10.22 - Cleanup / code documentation
- 11.12.22 - test for null args in conversion functions
- 22.12.22 - Compiler compatibility check
Change all {} initializations to "={}"
SpoutDirectX.cpp
- 29.03.22 - CreateDX11Texture, CreateSharedDX11Texture, CreateDX11StagingTexture
Switch on HRESULT instead of LOWORD so that DXGI cases are recognised - 07.04.22 - CreateDX11Texture - cast to int the LOWORD from hresult for error report
- 15.05.22 - CreateSharedDX11Texture change Fatal logs to Warning
- 26.10.22 - Correct GetAdapterIndex maximum size for wchar convert
- 28.10.22 - Add GetPerformancePreference, SetPerformancePreference, GetPreferredAdapterName
Code cleanup and documentation - 01.11.22 - Add SetPreferredAdapter
- 02.11.22 - Add IsPreferenceAvailable to detect availability
of Windows Graphics Performance settings. - 04.11.22 - Change GetAdapterIndex argument from char* to to const char*
Correct to return -1 on failure instead of "false" - 07.11.22 - Add IsApplicationPath
- 01.12.22 - GetPerformancePreference change logs to warning
- 03.12.22 - Avoid use of "description" char array due to definition in SpoutSenderNames.h
- 17.12.22 - Corrections for code analysis
- 18.12.22 - Catch any exception by using Release in destructor
Use std::string for error text in CreateDX11StagingTexture / CreateSharedDX11Texture - 22.12.22 - Compiler compatibility check
Change all {} initializations to "={}" - 31.12.22 - SpoutDirectX.h
Remove WDK_NTDDI_VERSION in case it's not defined
Add comments concerning use of dxgi_6 with older DirectX SDK.
SpoutFrameCount.cpp
- 28.10.22 - Code documentation
- 10.11.22 - Revise HoldFps
Remove m_millisForFrame
Include TimeBeginPeriod/TimeEndPeriod\ to reduce Windows timing period to minimum. - 18.11.22 - Move performance counter functions to SpoutUtils
- 21.11.22 - Extend CleanupFrameCount and use in destructor
- Correct average frame rate in UpdateSenderFps
- Correct GetNewFrame for receiver started. - 17.12.22 - Use smart pointers for m_FrameStartPtr etc to avoid using new/delete
- 18.12.22 - Change back to new/delete due to incompatibility with SpoutLibrary
- 22.12.22 - Compiler compatibility check
SpoutGL.cpp
- 21.03.22 - LoadGLextensions - correct && to & for (m_caps & GLEXT_SUPPORT_PBO)
UnloadTexturePixels - casting pitch*width for size compare avoids warning C26451 - 29.03.22 - OpenDeviceKey - correct dwSize from MAX_PATH to 256 in RegOpenKeyExA
ReadTextureData - create unsigned long variables for temp src char array
ReadTextureData - Delete temporary "src" char array created with "new" - 19.04.22 - Restore host fbo in SetSharedTextureData instead of default 0
- 04.06.22 - SetSharedTextureData - corrected glCheckFramebufferStatus from != to == for textureID 0
- 29.07.22 - OpenSpout - default CPU share until tested
- 28.10.22 - Documentation cleanup
- 26.11.22 - Change SetVerticalSync argument to integer to allow adaptive vsync
- 18.12.22 - ReadTextureData - use std::unique_ptr to create intermediate invert buffer
OpenDeviceKey use std::string "at" instead of direct index
Catch any exception by using cleanup functions in destructor\ - 19.12.22 - Add DoDiagnostics to create a log file for CreateInterop failure
- 22.12.22 - Compiler compatibility testing
Remove std::unique_ptr and go back to new/delete
Change all {} initializations to "={}" - 30.12.22 - Check and confirm fix for issue #85 and PR #86
Check and confirm fix for issue #87 - 05-01-23 - ReadGLDXtexture - Test for no texture read or zero texture
moved to the beginning to avoid redundant texture lock.
SpoutGLextensions.cpp
- 18.03.22 - Change LogLevel to ExtLoglevel to make unique for ExtLog function
Change to C++11 enum class for ExtLogLevel to isolate the definitions - 14.04.22 - Change back to C enums for compatibility with earlier compilers.
Rename ExtLoglevel enum names to be more strongly unique.
Add option in SpoutCommon.h to disable warning 26812 (unscoped enums). - 18.04.22 - Add glCheckNamedFramebufferStatus
- 17.12.22 - Some cleanup for code analysis
- 22.12.22 - Compiler compatibility check
SpoutReceiver.cpp
- 18.04.22 - Change default invert from true to false for fbo sending functions
- 31.10.22 - Add GetPerformancePreference, SetPerformancePreference, GetPreferredAdapterName
- 01.11.22 - Add SetPreferredAdapter
- 03.11.22 - Add IsPreferenceAvailable
- 07.11.22 - Add IsApplicationPath
- 14.12.23 - Remove SetAdapter. Requires OpenGL setup.
SpoutSender.cpp
- 31.10.22 - Add GetPerformancePreference, SetPerformancePreference, GetPreferredAdapterName
- 01.11.22 - Add SetPreferredAdapter
- 03.11.22 - Add IsPreferenceAvailable
- 07.11.22 - Add IsApplicationPath
- 26.11.22 - Change SetVerticalSync argument to integer to allow adaptive vsync
SpoutSenderNames.cpp
- 29.03.22 - change int len to size_t len in setActiveSenderName
- 25.04.22 - Add create memory check and warning logs to setActiveSenderName
Remove duplicate shared memory creation in RegisterSenderName
GetActiveSender - rename temp name string to be more clear - 09.05.22 - Include SPOUT_ALREADY_CREATED for setActiveSenderName create shared memory success
- 30.07.22 - Throughout - remove redundant code
- 28.10.22 - Code documentation
- 31.10.22 - Include SPOUT_ALREADY_EXISTS for setActiveSenderName create shared memory success
- 13.12.22 - Add SpoutLogWarning to CleanSenders when an orphaned sender is removed
- 17.12.22 - Some cleanup for code analysis
- 22.12.22 - Compiler compatibility check
SpoutSharedMemory.cpp
- 14.04.22 - Add option in SpoutCommon.h to disable warning 26812 (unscoped enums).
- 28.10.22 - Code documentation
- 18.12.22 - Catch any exception from using Close in destructor
SpoutUtils.cpp
- 25.02.22 - OpenSpoutConsole - check AllocConsole error for existing console
Fix for Processing. - 14.04.22 - Add option in SpoutCommon.h to disable warning 26812 (unscoped enums)
- 23.06.22 - Add ElapsedMicroseconds (usec since epoch)
- 30.10.22 - Code cleanup and documentation
- 01.11.22 - Add IsLaptop(char* computername)
- 30.11.22 - Update Version to "2.007.009"
- 05.12.22 - Change ordering of _logtofile function to avoid ambiguous warning.
GetSpoutLog - optional log file argument. Remove redundant file open.
See SpoutSettongs "Log" option. - 07.12.22 - EnableSpoutLogFile allow null file name argument.
If a file name was not specified, use the executable name.
Use "GetCurrentModule" instead of NULL for GetModuleFileNameA
in case the process is a dll (https://gist.github.com/davidruhmann/8008844). - 08.12.22 - _dolog - clean up file log code.
- Corrected ExecuteProcess for EndTiming milliseconds return. - 11.12.22 - Initialize all char arrays and structures with {}
https://en.cppreference.com/w/cpp/language/zero_initialization - 14.12.22 - Add RemoveSpoutLogFile
- 18.12.22 - Add buffer size argument to ReadPathFromRegistry
Correct code review warnings where possible
Add more documentation to Group: Logs - 19.12.22 - Add GetCurrentModule / LogsEnabled / LogFileEnabled / GetSpoutLogPath
- 20.12.22 - Add SPOUT_DLLEXP to all header function declarations for dll export.
- Code cleanup - 22.12.22 - Compiler compatibility check
Change all {} initializations to "={}" - 31.12.22 - increase log char buffer from 512 to 1024
- 01.12.22 - Registry functions
check for empty subkey and valuename strings
include valuename in warnings
SpoutDX.cpp
- 01.11.22 - Add GetPerformancePreference, SetPerformancePreference,
GetPreferredAdapterName, SetPreferredAdapter - 08.11.22 - Add IsPreferenceAvailable, IsApplicationPath
- 16.11.22 - HoldFps double fps argument instead of int
- 26.12.22 - Initialize all arrays and structures
Const arg for SendImage
SpoutLibrary.cpp
- 21.03.22 - Change local LogLevel enum to more unique SpoutLibLogLevel
Initialize Spout object pointer - 11.04.22 - Option disable warning C26812 (unscoped enums) for Visual Studio
- 10.05.22 - Correct OpenSpoutConsole to use "spoututils::"
- 12.05.22 - Rebuild VS2022 - 32/64 bit /MD
Spout Version 2.007.008 - 31.10.22 - Add GetPerformancePreference, SetPerformancePreference, GetPreferredAdapterName
Corrected SpoutLog to use _dolog - 01.11.22 - Add SetPreferredAdapter, GetSDKversion, IsLaptop
- 03.11.22 - Add IsPreferenceAvailable
- 25.22.33 - Revise SpoutSenderNmaes UpdateSenderFps / HoldFps
Add GetRefreshRate - 30.11.22 - Add IsApplicationPath
- 22.12.22 - Compiler compatibility check
Conditional compile of preference functions - 26.12.22 - Add missing SPOUT_LOG_NONE to SpoutLibLogLevel
Rebuild release VS2022 - 32/64 bit /MD
Spout Version 2.007.009
INSTALL folder
- Header and library files from INSTALL build with CMake
- Update CMake documentation for INSTALL build
Examples updated
- Cinder
- ofExample Graphics Sender/Receiver
- SpoutDX Tutorial04 - code comment update for HoldFps
User binaries updated
- Demo Sender/Receiver rebuild
- SpoutSettings
Allows user access to Windows Graphics Preferences directly.
Diagnostics extended. - SpoutPanel Show more information about the sender texture, computer type, graphics adapters present and the one used by the sender application.
===================================
26-07-21
Update Master from Beta branch.
Version 2.007.003
Spout.cpp
- 22.06.21 - Move code for GetSenderCount and GetSender to SpoutSenderNames class
- 03.07.21 - Use changed SpoutSenderNames "GetSender" function name.
- 04.07.21 - Additional code comments concerning update in ReceiveTexture.
SpoutCopy.cpp
- 09.07.21 - memcpy_sse2 - return for null dst or src
SpoutDirectX.cpp
- 19.06.21 - Remove output check from FindNVIDIA
SpoutFrameCount.cpp
- 21.07.21 - Remove debug comment
SpoutGL.cpp
- 26.07.21 - Remove memorysize check from GetMemoryBufferSize for receiver
SpoutSenderNames.cpp
- 22.06.21 - Restore 2.006 GetSenderNames function
- 03.07.21 - Change GetSenderNames to GetSender to align with Spout class.
Change existing GetSender to FindSenderName.
Change duplicate FindSenderName to FindSender overload
testing function
SpoutUtils.cpp
- 26.07.21 - Update Version to "2.007.003"
BUILD binaries updated
- CMake build 32/64bit /MD - requires Visual Studio 2017 runtime to be installed
===================================
14-06-21
Update Master from Beta branch
Version 2.007.002
Spout.cpp
- ReceiveSenderData : Check if the name is in the sender list
- Add GetSenderGLDXready() for receiver
- Add SetSenderID
- Rename functions GetSenderCPU and GetSenderGLDX
- memoryshare.CloseSenderMemory() in ReleaseSender
- IsFrameNew - return frame.IsFrameNew()
- memoryshare.CloseSenderMemory() in ReleaseReceiver
- Add event functions SetFrameSync/WaitFrameSync
- Add data functions WriteMemoryBuffer/ReadMemoryBuffer
- Close sync event in ReleaseSender
- SendFbo - protect against fail for default framebuffer if iconic
- ReceiveTexture - return if flagged for update only if there is a texture to receive into.
- ReceiveTexture - allow for the possibility of a 2.007 sender with 2.006 memoryshare mode for data functions.
SpoutCopy.cpp
- Change CopyPixels and FlipBuffer to accept GL_LUMINANCE
SpoutDirectX.cpp
- Add zero width/height check to CreateDX11Texture
SpoutFrameCount.cpp
- Add sync event functions SetFrameSync/WaitFrameSync/OpenFrameSync/CloseFrameSync
- CloseFrameSync public for use by other classes
- WaitFrameSync - close handle on error
SpoutGL.cpp
- Introduced m_bTextureShare and m_bCPUshare flags to handle mutiple options
- WriteDX11texture, ReadTextureData, OpenSpout, LoadGLextensions cleanup
- OpenSpout look for DirectX to prevent repeat
- Change m_bSenderCPUmode to m_bSenderCPU
- Add m_bSenderGLDX
- Change SetSenderCPUmode to include CPU sharing mode and GLDX compatibility
- Change SetSenderCPUmode name to SetSenderID
- Add m_bMemoryShare for possible older 2.006 apps
- Add memoryshare.CreateSenderMemory
- memoryshare.CloseSenderMemory() in destructor
- Add WriteMemoryPixels
- Change ReadMemoryPixels to accept GL_LUMINANCE
- Use reinterpret_cast for memoryshare.LockSenderMemory()
- Remove m_bNewFrame
- Add memoryshare.GetSenderMemoryName()
- Disable frame sync in destructor
- Change ReadMemory to ReadMemoryTexture
- Add GetSenderMemory
- Remove ReadMemoryBuffer open error log
- Remove memoryshare struct from header and replace with SpoutSharedMemory object.
- Close shared memory and sync event in SpoutGL class destructor
- Add GetMemoryBufferSize
- Add CreateMemoryBuffer, DeleteMemoryBuffer
- All data functions return false if 2.006 memoryshare mode.
SpoutReceiver.cpp
- Add GetCPUshare and SetCPUshare
- Add GetSenderGLDXready
- Rename functions GetSenderCPU and GetSenderGLDX
- Add event functions SetFrameSync/WaitFrameSync
- Add data function ReadMemoryBuffer
- Add OpenGL shared texture access functions
- Add GetMemoryBufferSize
SpoutSender.cpp
- Add GetCPUshare and SetCPUshare
- Add event functions SetFrameSync/WaitFrameSync
- Add data function WriteMemoryBuffer
- Add GetCPU and GetGLDX
- Add OpenGL shared texture access functions
- Add CreateMemoryBuffer, DeleteMemoryBuffer, GetMemoryBufferSize
SpoutSenderNames.cpp
- GetActiveSender - erase the active sender memory map if the sender info is closed
- Change SetSenderCPUmode to include CPU sharing mode and GLDX compatibility
- Change SetSenderCPUmode name to SetSenderID
- Add GetSender to retrieve class sender.
- Remove SenderDebug
SpoutUtils.cpp
- Add std::string GetSDKversion()
- Fix code if USE_CHRONO not defined
- Disable close button on console and bring the main window to the top again
- Remove noisy warning from ReadPathFromRegistry
- Update version number to "2.007.002"
SpoutDirectX
- Add SpoutDX9 support class and examples
- Add SpoutDX12 support class and examples
SpoutDX.cpp
- SetNewFrame before texture copy
- Add memoryshare struct, ReadMemoryBuffer and WriteMemoryBuffer
- memoryshare.CloseSenderMemory() in destructor and ReleaseSender
- Add SetFrameSync and WaitFrameSync
Examples
- Add Cinder example
ofSpoutExample
- Add binaries
- Add Data sender/receiver examples
- Update source and binaries
SpoutPanel.exe
- Update compatible texture formats. Vers 2.43
Cmake build
- Update for 32/64 bit - Spout.dll, SpoutLibrary.dll, SpoutDX.dll, Spout_static.lib