Skip to content

Commit 15cf953

Browse files
berarmaCalinou
andcommitted
Suggestions from reviewer
Co-authored-by: Hugo Locurcio <[email protected]>
1 parent 56f60ae commit 15cf953

File tree

6 files changed

+21
-25
lines changed

6 files changed

+21
-25
lines changed

doc/classes/ProjectSettings.xml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,18 +1114,15 @@
11141114
If you need to encode to a different format or pipe a stream through third-party software, you can extend this [MovieWriter] class to create your own movie writers.
11151115
When using PNG output, the frame number will be appended at the end of the file name. It starts from 0 and is padded with 8 digits to ensure correct sorting and easier processing. For example, if the output path is [code]/tmp/hello.png[/code], the first two frames will be [code]/tmp/hello00000000.png[/code] and [code]/tmp/hello00000001.png[/code]. The audio will be saved at [code]/tmp/hello.wav[/code].
11161116
</member>
1117-
<member name="editor/movie_writer/ogv/audio_quality" type="float" setter="" getter="" default="0.2">
1117+
<member name="editor/movie_writer/ogv/audio_quality" type="float" setter="" getter="" default="0.5">
11181118
The audio encoding quality to use when writing Vorbis audio to a file, between [code]-0.1[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/code] values result in better-sounding output at the cost of larger file sizes. Even at quality [code]1.0[/code], compression remains lossy.
1119-
[b]Note:[/b] This does not affect video quality.
1119+
[b]Note:[/b] This does not affect video quality, which is controlled by [member editor/movie_writer/video_quality] instead.
11201120
</member>
1121-
<member name="editor/movie_writer/ogv/encoding_speed" type="int" setter="" getter="" default="3">
1122-
Trades speed for compression. Speed [code]1[/code] is the slowest but provides the best compression. Speed [code]4[/code] is the fastest but provides the worst compression.
1121+
<member name="editor/movie_writer/ogv/encoding_speed" type="int" setter="" getter="" default="4">
1122+
The tradeoff between encoding speed and compression efficiency. Speed [code]1[/code] is the slowest but provides the best compression. Speed [code]4[/code] is the fastest but provides the worst compression. Video quality is generally not affected significantly by this setting.
11231123
</member>
11241124
<member name="editor/movie_writer/ogv/keyframe_interval" type="int" setter="" getter="" default="64">
1125-
Forces keyframes at the specified interval. Higher values can improve compression up to a certain level at the expense of some seek latency.
1126-
</member>
1127-
<member name="editor/movie_writer/ogv/video_bitrate" type="int" setter="" getter="" default="0">
1128-
When greater than [code]0[/code] CBR is used instead of VBR and sets the target bitrate for the video encoder in KB. The higher the value the better video quality and bigger file size. VBR should give better results and it's thus recommended to leave this value at [code]0[/code].
1125+
Forces keyframes at the specified interval (in frame count). Higher values can improve compression up to a certain level at the expense of higher latency when seeking.
11291126
</member>
11301127
<member name="editor/movie_writer/speaker_mode" type="int" setter="" getter="" default="0">
11311128
The speaker mode to use in the recorded audio when writing a movie. See [enum AudioServer.SpeakerMode] for possible values.

editor/editor_property_name_processor.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
245245
//capitalize_string_remaps["msec"] = "(msec)"; // Unit.
246246
capitalize_string_remaps["navmesh"] = "NavMesh";
247247
capitalize_string_remaps["nfc"] = "NFC";
248+
capitalize_string_remaps["ogv"] = "OGV";
248249
capitalize_string_remaps["oidn"] = "OIDN";
249250
capitalize_string_remaps["ok"] = "OK";
250251
capitalize_string_remaps["opengl"] = "OpenGL";

modules/theora/movie_writer_ogv.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,6 @@ MovieWriterOGV::MovieWriterOGV() {
423423
speaker_mode = AudioServer::SpeakerMode(int(GLOBAL_GET("editor/movie_writer/speaker_mode")));
424424
video_quality = GLOBAL_GET("editor/movie_writer/video_quality");
425425
audio_quality = GLOBAL_GET("editor/movie_writer/ogv/audio_quality");
426-
speed = 1 + (int)GLOBAL_GET("editor/movie_writer/ogv/encoding_speed");
427-
video_bitrate = 1000 * (int)GLOBAL_GET("editor/movie_writer/ogv/video_bitrate");
426+
speed = GLOBAL_GET("editor/movie_writer/ogv/encoding_speed");
428427
keyframe_frequency = GLOBAL_GET("editor/movie_writer/ogv/keyframe_interval");
429428
}

