Skip to content

Commit 529ebe9

Browse files
committed
Add encoding time to movie writer report
1 parent e195bc2 commit 529ebe9

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

servers/movie_writer/movie_writer.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ void MovieWriter::begin(const Size2i &p_movie_size, uint32_t p_fps, const String
126126

127127
cpu_time = 0.0f;
128128
gpu_time = 0.0f;
129+
encoding_time = 0;
129130

130131
mix_rate = get_audio_mix_rate();
131132
AudioDriverDummy::get_dummy_singleton()->set_mix_rate(mix_rate);
@@ -216,11 +217,18 @@ void MovieWriter::add_frame() {
216217
gpu_time += RenderingServer::get_singleton()->viewport_get_measured_render_time_gpu(main_vp_rid);
217218

218219
AudioDriverDummy::get_dummy_singleton()->mix_audio(mix_rate / fps, audio_mix_buffer.ptr());
220+
221+
int encoding_start = Time::get_singleton()->get_ticks_usec();
219222
write_frame(vp_tex, audio_mix_buffer.ptr());
223+
int encoding_end = Time::get_singleton()->get_ticks_usec();
224+
encoding_time += encoding_end - encoding_start;
220225
}
221226

222227
void MovieWriter::end() {
228+
int encoding_start = Time::get_singleton()->get_ticks_usec();
223229
write_end();
230+
int encoding_end = Time::get_singleton()->get_ticks_usec();
231+
encoding_time += encoding_end - encoding_start;
224232

225233
// Print a report with various statistics.
226234
print_line("--------------------------------------------------------------------------------");
@@ -249,5 +257,6 @@ void MovieWriter::end() {
249257
print_line(vformat("%d frames at %d FPS (movie length: %s), recorded in %s (%d%% of real-time speed).", Engine::get_singleton()->get_frames_drawn(), fps, movie_time, real_time, (float(MAX(1, movie_time_seconds)) / MAX(1, real_time_seconds)) * 100));
250258
print_line(vformat("CPU time: %.2f seconds (average: %.2f ms/frame)", cpu_time / 1000, cpu_time / Engine::get_singleton()->get_frames_drawn()));
251259
print_line(vformat("GPU time: %.2f seconds (average: %.2f ms/frame)", gpu_time / 1000, gpu_time / Engine::get_singleton()->get_frames_drawn()));
260+
print_line(vformat("Encoding time: %.2f seconds (average: %.2f ms/frame)", encoding_time / 1000000.f, encoding_time / 1000.f / Engine::get_singleton()->get_frames_drawn()));
252261
print_line("--------------------------------------------------------------------------------");
253262
}

servers/movie_writer/movie_writer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class MovieWriter : public Object {
4343

4444
float cpu_time = 0.0f;
4545
float gpu_time = 0.0f;
46+
int encoding_time = 0;
4647

4748
String project_name;
4849

0 commit comments

Comments
 (0)