MCPcopy Create free account
hub / github.com/ImageEngine/cortex / writeUniqueDataCompressed

Method writeUniqueDataCompressed

src/IECore/StreamIndexedIO.cpp:2550–2579  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2548}
2549
2550StreamIndexedIO::Index::WriteInfo StreamIndexedIO::Index::writeUniqueDataCompressed( const char *data, size_t size, bool prefixSize )
2551{
2552 WriteInfo writeInfo;
2553
2554 std::vector<char> compressedBuffer;
2555 size_t numBlocks = 0;
2556
2557 if ( m_compressionLevel )
2558 {
2559 numBlocks = compress( data, size, compressedBuffer, m_compressionLevel, m_compressor, m_compressionThreadCount, m_maxCompressedBlockSize );
2560 }
2561
2562 //! if compression fails or produces a buffer larger than the original
2563 //! write the original source data uncompressed
2564 if( numBlocks && !compressedBuffer.empty() && ( compressedBuffer.size() < size ) )
2565 {
2566 writeInfo.offset = writeUniqueData( compressedBuffer.data(), compressedBuffer.size(), prefixSize );
2567 writeInfo.size = compressedBuffer.size();
2568 writeInfo.numCompressedBlocks = numBlocks;
2569 }
2570 else
2571 {
2572 writeInfo.offset = writeUniqueData( data, size, prefixSize );
2573 writeInfo.size = size;
2574 writeInfo.numCompressedBlocks = 0;
2575 }
2576
2577
2578 return writeInfo;
2579}
2580
2581void StreamIndexedIO::Index::deallocateWalk( NodeBase* n )
2582{

Callers 2

writeMethod · 0.80
rawWriteMethod · 0.80

Calls 3

compressFunction · 0.85
dataMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected