utils.h
3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* akvirtualcamera, virtual camera for Mac and Windows.
* Copyright (C) 2020 Gonzalo Exequiel Pedone
*
* akvirtualcamera is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* akvirtualcamera is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with akvirtualcamera. If not, see <http://www.gnu.org/licenses/>.
*
* Web-Site: http://webcamoid.github.io/
*/
#ifndef PLATFORM_UTILS_H
#define PLATFORM_UTILS_H
#include <string>
#include <strmif.h>
#include "VCamUtils/src/videoformattypes.h"
#include "VCamUtils/src/logger.h"
#define AkLogInterface(interface, instance) \
AkLogInfo() << "Returning " << #interface << "(" << instance << ")" << std::endl
namespace AkVCam
{
class VideoFormat;
class VideoFrame;
std::string locateManagerPath();
std::string locateServicePath();
std::string locatePluginPath();
std::string locateAltManagerPath();
std::string locateAltServicePath();
std::string locateAltPluginPath();
std::string tempPath();
std::string moduleFileName(HINSTANCE hinstDLL);
std::string dirname(const std::string &path);
bool fileExists(const std::string &path);
std::string realPath(const std::string &path);
std::string stringFromError(DWORD errorCode);
CLSID createClsidFromStr(const std::string &str);
std::string createClsidStrFromStr(const std::string &str);
std::string stringFromIid(const IID &iid);
std::string stringFromResult(HRESULT result);
std::string stringFromClsid(const CLSID &clsid);
std::string stringFromWSTR(LPCWSTR wstr);
LPWSTR stringToWSTR(const std::string &str);
FourCC formatFromGuid(const GUID &guid);
const GUID &guidFromFormat(FourCC format);
DWORD compressionFromFormat(FourCC format);
bool isSubTypeSupported(const GUID &subType);
AM_MEDIA_TYPE *mediaTypeFromFormat(const VideoFormat &format);
VideoFormat formatFromMediaType(const AM_MEDIA_TYPE *mediaType);
bool isEqualMediaType(const AM_MEDIA_TYPE *mediaType1,
const AM_MEDIA_TYPE *mediaType2,
bool exact=false);
bool copyMediaType(AM_MEDIA_TYPE *dstMediaType,
const AM_MEDIA_TYPE *srcMediaType);
AM_MEDIA_TYPE *createMediaType(const AM_MEDIA_TYPE *mediaType);
void deleteMediaType(AM_MEDIA_TYPE **mediaType);
bool containsMediaType(const AM_MEDIA_TYPE *mediaType,
IEnumMediaTypes *mediaTypes);
std::string stringFromMajorType(const GUID &majorType);
std::string stringFromSubType(const GUID &subType);
std::string stringFromFormatType(const GUID &formatType);
std::string stringFromMediaType(const AM_MEDIA_TYPE *mediaType);
std::string stringFromMediaSample(IMediaSample *mediaSample);
LSTATUS deleteTree(HKEY key, LPCSTR subkey, REGSAM samFlags);
LSTATUS copyTree(HKEY src, LPCSTR subkey, HKEY dst, REGSAM samFlags);
VideoFrame loadPicture(const std::string &fileName);
std::vector<CLSID> listAllCameras();
std::vector<CLSID> listRegisteredCameras();
std::vector<uint64_t> systemProcesses();
uint64_t currentPid();
std::string exePath(uint64_t pid);
std::string currentBinaryPath();
bool isServiceRunning();
bool isServicePortUp();
int exec(const std::vector<std::string> ¶meters,
const std::string &directory={},
bool show=false);
bool execDetached(const std::vector<std::string> ¶meters,
const std::string &directory={},
bool show=false);
}
#endif // PLATFORM_UTILS_H