diff -r f725701ca529 -r c7df0d96da81 hedgewars/uVideoRec.pas --- a/hedgewars/uVideoRec.pas Mon Jul 16 23:27:15 2018 +0200 +++ b/hedgewars/uVideoRec.pas Tue Jul 17 12:17:11 2018 +0200 @@ -73,7 +73,8 @@ numPixels: LongWord; startTime, numFrames, curTime, progress, maxProgress: LongWord; soundFilePath: shortstring; - thumbnailSaved : Boolean; + thumbnailSaved: boolean; + recordAudio: boolean; function BeginVideoRecording: Boolean; var filename, desc: shortstring; @@ -113,7 +114,12 @@ desc:= desc + 'prefix[' + RecPrefix + ']prefix'; filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix; - soundFilePath:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw'; + + recordAudio:= (cAudioCodec <> 'no'); + if recordAudio then + soundFilePath:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw' + else + soundFilePath:= ''; if checkFails(AVWrapper_Init(@AddFileLogRaw , PChar(ansistring(filename)) @@ -149,7 +155,8 @@ if AVWrapper_Close() < 0 then halt(-1); Erase(cameraFile); - DeleteFile(soundFilePath); + if recordAudio then + DeleteFile(soundFilePath); SendIPC(_S'v'); // inform frontend that we finished end; @@ -268,43 +275,49 @@ CopyFile(recordFileName, UserPathPrefix + '/VideoTemp/' + RecPrefix + '.hwd'); end; - Mix_QuerySpec(@frequency, @format, @channels); - AddFileLog('sound: frequency = ' + IntToStr(frequency) + ', format = ' + IntToStr(format) + ', channels = ' + IntToStr(channels)); - if format <> $8010 then - begin - // TODO: support any audio format - AddFileLog('Error: Unexpected audio format ' + IntToStr(format)); - exit; - end; + if cIsSoundEnabled then + begin + Mix_QuerySpec(@frequency, @format, @channels); + AddFileLog('sound: frequency = ' + IntToStr(frequency) + ', format = ' + IntToStr(format) + ', channels = ' + IntToStr(channels)); + if format <> $8010 then + begin + // TODO: support any audio format + AddFileLog('Error: Unexpected audio format ' + IntToStr(format)); + exit; + end; {$IOCHECKS OFF} - // create sound file - filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw'; - Assign(audioFile, filename); - Rewrite(audioFile, 1); - if IOResult <> 0 then - begin - AddFileLog('Error: Could not write to ' + filename); - exit; - end; + // create sound file + filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw'; + Assign(audioFile, filename); + Rewrite(audioFile, 1); + if IOResult <> 0 then + begin + AddFileLog('Error: Could not write to ' + filename); + exit; + end; + end; // create file with camera positions filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.txtout'; Assign(cameraFile, filename); Rewrite(cameraFile); if IOResult <> 0 then - begin + begin AddFileLog('Error: Could not write to ' + filename); exit; - end; + end; - // save audio parameters in sound file - BlockWrite(audioFile, frequency, 4); - BlockWrite(audioFile, channels, 4); + if cIsSoundEnabled then + begin + // save audio parameters in sound file + BlockWrite(audioFile, frequency, 4); + BlockWrite(audioFile, channels, 4); {$IOCHECKS ON} - // register callback for actual audio recording - Mix_SetPostMix(@RecordPostMix, nil); + // register callback for actual audio recording + Mix_SetPostMix(@RecordPostMix, nil); + end; startTime:= SDL_GetTicks(); flagPrerecording:= true; @@ -315,12 +328,18 @@ AddFileLog('StopPreRecording'); flagPrerecording:= false; - // call SDL_LockAudio because RecordPostMix may be executing right now - SDL_LockAudio(); - Close(audioFile); + if cIsSoundEnabled then + begin + // call SDL_LockAudio because RecordPostMix may be executing right now + SDL_LockAudio(); + Close(audioFile); + end Close(cameraFile); - Mix_SetPostMix(nil, nil); - SDL_UnlockAudio(); + if cIsSoundEnabled then + begin + Mix_SetPostMix(nil, nil); + SDL_UnlockAudio(); + end; if not thumbnailSaved then SaveThumbnail();