2
0
Эх сурвалжийг харах

Unlock fps during video rendering

Co-authored-by: Weypare <[email protected]>
rexim 6 сар өмнө
parent
commit
deb812e1b4
2 өөрчлөгдсөн 18 нэмэгдсэн , 19 устгасан
  1. 0 1
      src/musializer.c
  2. 18 18
      src/plug.c

+ 0 - 1
src/musializer.c

@@ -36,7 +36,6 @@ int main(void)
         SetWindowIcon(logo);
         plug_free_resource(data);
     }
-    SetTargetFPS(60);
     SetExitKey(KEY_NULL);
     InitAudioDevice();
 

+ 18 - 18
src/plug.c

@@ -71,6 +71,8 @@ MUSIALIZER_PLUG void *plug_load_resource(const char *file_path, size_t *size)
 #define FFT_SIZE (1<<13)
 #define FONT_SIZE 64
 
+#define PREVIEW_FPS 60
+
 #define RENDER_FPS 30
 #define RENDER_FACTOR 100
 #define RENDER_WIDTH (16*RENDER_FACTOR)
@@ -1245,11 +1247,23 @@ static void start_rendering_track(Track *track)
     // TODO: set the rendering output path based on the input path
     // Basically output into the same folder
     p->ffmpeg = ffmpeg_start_rendering(output_path, p->screen.texture.width, p->screen.texture.height, RENDER_FPS, track->file_path);
+    SetTargetFPS(0);
     p->rendering = true;
     p->cancel_rendering = false;
     SetTraceLogLevel(LOG_WARNING);
 }
 
+static void finish_rendering_track(Track *track)
+{
+    SetTraceLogLevel(LOG_INFO);
+    UnloadWave(p->wave);
+    UnloadWaveSamples(p->wave_samples);
+    SetTargetFPS(PREVIEW_FPS);
+    p->rendering = false;
+    fft_clean();
+    PlayMusicStream(track->music);
+}
+
 #ifdef MUSIALIZER_MICROPHONE
 static void start_capture(void)
 {
@@ -1648,12 +1662,7 @@ static void rendering_screen(void)
     NOB_ASSERT(track != NULL);
     if (p->ffmpeg == NULL) { // Starting FFmpeg process has failed for some reason
         if (IsKeyPressed(KEY_ESCAPE)) {
-            SetTraceLogLevel(LOG_INFO);
-            UnloadWave(p->wave);
-            UnloadWaveSamples(p->wave_samples);
-            p->rendering = false;
-            fft_clean();
-            PlayMusicStream(track->music);
+            finish_rendering_track(track);
         }
 
         const char *label = "FFmpeg Failure: Check the Logs";
@@ -1683,23 +1692,13 @@ static void rendering_screen(void)
                 // cause it should deallocate all the resources even in case of a failure.
                 p->ffmpeg = NULL;
             } else {
-                SetTraceLogLevel(LOG_INFO);
-                UnloadWave(p->wave);
-                UnloadWaveSamples(p->wave_samples);
-                p->rendering = false;
-                fft_clean();
-                PlayMusicStream(track->music);
+                finish_rendering_track(track);
             }
         } else if (IsKeyPressed(KEY_ESCAPE) || p->cancel_rendering) {  // Rendering is cancelled
             ffmpeg_end_rendering(p->ffmpeg, true);
             p->ffmpeg = NULL;
 
-            SetTraceLogLevel(LOG_INFO);
-            UnloadWave(p->wave);
-            UnloadWaveSamples(p->wave_samples);
-            p->rendering = false;
-            fft_clean();
-            PlayMusicStream(track->music);
+            finish_rendering_track(track);
         } else { // Rendering is going...
             // Label
             const char *label = "Rendering video...";
@@ -1840,6 +1839,7 @@ MUSIALIZER_PLUG void plug_init(void)
 
     // TODO: restore master volume between sessions
     SetMasterVolume(0.5);
+    SetTargetFPS(PREVIEW_FPS);
 }
 
 MUSIALIZER_PLUG void *plug_pre_reload(void)