modules/theora/movie_writer_ogv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class MovieWriterOGV : public MovieWriter {
5151
Ref<FileAccess> f;
5252

5353
// Vorbis quality -0.1 to 1 (-0.1 yields smallest files but lowest fidelity; 1 yields highest fidelity but large files. '0.2' is a reasonable default).
54-
float audio_quality = 0.2;
54+
float audio_quality = 0.5;
5555

5656
// Bitrate target for Theora video.
5757
int video_bitrate = 0;

servers/movie_writer/movie_writer.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +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;
129+
encoding_time_usec = 0;
130130

131131
mix_rate = get_audio_mix_rate();
132132
AudioDriverDummy::get_dummy_singleton()->set_mix_rate(mix_rate);
@@ -157,10 +157,9 @@ void MovieWriter::_bind_methods() {
157157
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/mix_rate", PROPERTY_HINT_RANGE, "8000,192000,1,suffix:Hz"), 48000);
158158
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/speaker_mode", PROPERTY_HINT_ENUM, "Stereo,3.1,5.1,7.1"), 0);
159159
GLOBAL_DEF(PropertyInfo(Variant::FLOAT, "editor/movie_writer/video_quality", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), 0.75);
160-
GLOBAL_DEF(PropertyInfo(Variant::FLOAT, "editor/movie_writer/ogv/audio_quality", PROPERTY_HINT_RANGE, "-0.1,1.0,0.01"), 0.2);
161-
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/ogv/encoding_speed", PROPERTY_HINT_ENUM, "1,2,3,4"), 3);
160+
GLOBAL_DEF(PropertyInfo(Variant::FLOAT, "editor/movie_writer/ogv/audio_quality", PROPERTY_HINT_RANGE, "-0.1,1.0,0.01"), 0.5);
161+
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/ogv/encoding_speed", PROPERTY_HINT_ENUM, "Fastest (Lowest Efficiency):4,Fast (Low Efficiency):3,Slow (High Efficiency):2,Slowest (Highest Efficiency):1"), 4);
162162
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/ogv/keyframe_interval", PROPERTY_HINT_RANGE, "1,1024,1"), 64);
163-
GLOBAL_DEF(PropertyInfo(Variant::INT, "editor/movie_writer/ogv/video_bitrate", PROPERTY_HINT_RANGE, "0,100000,1000"), 0);
164163

165164
// Used by the editor.
166165
GLOBAL_DEF_BASIC("editor/movie_writer/movie_file", "");
@@ -218,17 +217,17 @@ void MovieWriter::add_frame() {
218217

219218
AudioDriverDummy::get_dummy_singleton()->mix_audio(mix_rate / fps, audio_mix_buffer.ptr());
220219

221-
int encoding_start = Time::get_singleton()->get_ticks_usec();
220+
uint64_t encoding_start_usec = Time::get_singleton()->get_ticks_usec();
222221
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;
222+
uint64_t encoding_end_usec = Time::get_singleton()->get_ticks_usec();
223+
encoding_time_usec += encoding_end_usec - encoding_start_usec;
225224
}
226225

227226
void MovieWriter::end() {
228-
int encoding_start = Time::get_singleton()->get_ticks_usec();
227+
uint64_t encoding_start_usec = Time::get_singleton()->get_ticks_usec();
229228
write_end();
230-
int encoding_end = Time::get_singleton()->get_ticks_usec();
231-
encoding_time += encoding_end - encoding_start;
229+
uint64_t encoding_end_usec = Time::get_singleton()->get_ticks_usec();
230+
encoding_time_usec += encoding_end_usec - encoding_start_usec;
232231

233232
// Print a report with various statistics.
234233
print_line("--------------------------------------------------------------------------------");
@@ -255,8 +254,8 @@ void MovieWriter::end() {
255254
String::num(real_time_seconds % 60, 0).pad_zeros(2));
256255

257256
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));
258-
print_line(vformat("CPU time: %.2f seconds (average: %.2f ms/frame)", cpu_time / 1000, cpu_time / Engine::get_singleton()->get_frames_drawn()));
259-
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()));
257+
print_line(vformat("CPU render time: %.2f seconds (average: %.2f ms/frame)", cpu_time / 1000, cpu_time / Engine::get_singleton()->get_frames_drawn()));
258+
print_line(vformat("GPU render time: %.2f seconds (average: %.2f ms/frame)", gpu_time / 1000, gpu_time / Engine::get_singleton()->get_frames_drawn()));
259+
print_line(vformat("Encoding time: %.2f seconds (average: %.2f ms/frame)", encoding_time_usec / 1000000.f, encoding_time_usec / 1000.f / Engine::get_singleton()->get_frames_drawn()));
261260
print_line("--------------------------------------------------------------------------------");
262261
}

servers/movie_writer/movie_writer.h

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

4444
float cpu_time = 0.0f;
4545
float gpu_time = 0.0f;
46-
int encoding_time = 0;
46+
uint64_t encoding_time_usec = 0;
4747

4848
String project_name;
4949

0 commit comments

Comments
 (0)