123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #pragma once
- #ifndef __spoutSenderNames__
- #define __spoutSenderNames__
- #include <windowsx.h>
- #include <d3d9.h>
- #include <d3d11.h>
- #include <wingdi.h>
- #include <set>
- #include <map>
- #include <string>
- #include <vector>
- #include <unordered_map>
- #include "SpoutCommon.h"
- #include "SpoutSharedMemory.h"
- #define SPOUT_WAIT_TIMEOUT 100
- #define SpoutMaxSenderNameLen 256
- struct SharedTextureInfo {
- unsigned __int32 shareHandle;
- unsigned __int32 width;
- unsigned __int32 height;
- DWORD format;
- DWORD usage;
- wchar_t description[128];
- unsigned __int32 partnerId;
- };
- class SPOUT_DLLEXP spoutSenderNames {
- public:
- spoutSenderNames();
- ~spoutSenderNames();
-
-
-
-
-
- bool RegisterSenderName(const char* senderName);
- bool ReleaseSenderName(const char* senderName);
- bool FindSenderName (const char* Sendername);
-
-
- bool GetSenderNames (std::set<std::string> *Sendernames);
- int GetSenderCount();
- bool GetSenderNameInfo (int index, char* sendername, int sendernameMaxSize, unsigned int &width, unsigned int &height, HANDLE &dxShareHandle);
-
- int GetMaxSenders();
- void SetMaxSenders(int maxSenders);
-
-
- bool GetSenderInfo (const char* sendername, unsigned int &width, unsigned int &height, HANDLE &dxShareHandle, DWORD &dwFormat);
- bool SetSenderInfo (const char* sendername, unsigned int width, unsigned int height, HANDLE dxShareHandle, DWORD dwFormat);
-
- bool getSharedInfo (const char* SenderName, SharedTextureInfo* info);
- bool setSharedInfo (const char* SenderName, SharedTextureInfo* info);
-
-
- bool SetActiveSender (const char* Sendername);
- bool GetActiveSender (char Sendername[SpoutMaxSenderNameLen]);
- bool GetActiveSenderInfo (SharedTextureInfo* info);
- bool FindActiveSender (char activename[SpoutMaxSenderNameLen], unsigned int &width, unsigned int &height, HANDLE &hSharehandle, DWORD &dwFormat);
-
-
- bool CreateSender (const char *sendername, unsigned int width, unsigned int height, HANDLE hSharehandle, DWORD dwFormat = 0);
- bool UpdateSender (const char *sendername, unsigned int width, unsigned int height, HANDLE hSharehandle, DWORD dwFormat = 0);
- bool FindSender (char *sendername, unsigned int &width, unsigned int &height, HANDLE &hSharehandle, DWORD &dwFormat);
- bool CheckSender (const char *sendername, unsigned int &width, unsigned int &height, HANDLE &hSharehandle, DWORD &dwFormat);
-
-
- bool SenderDebug (const char *Sendername, int size);
- protected:
-
- bool CreateSenderSet();
- bool GetSenderSet (std::set<std::string>& SenderNames);
-
- bool setActiveSenderName (const char* SenderName);
- bool getActiveSenderName (char SenderName[SpoutMaxSenderNameLen]);
-
-
- void cleanSenderSet();
-
- static void readSenderSetFromBuffer(const char* buffer, std::set<std::string>& SenderNames, int maxSenders);
- static void writeBufferFromSenderSet(const std::set<std::string>& SenderNames, char *buffer, int maxSenders);
- SpoutSharedMemory m_senderNames;
- SpoutSharedMemory m_activeSender;
-
-
-
-
-
- std::unordered_map<std::string, SpoutSharedMemory*>* m_senders;
- int m_MaxSenders;
- };
- #endif
|