Calculate EncodedImageBuffer's hash in generate time 20/274220/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 25 Apr 2022 04:26:46 +0000 (13:26 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 25 Apr 2022 04:26:46 +0000 (13:26 +0900)
Change-Id: I3afb828d14372f68145c1fdca4db8e52ed31f9c2
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali-adaptor/utc-Dali-EncodedImageBuffer.cpp
dali/internal/imaging/common/encoded-image-buffer-impl.cpp
dali/internal/imaging/common/encoded-image-buffer-impl.h
dali/public-api/adaptor-framework/encoded-image-buffer.cpp
dali/public-api/adaptor-framework/encoded-image-buffer.h

index 8bb9086..36b3f4f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  */
 
-#include <stdlib.h>
-#include <unistd.h>
-#include <dali/dali.h>
 #include <dali-test-suite-utils.h>
+#include <dali/dali.h>
 #include <dali/public-api/adaptor-framework/encoded-image-buffer.h>
+#include <stdlib.h>
+#include <unistd.h>
 
 using namespace Dali;
 
@@ -65,7 +65,7 @@ int UtcDaliEncodedImageBufferCopyConstructor(void)
   EncodedImageBuffer buffer = EncodedImageBuffer::New(tinybuffer());
   EncodedImageBuffer bufferCopy(buffer);
 
-  DALI_TEST_EQUALS( (bool)bufferCopy, true, TEST_LOCATION );
+  DALI_TEST_EQUALS((bool)bufferCopy, true, TEST_LOCATION);
   END_TEST;
 }
 
@@ -74,10 +74,10 @@ int UtcDaliEncodedImageBufferAssignmentOperator(void)
   EncodedImageBuffer buffer = EncodedImageBuffer::New(tinybuffer());
 
   EncodedImageBuffer buffer2;
-  DALI_TEST_EQUALS( (bool)buffer2, false, TEST_LOCATION );
+  DALI_TEST_EQUALS((bool)buffer2, false, TEST_LOCATION);
 
   buffer2 = buffer;
-  DALI_TEST_EQUALS( (bool)buffer2, true, TEST_LOCATION );
+  DALI_TEST_EQUALS((bool)buffer2, true, TEST_LOCATION);
 
   END_TEST;
 }
@@ -97,8 +97,25 @@ int UtcDaliEncodedImageBufferGetRawBuffer(void)
   EncodedImageBuffer::RawBufferType::Iterator jter = getBuffer.Begin();
   for(; iter != originBuffer.End(); ++iter, ++jter)
   {
-    DALI_TEST_EQUALS(*iter, *jter, TEST_LOCATION );
+    DALI_TEST_EQUALS(*iter, *jter, TEST_LOCATION);
   }
 
   END_TEST;
 }
+
+int UtcDaliEncodedImageBufferGetHash(void)
+{
+  EncodedImageBuffer buffer1 = EncodedImageBuffer::New(tinybuffer());
+  EncodedImageBuffer buffer2 = EncodedImageBuffer::New(tinybuffer());
+  EncodedImageBuffer buffer3 = EncodedImageBuffer::New(EncodedImageBuffer::RawBufferType()); //< EmptyBuffer
+
+  tet_infoline("Test different encoded buffer with same data has same hash value.");
+  DALI_TEST_CHECK(buffer1 != buffer2);
+  DALI_TEST_CHECK(buffer1.GetHash() == buffer2.GetHash());
+
+  tet_infoline("Test hash with empty buffer.");
+  DALI_TEST_CHECK(buffer1.GetHash() != buffer3.GetHash());
+  DALI_TEST_CHECK(buffer2.GetHash() != buffer3.GetHash());
+
+  END_TEST;
+}
\ No newline at end of file
index 1967bcb..2f1a799 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 // CLASS HEADER
 #include "encoded-image-buffer-impl.h"
 
+// EXTERNAL INCLUDE
+#include <dali/devel-api/common/hash.h>
+
 namespace Dali
 {
 namespace Internal
 {
-
 EncodedImageBuffer::EncodedImageBuffer(const RawBufferType& buffer)
 : mBuffer(buffer)
 {
+  mBufferHash = CalculateHash(mBuffer);
 }
 
 EncodedImageBuffer::~EncodedImageBuffer()
@@ -44,6 +47,11 @@ const EncodedImageBuffer::RawBufferType& EncodedImageBuffer::GetRawBuffer() cons
   return mBuffer;
 }
 
+const std::size_t EncodedImageBuffer::GetHash() const
+{
+  return mBufferHash;
+}
+
 } // namespace Internal
 
 } // namespace Dali
index 2ea471f..2c8e924 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_ENCODED_IMAGE_BUFFER_IMPL_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 
 // EXTERNAL INCLUDES
+#include <dali/public-api/common/dali-vector.h>
 #include <dali/public-api/common/intrusive-ptr.h>
 #include <dali/public-api/object/base-object.h>
-#include <dali/public-api/common/dali-vector.h>
 
 // INTERNAL INCLUDES
-#include <dali/public-api/dali-adaptor-common.h>
 #include <dali/public-api/adaptor-framework/encoded-image-buffer.h>
+#include <dali/public-api/dali-adaptor-common.h>
 
 namespace Dali
 {
@@ -51,6 +51,11 @@ public:
    */
   const RawBufferType& GetRawBuffer() const;
 
+  /**
+   * @copydoc Dali::EncodedImageBuffer::GetHash
+   */
+  const std::size_t GetHash() const;
+
 protected:
   /**
    * Destructor
@@ -66,6 +71,7 @@ private:
 
 private:
   Dali::Vector<uint8_t> mBuffer;
+  std::size_t           mBufferHash;
 };
 
 } // namespace Internal
index ddad181..4b34148 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -46,6 +46,11 @@ const EncodedImageBuffer::RawBufferType& EncodedImageBuffer::GetRawBuffer() cons
   return GetImplementation(*this).GetRawBuffer();
 }
 
+const std::size_t EncodedImageBuffer::GetHash() const
+{
+  return GetImplementation(*this).GetHash();
+}
+
 EncodedImageBuffer& EncodedImageBuffer::operator=(const EncodedImageBuffer& handle)
 {
   BaseHandle::operator=(handle);
index 6ab6b4d..3e1f65c 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef DALI_ENCODED_IMAGE_BUFFER_H
 #define DALI_ENCODED_IMAGE_BUFFER_H
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +18,8 @@
  */
 
 // EXTERNAL INCLUDES
-#include <dali/public-api/object/base-handle.h>
 #include <dali/public-api/common/dali-vector.h>
+#include <dali/public-api/object/base-handle.h>
 
 // INTERNAL INCLUDES
 #include <dali/public-api/dali-adaptor-common.h>
@@ -84,6 +84,13 @@ public:
    */
   const RawBufferType& GetRawBuffer() const;
 
+  /**
+   * @brief Get the hash value of raw buffer
+   *
+   * @return A hash value of raw buffer.
+   */
+  const std::size_t GetHash() const;
+
 public: // Not intended for developer use
   explicit DALI_INTERNAL EncodedImageBuffer(Internal::EncodedImageBuffer* impl);
 };