--- 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();