diff --git a/server/TracyFileWrite.hpp b/server/TracyFileWrite.hpp index 4b22ba05..05901c21 100644 --- a/server/TracyFileWrite.hpp +++ b/server/TracyFileWrite.hpp @@ -2,6 +2,7 @@ #define __TRACYFILEWRITE_HPP__ #include +#include #include #include @@ -16,10 +17,17 @@ namespace tracy class FileWrite { public: - static FileWrite* Open( const char* fn, bool hc = false ) + enum class Compression + { + Fast, + Slow, + Extreme + }; + + static FileWrite* Open( const char* fn, Compression comp = Compression::Fast ) { auto f = fopen( fn, "wb" ); - return f ? new FileWrite( f, hc ) : nullptr; + return f ? new FileWrite( f, comp ) : nullptr; } ~FileWrite() @@ -47,7 +55,7 @@ public: } private: - FileWrite( FILE* f, bool hc ) + FileWrite( FILE* f, Compression comp ) : m_stream( nullptr ) , m_streamHC( nullptr ) , m_file( f ) @@ -55,13 +63,21 @@ private: , m_second( m_bufData[1] ) , m_offset( 0 ) { - if( hc ) - { - m_streamHC = LZ4_createStreamHC(); - } - else + switch( comp ) { + case Compression::Fast: m_stream = LZ4_createStream(); + break; + case Compression::Slow: + m_streamHC = LZ4_createStreamHC(); + break; + case Compression::Extreme: + m_streamHC = LZ4_createStreamHC(); + LZ4_resetStreamHC( m_streamHC, LZ4HC_CLEVEL_OPT_MIN ); + break; + default: + assert( false ); + break; } fwrite( Lz4Header, 1, sizeof( Lz4Header ), m_file ); diff --git a/update/src/update.cpp b/update/src/update.cpp index 51b8fe05..113c0e8a 100644 --- a/update/src/update.cpp +++ b/update/src/update.cpp @@ -52,7 +52,7 @@ int main( int argc, char** argv ) { tracy::Worker worker( *f ); - auto w = std::unique_ptr( tracy::FileWrite::Open( output, hc ) ); + auto w = std::unique_ptr( tracy::FileWrite::Open( output, hc ? tracy::FileWrite::Compression::Slow : tracy::FileWrite::Compression::Fast ) ); if( !w ) { fprintf( stderr, "Cannot open output file!\n" );