Esempio n. 1
0
 void Lut1D::finalize() const
 {
     m_isNoOp = IsLut1DNoOp(*this, maxerror, errortype);
     
     if(m_isNoOp)
     {
         m_cacheID = "<NULL 1D>";
     }
     else
     {
         md5_state_t state;
         md5_byte_t digest[16];
         
         md5_init(&state);
         md5_append(&state, (const md5_byte_t *)from_min, 3*sizeof(float));
         md5_append(&state, (const md5_byte_t *)from_max, 3*sizeof(float));
         
         for(int i=0; i<3; ++i)
         {
             md5_append( &state, (const md5_byte_t *)&(luts[i][0]),
                 (int) (luts[i].size()*sizeof(float)) );
         }
         
         md5_finish(&state, digest);
         
         m_cacheID = GetPrintableHash(digest);
     }
 }
Esempio n. 2
0
 std::string Lut3D::getCacheID() const
 {
     AutoMutex lock(m_cacheidMutex);
     
     if(lut.empty())
         throw Exception("Cannot compute cacheID of invalid Lut3D");
     
     if(!m_cacheID.empty())
         return m_cacheID;
     
     md5_state_t state;
     md5_byte_t digest[16];
     
     md5_init(&state);
     
     md5_append(&state, (const md5_byte_t *)from_min, (int)(3*sizeof(float)));
     md5_append(&state, (const md5_byte_t *)from_max, (int)(3*sizeof(float)));
     md5_append(&state, (const md5_byte_t *)size,     (int)(3*sizeof(int)));
     md5_append(&state, (const md5_byte_t *)&lut[0],  (int)(lut.size()*sizeof(float)));
     
     md5_finish(&state, digest);
     
     m_cacheID = GetPrintableHash(digest);
     
     return m_cacheID;
 }
Esempio n. 3
0
void MatrixOpData::finalize()
{
    AutoMutex lock(m_mutex);

    std::ostringstream cacheIDStream;
    cacheIDStream << getID();

    md5_state_t state;
    md5_byte_t digest[16];

    // TODO: array and offset do not require double precison in cache.
    md5_init(&state);
    md5_append(&state,
        (const md5_byte_t *)&(getArray().getValues()[0]),
        (int)(16 * sizeof(double)));
    md5_append(&state,
        (const md5_byte_t *)getOffsets().getValues(),
        (int)(4 * sizeof(double)));
    md5_finish(&state, digest);

    cacheIDStream << GetPrintableHash(digest);
    m_cacheID = cacheIDStream.str();
}