diff options
| -rw-r--r-- | code/client/cl_avi.c | 21 | ||||
| -rw-r--r-- | code/renderer/tr_init.c | 15 | 
2 files changed, 20 insertions, 16 deletions
| diff --git a/code/client/cl_avi.c b/code/client/cl_avi.c index 1806b4f..0be5fa5 100644 --- a/code/client/cl_avi.c +++ b/code/client/cl_avi.c @@ -168,7 +168,7 @@ static ID_INLINE void END_CHUNK( void )    afd.chunkStackTop--;    bufIndex = afd.chunkStack[ afd.chunkStackTop ];    bufIndex += 4; -  WRITE_4BYTES( endIndex - bufIndex - 1 ); +  WRITE_4BYTES( endIndex - bufIndex - 4 );    bufIndex = endIndex;    bufIndex = PAD( bufIndex, 2 );  } @@ -223,7 +223,7 @@ void CL_WriteAVIHeader( void )            if( afd.motionJpeg )              WRITE_STRING( "MJPG" );            else -            WRITE_STRING( " BGR" ); +            WRITE_4BYTES( 0 );                  // BI_RGB            WRITE_4BYTES( 0 );                    //dwFlags            WRITE_4BYTES( 0 );                    //dwPriority @@ -248,15 +248,18 @@ void CL_WriteAVIHeader( void )            WRITE_4BYTES( afd.width );            //biWidth            WRITE_4BYTES( afd.height );           //biHeight            WRITE_2BYTES( 1 );                    //biPlanes -          WRITE_2BYTES( 24 );                   //biBitCount +          WRITE_2BYTES( 32 );                   //biBitCount -          if( afd.motionJpeg )                        //biCompression +          if( afd.motionJpeg )   {              //biCompression              WRITE_STRING( "MJPG" ); -          else -            WRITE_STRING( " BGR" ); - -          WRITE_4BYTES( afd.width * +            WRITE_4BYTES( afd.width *                afd.height );                     //biSizeImage +          } else { +            WRITE_4BYTES( 0 );                  // BI_RGB +            WRITE_4BYTES( afd.width * +            afd.height*4 );                     //biSizeImage +          } +            WRITE_4BYTES( 0 );                    //biXPelsPetMeter            WRITE_4BYTES( 0 );                    //biYPelsPetMeter            WRITE_4BYTES( 0 );                    //biClrUsed @@ -485,7 +488,7 @@ void CL_WriteAVIVideoFrame( const byte *imageBuffer, int size )    // Index    bufIndex = 0;    WRITE_STRING( "00dc" );           //dwIdentifier -  WRITE_4BYTES( 0 );                //dwFlags +  WRITE_4BYTES( 0x00000010 );       //dwFlags (all frames are KeyFrames)    WRITE_4BYTES( chunkOffset );      //dwOffset    WRITE_4BYTES( size );             //dwLength    SafeFS_Write( buffer, 16, afd.idxF ); diff --git a/code/renderer/tr_init.c b/code/renderer/tr_init.c index 1b1bfc0..87f47f1 100644 --- a/code/renderer/tr_init.c +++ b/code/renderer/tr_init.c @@ -715,6 +715,7 @@ const void *RB_TakeVideoFrameCmd( const void *data )  	const videoFrameCommand_t	*cmd;  	int												frameSize;  	int												i; +	char												swapper;  	cmd = (const videoFrameCommand_t *)data; @@ -729,22 +730,22 @@ const void *RB_TakeVideoFrameCmd( const void *data )  	{  		frameSize = SaveJPGToBuffer( cmd->encodeBuffer, 95,  				cmd->width, cmd->height, cmd->captureBuffer ); +		ri.CL_WriteAVIVideoFrame( cmd->encodeBuffer, frameSize );  	}  	else  	{  		frameSize = cmd->width * cmd->height * 4; -		// Vertically flip the image -		for( i = 0; i < cmd->height; i++ ) +		for( i = 0; i < frameSize; i = i + 4)          // Swap R and B  		{ -			Com_Memcpy( &cmd->encodeBuffer[ i * ( cmd->width * 4 ) ], -					&cmd->captureBuffer[ ( cmd->height - i - 1 ) * ( cmd->width * 4 ) ], -					cmd->width * 4 ); +			swapper = cmd->captureBuffer[ i ]; +			cmd->captureBuffer[ i ] = cmd->captureBuffer[ i + 2 ]; +			cmd->captureBuffer[ i + 2 ] = swapper; +  		} +		ri.CL_WriteAVIVideoFrame( cmd->captureBuffer, frameSize );  	} -	ri.CL_WriteAVIVideoFrame( cmd->encodeBuffer, frameSize ); -  	return (const void *)(cmd + 1);	  } | 
