@@ -27,22 +27,22 @@ namespace impl {
27
27
28
28
class InitRecorderEvent : public geode ::Event {
29
29
public:
30
- InitRecorderEvent (void * ptr, RenderSettings&& settings) {
30
+ InitRecorderEvent (void * ptr, const RenderSettings* settings) {
31
31
m_ptr = ptr;
32
- m_renderSettings = std::move ( settings) ;
32
+ m_renderSettings = settings;
33
33
}
34
34
35
35
void setResult (geode::Result<>&& result) {m_result = std::move (result);}
36
36
geode::Result<> getResult () {return m_result;}
37
37
38
38
void * getPtr () const {return m_ptr;}
39
39
40
- const RenderSettings& getRenderSettings () {return m_renderSettings;}
40
+ const RenderSettings& getRenderSettings () const {return * m_renderSettings;}
41
41
42
42
private:
43
- RenderSettings m_renderSettings;
43
+ const RenderSettings* m_renderSettings;
44
44
void * m_ptr;
45
- geode::Result<> m_result = geode::Ok() ;
45
+ geode::Result<> m_result = DEFAULT_RESULT_ERROR ;
46
46
};
47
47
48
48
class StopRecorderEvent : public geode ::Event {
@@ -85,45 +85,45 @@ namespace impl {
85
85
86
86
class MixVideoAudioEvent : public geode ::Event {
87
87
public:
88
- MixVideoAudioEvent (std::filesystem::path&& videoFile, std::filesystem::path&& audioFile, std::filesystem::path& & outputMp4File) {
89
- m_videoFile = std::move ( videoFile) ;
90
- m_audioFile = std::move ( audioFile) ;
91
- m_outputMp4File = std::move ( outputMp4File) ;
88
+ MixVideoAudioEvent (const std::filesystem::path& videoFile, const std::filesystem::path& audioFile, const std::filesystem::path& outputMp4File) {
89
+ m_videoFile = & videoFile;
90
+ m_audioFile = & audioFile;
91
+ m_outputMp4File = & outputMp4File;
92
92
}
93
93
94
94
void setResult (geode::Result<>&& result) {m_result = std::move (result);}
95
95
geode::Result<> getResult () {return m_result;}
96
96
97
- std::filesystem::path const & getVideoFile () {return m_videoFile;}
98
- std::filesystem::path const & getAudioFile () {return m_audioFile;}
99
- std::filesystem::path const & getOutputMp4File () {return m_outputMp4File;}
97
+ std::filesystem::path const & getVideoFile () const {return * m_videoFile;}
98
+ std::filesystem::path const & getAudioFile () const {return * m_audioFile;}
99
+ std::filesystem::path const & getOutputMp4File () const {return * m_outputMp4File;}
100
100
101
101
private:
102
- std::filesystem::path m_videoFile;
103
- std::filesystem::path m_audioFile;
104
- std::filesystem::path m_outputMp4File;
102
+ const std::filesystem::path* m_videoFile;
103
+ const std::filesystem::path* m_audioFile;
104
+ const std::filesystem::path* m_outputMp4File;
105
105
geode::Result<> m_result = DEFAULT_RESULT_ERROR;
106
106
};
107
107
108
108
class MixVideoRawEvent : public geode ::Event {
109
109
public:
110
- MixVideoRawEvent (std::filesystem::path&& videoFile, const std::vector<float >& raw, std::filesystem::path& & outputMp4File) {
111
- m_videoFile = std::move ( videoFile) ;
110
+ MixVideoRawEvent (const std::filesystem::path& videoFile, const std::vector<float >& raw, const std::filesystem::path& outputMp4File) {
111
+ m_videoFile = & videoFile;
112
112
m_raw = &raw;
113
- m_outputMp4File = std::move ( outputMp4File) ;
113
+ m_outputMp4File = & outputMp4File;
114
114
}
115
115
116
116
void setResult (const geode::Result<>& result) {m_result = geode::Result (result);}
117
117
geode::Result<> getResult () {return m_result;}
118
118
119
- std::filesystem::path const & getVideoFile () const {return m_videoFile;}
119
+ std::filesystem::path const & getVideoFile () const {return * m_videoFile;}
120
120
std::vector<float > const & getRaw () const {return *m_raw;}
121
- std::filesystem::path const & getOutputMp4File () const {return m_outputMp4File;}
121
+ std::filesystem::path const & getOutputMp4File () const {return * m_outputMp4File;}
122
122
123
123
private:
124
- std::filesystem::path m_videoFile;
124
+ const std::filesystem::path* m_videoFile;
125
125
const std::vector<float >* m_raw;
126
- std::filesystem::path m_outputMp4File;
126
+ const std::filesystem::path* m_outputMp4File;
127
127
geode::Result<> m_result = DEFAULT_RESULT_ERROR;
128
128
};
129
129
#undef DEFAULT_RESULT_ERROR
@@ -142,6 +142,8 @@ class Recorder {
142
142
deleteEvent.post ();
143
143
}
144
144
145
+ bool isValid () const {return m_ptr != nullptr ;}
146
+
145
147
/* *
146
148
* @brief Initializes the Recorder with the specified rendering settings.
147
149
*
@@ -153,8 +155,8 @@ class Recorder {
153
155
*
154
156
* @return true if initialization is successful, false otherwise.
155
157
*/
156
- geode::Result<> init (RenderSettings& & settings) {
157
- impl::InitRecorderEvent initEvent (m_ptr, std::move ( settings) );
158
+ geode::Result<> init (RenderSettings const & settings) {
159
+ impl::InitRecorderEvent initEvent (m_ptr, & settings);
158
160
initEvent.post ();
159
161
return initEvent.getResult ();
160
162
}
@@ -221,8 +223,8 @@ class AudioMixer {
221
223
* @warning The audio file is expected to contain stereo (dual-channel) audio. Using other formats might lead to unexpected results.
222
224
* @warning The video file is expected to contain a single video stream. Only the first video stream will be copied.
223
225
*/
224
- static geode::Result<> mixVideoAudio (std::filesystem::path videoFile, std::filesystem::path audioFile, std::filesystem::path outputMp4File) {
225
- impl::MixVideoAudioEvent mixEvent (std::move ( videoFile), std::move ( audioFile), std::move ( outputMp4File) );
226
+ static geode::Result<> mixVideoAudio (std::filesystem::path const & videoFile, std::filesystem::path const & audioFile, std::filesystem::path const & outputMp4File) {
227
+ impl::MixVideoAudioEvent mixEvent (videoFile, audioFile, outputMp4File);
226
228
mixEvent.post ();
227
229
return mixEvent.getResult ();
228
230
}
@@ -240,8 +242,8 @@ class AudioMixer {
240
242
* @warning The raw audio data is expected to be stereo (dual-channel). Using mono or multi-channel audio might lead to issues.
241
243
* @warning The video file is expected to contain a single video stream. Only the first video stream will be copied.
242
244
*/
243
- static geode::Result<> mixVideoRaw (std::filesystem::path videoFile, const std::vector<float >& raw, std::filesystem::path outputMp4File) {
244
- impl::MixVideoRawEvent mixEvent (std::move ( videoFile) , raw, std::move ( outputMp4File) );
245
+ static geode::Result<> mixVideoRaw (std::filesystem::path const & videoFile, const std::vector<float >& raw, std::filesystem::path const & outputMp4File) {
246
+ impl::MixVideoRawEvent mixEvent (videoFile, raw, outputMp4File);
245
247
mixEvent.post ();
246
248
return mixEvent.getResult ();
247
249
}
0 commit comments