hedgewars/uVideoRec.pas
changeset 14952 8e4e508d153c
parent 14914 9ab78e08a34c
child 15267 22f2fd8a3d2c
equal deleted inserted replaced
14951:c173fae0a223 14952:8e4e508d153c
    46 
    46 
    47 procedure initModule;
    47 procedure initModule;
    48 procedure freeModule;
    48 procedure freeModule;
    49 
    49 
    50 implementation
    50 implementation
    51 uses uVariables, GLunit, SDLh, SysUtils, uUtils, uIO, uMisc, uConsts, uTypes, uDebug;
    51 uses uVariables, GLunit, SDLh, SysUtils, uUtils, uIO, uMisc, uTypes, uDebug;
    52 
    52 
    53 type TAddFileLogRaw = procedure (s: pchar); cdecl;
    53 type TAddFileLogRaw = procedure (s: pchar); cdecl;
    54 const AvwrapperLibName = 'libavwrapper';
    54 const AvwrapperLibName = 'libavwrapper';
    55 
    55 
    56 function AVWrapper_Init(
    56 function AVWrapper_Init(
   160     AddFileLog('StopVideoRecording');
   160     AddFileLog('StopVideoRecording');
   161     FreeMem(RGB_Buffer, 4*numPixels);
   161     FreeMem(RGB_Buffer, 4*numPixels);
   162     Close(cameraFile);
   162     Close(cameraFile);
   163     if AVWrapper_Close() < 0 then
   163     if AVWrapper_Close() < 0 then
   164         begin
   164         begin
   165         AddFileLog('AVWrapper_Close() has failed.');
   165         OutError('AVWrapper_Close() has failed.', true);
   166         halt(HaltVideoRec);
       
   167         end;
   166         end;
   168 {$IOCHECKS OFF}
   167 {$IOCHECKS OFF}
   169     if FileExists(cameraFileName) then
   168     if FileExists(cameraFileName) then
   170         DeleteFile(cameraFileName)
   169         DeleteFile(cameraFileName)
   171     else
   170     else
   182     // read pixels from OpenGL
   181     // read pixels from OpenGL
   183     glReadPixels(0, 0, cScreenWidth, cScreenHeight, GL_RGBA, GL_UNSIGNED_BYTE, RGB_Buffer);
   182     glReadPixels(0, 0, cScreenWidth, cScreenHeight, GL_RGBA, GL_UNSIGNED_BYTE, RGB_Buffer);
   184 
   183 
   185     if AVWrapper_WriteFrame(RGB_Buffer) < 0 then
   184     if AVWrapper_WriteFrame(RGB_Buffer) < 0 then
   186         begin
   185         begin
   187         AddFileLog('AVWrapper_WriteFrame(RGB_Buffer) has failed.');
   186         OutError('AVWrapper_WriteFrame(RGB_Buffer) has failed.', true);
   188         halt(HaltVideoRec);
       
   189         end;
   187         end;
   190 
   188 
   191     // inform frontend that we have encoded new frame
   189     // inform frontend that we have encoded new frame
   192     s[0]:= #3;
   190     s[0]:= #3;
   193     s[1]:= 'p'; // p for progress
   191     s[1]:= 'p'; // p for progress