From: Toni Wilen Date: Fri, 11 Jan 2019 18:01:50 +0000 (+0200) Subject: Prevent audio pitch change. avioutput_fps may change when entering GUI. X-Git-Tag: 4200~85 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=e0d6c4a85157da81eef68e91a5f7cfb434ff5b07;p=francis%2Fwinuae.git Prevent audio pitch change. avioutput_fps may change when entering GUI. --- diff --git a/od-win32/avioutput.cpp b/od-win32/avioutput.cpp index 3d890878..82dc75db 100644 --- a/od-win32/avioutput.cpp +++ b/od-win32/avioutput.cpp @@ -61,6 +61,7 @@ static uae_u64 total_avi_size; static int partcnt; static int first_frame; static int aviout_monid; +static int fps_in_use; int avioutput_audio, avioutput_video, avioutput_enabled, avioutput_requested; static int videoallocated; @@ -68,7 +69,7 @@ static int videoallocated; static int aviout_width_out, aviout_height_out; static int aviout_xoffset_out, aviout_yoffset_out; int avioutput_width, avioutput_height, avioutput_bits; -int avioutput_fps = VBLANK_HZ_PAL; +static int avioutput_fps = VBLANK_HZ_PAL; int avioutput_framelimiter = 0, avioutput_nosoundoutput = 0; int avioutput_nosoundsync = 1, avioutput_originalsize = 0; int avioutput_split_files = 1; @@ -1267,8 +1268,8 @@ static int AVIOutput_AVIWriteVideo_Thread (struct avientry *ae) } - if ((frame_count % (avioutput_fps * 10)) == 0) - write_log (_T("AVIOutput: %d frames, (%d fps)\n"), frame_count, avioutput_fps); + if ((frame_count % (fps_in_use * 10)) == 0) + write_log (_T("AVIOutput: %d frames, (%d fps)\n"), frame_count, fps_in_use); return 1; error: @@ -1494,6 +1495,7 @@ static void AVIOutput_Begin2(bool fullstart, bool immediate) gui_message (_T("acmStreamOpen() FAILED (%X)\n"), err); goto error; } + audio_validated = true; } if (avioutput_video) { @@ -1562,6 +1564,7 @@ static void AVIOutput_Begin2(bool fullstart, bool immediate) init_comm_pipe (&queuefull, 20, 1); avientryindex = -1; alive = -1; + fps_in_use = avioutput_fps; uae_start_thread (_T("aviworker"), AVIOutput_worker, NULL, NULL); write_log (_T("AVIOutput enabled: monitor=%d video=%d audio=%d path='%s'\n"), aviout_monid, avioutput_video, avioutput_audio, avioutput_filename_inuse); return; @@ -1797,7 +1800,7 @@ bool frame_drawn(int monid) bytesperframe = wfxSrc.Format.nChannels * 2; StreamSizeAudioGot += avi_sndbuffered / bytesperframe; unsigned int lastexpected = (unsigned int)StreamSizeAudioExpected; - StreamSizeAudioExpected += ((double)wfxSrc.Format.nSamplesPerSec) / avioutput_fps; + StreamSizeAudioExpected += ((double)wfxSrc.Format.nSamplesPerSec) / fps_in_use; if (avioutput_video) { int idiff = StreamSizeAudioGot - StreamSizeAudioExpected; if ((timeframes % 5) == 0) diff --git a/od-win32/avioutput.h b/od-win32/avioutput.h index f61f6632..01e4748c 100644 --- a/od-win32/avioutput.h +++ b/od-win32/avioutput.h @@ -9,7 +9,6 @@ extern int avioutput_video, avioutput_audio, avioutput_enabled, avioutput_requested; extern int avioutput_width, avioutput_height, avioutput_bits; -extern int avioutput_fps; extern int avioutput_framelimiter, avioutput_nosoundoutput; extern int avioutput_nosoundsync, avioutput_originalsize; extern int screenshot_originalsize;