From: Kyusung Cho Date: Tue, 9 Apr 2013 13:04:25 +0000 (+0900) Subject: Load issue fixed. arengine updated 0.99m. X-Git-Tag: accepted/tizen_2.1/20130425.033135~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebd0039c710f74bcc70524d9a42139ed68a7352a;p=framework%2Fosp%2Fvision.git Load issue fixed. arengine updated 0.99m. Change-Id: I1acaabc6d2650c44042a9937676a42911c9fc69f Signed-off-by: Kyusung Cho --- diff --git a/inc/FUixVisionImageFeatureManager.h b/inc/FUixVisionImageFeatureManager.h index ed105be..2036db3 100644 --- a/inc/FUixVisionImageFeatureManager.h +++ b/inc/FUixVisionImageFeatureManager.h @@ -54,6 +54,7 @@ namespace Tizen { namespace Uix { namespace Vision * imageFeatureManager.AddFeature("/opt/usr/media/Images/image3.jpg"); * imageFeatureManager.Flush(); * } + * @endcode */ class _OSP_EXPORT_ ImageFeatureManager : public Tizen::Base::Object diff --git a/lib/armv7-a/libarengine.so b/lib/armv7-a/libarengine.so index f290373..61ffcee 100755 Binary files a/lib/armv7-a/libarengine.so and b/lib/armv7-a/libarengine.so differ diff --git a/lib/x86/libarengine.so b/lib/x86/libarengine.so index f5ec076..8c631db 100755 Binary files a/lib/x86/libarengine.so and b/lib/x86/libarengine.so differ diff --git a/src/FUixVisionImageFeatureInfo.cpp b/src/FUixVisionImageFeatureInfo.cpp index 8f6e5bb..4468b2c 100644 --- a/src/FUixVisionImageFeatureInfo.cpp +++ b/src/FUixVisionImageFeatureInfo.cpp @@ -42,6 +42,8 @@ ImageFeatureInfo::~ImageFeatureInfo() Tizen::Base::String ImageFeatureInfo::GetDescription() const { + ClearLastResult(); + char ch; int length = -1; @@ -52,13 +54,13 @@ ImageFeatureInfo::GetDescription() const return Tizen::Base::String(""); } - char* pName = new char[length + 1]; + std::unique_ptr pName(new (std::nothrow) char[length + 1]); + SysTryReturn(NID_UIX, pName != null, Tizen::Base::String(""), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)) //set data to char pointer, with allocated memory - __pImageFeatureInfoImpl->GetDescription(pName, length + 1); + __pImageFeatureInfoImpl->GetDescription(pName.get(), length + 1); - Tizen::Base::String description(pName); - delete[] pName; + Tizen::Base::String description(pName.get()); return description; } @@ -78,28 +80,21 @@ Tizen::Base::ByteBuffer* ImageFeatureInfo::GetThumbnailN(void) const { int bufWidth = __pImageFeatureInfoImpl->GetThumbnailWidth(); + SysTryReturn(NID_UIX, bufWidth > 0, null, E_FAILURE, "[%s] Failed to get thumbnail width.", GetErrorMessage(E_FAILURE)); + int bufHeight = __pImageFeatureInfoImpl->GetThumbnailHeight(); + SysTryReturn(NID_UIX, bufHeight > 0, null, E_FAILURE, "[%s] Failed to get thumbnail height.", GetErrorMessage(E_FAILURE)); - while ((bufWidth > 0) && (bufHeight > 0)) - { - result res = E_FAILURE; - Tizen::Base::ByteBuffer* outBuffer = new Tizen::Base::ByteBuffer(); - if (outBuffer == null) - { - break; - } - res = outBuffer->Construct(bufWidth * bufHeight); - if (IsFailed(res)) - { - break; - } - if (__pImageFeatureInfoImpl->GetThumbnail((char*)outBuffer->GetPointer(), bufWidth, bufHeight, false)) - { - return outBuffer; - } - break; - } - return null; + std::unique_ptr pOutBuffer(new (std::nothrow) Tizen::Base::ByteBuffer()); + SysTryReturn(NID_UIX, pOutBuffer != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + + result res = pOutBuffer->Construct(bufWidth * bufHeight); + SysTryReturn(NID_UIX, res == E_SUCCESS, null, res, "[%s] Failed to construct ByteBuffer.", GetErrorMessage(res)); + + bool success = __pImageFeatureInfoImpl->GetThumbnail((char*)pOutBuffer->GetPointer(), bufWidth, bufHeight, false); + SysTryReturn(NID_UIX, success == true, null, E_FAILURE, "[%s] Failed to get thumbnail.", GetErrorMessage(E_FAILURE)); + + return pOutBuffer.release(); } bool diff --git a/src/FUixVisionImageFeatureManager.cpp b/src/FUixVisionImageFeatureManager.cpp index 072ce4b..5aeae73 100755 --- a/src/FUixVisionImageFeatureManager.cpp +++ b/src/FUixVisionImageFeatureManager.cpp @@ -103,9 +103,20 @@ ImageFeatureManager::AddFeature(const Tizen::Base::String& imagePath) { SysAssertf(__pImageFeatureManagerImpl != null, "Not yet constructed! Consruct() should be called before use."); - SysTryReturnResult(NID_UIX, !imagePath.IsEmpty(), E_INVALID_ARG, + SysTryReturn(NID_UIX, !imagePath.IsEmpty(), -1, E_INVALID_ARG, "image path must not be empty. [E_INVALID_ARG]"); + SysTryReturn(NID_UIX, Tizen::Io::File::IsFileExist(imagePath), -1, E_INVALID_ARG, + "image path must exist. [E_INVALID_ARG]"); + + Tizen::Io::FileAttributes _fileAtt; + + SysTryReturn(NID_UIX, Tizen::Io::File::GetAttributes(imagePath, _fileAtt) == E_SUCCESS, -1, E_INVALID_ARG, + "image file must have attributes. [E_INVALID_ARG]"); + + SysTryReturn(NID_UIX, !_fileAtt.IsDirectory(), -1, E_INVALID_ARG, + "image file must exist. [E_INVALID_ARG]"); + return (int) __pImageFeatureManagerImpl->AddFeature(imagePath); } @@ -114,7 +125,7 @@ ImageFeatureManager::Flush(const Tizen::Base::String* featureSetFilePath) { SysAssertf(__pImageFeatureManagerImpl != null, "Not yet constructed! Consruct() should be called before use."); - return __pImageFeatureManagerImpl->SaveDB(true, featureSetFilePath); + return __pImageFeatureManagerImpl->SaveDB(true, featureSetFilePath); } result @@ -126,6 +137,14 @@ ImageFeatureManager::Load(const Tizen::Base::String& featureSetFilePath) "feature set path must not be empty. [E_INVALID_ARG]"); SysTryReturnResult(NID_UIX, Tizen::Io::File::IsFileExist(featureSetFilePath), E_INVALID_ARG, + "feature set path must exist. [E_INVALID_ARG]"); + + Tizen::Io::FileAttributes _fileAtt; + + SysTryReturnResult(NID_UIX, Tizen::Io::File::GetAttributes(featureSetFilePath, _fileAtt) == E_SUCCESS, E_INVALID_ARG, + "feature set file must have attributes. [E_INVALID_ARG]"); + + SysTryReturnResult(NID_UIX, !_fileAtt.IsDirectory(), E_INVALID_ARG, "feature set file must exist. [E_INVALID_ARG]"); return __pImageFeatureManagerImpl->OpenDB(featureSetFilePath) ? E_SUCCESS : E_FAILURE; @@ -134,11 +153,13 @@ ImageFeatureManager::Load(const Tizen::Base::String& featureSetFilePath) Tizen::Base::Collection::IListT* ImageFeatureManager::GetSupportedImageFileFormatsListN(void) { - Tizen::Base::Collection::ArrayListT* formatList = new Tizen::Base::Collection::ArrayListT; - formatList->Add(Tizen::Media::IMG_FORMAT_BMP); - formatList->Add(Tizen::Media::IMG_FORMAT_JPG); - formatList->Add(Tizen::Media::IMG_FORMAT_PNG); - return formatList; + std::unique_ptr > pFormatList(new (std::nothrow) Tizen::Base::Collection::ArrayListT); + SysTryReturn(NID_UIX, pFormatList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + + pFormatList->Add(Tizen::Media::IMG_FORMAT_BMP); + pFormatList->Add(Tizen::Media::IMG_FORMAT_JPG); + pFormatList->Add(Tizen::Media::IMG_FORMAT_PNG); + return pFormatList.release(); } const Tizen::Uix::Vision::ImageFeatureInfo* diff --git a/src/FUixVisionQrCodeGenerator.cpp b/src/FUixVisionQrCodeGenerator.cpp index 189e35c..0916036 100644 --- a/src/FUixVisionQrCodeGenerator.cpp +++ b/src/FUixVisionQrCodeGenerator.cpp @@ -60,18 +60,20 @@ QrCodeGenerator::EncodeToBufferN(const Tizen::Base::String& message, QrCodeMode Tizen::Text::Utf8Encoding utf8; __pQrCodeGeneratorImpl->Encode((char*) utf8.GetBytesN(message)->GetPointer(), mode, error_level, compatibility); + __pQrCodeGeneratorImpl->GetSize(width, height); - Tizen::Base::ByteBuffer* buffer = new Tizen::Base::ByteBuffer; - buffer->Construct(width * height); + std::unique_ptr pBuffer(new (std::nothrow) Tizen::Base::ByteBuffer()); + SysTryReturn(NID_UIX, pBuffer != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + + pBuffer->Construct(width * height); - if (__pQrCodeGeneratorImpl->SaveToBuffer((unsigned char*) buffer->GetPointer())) + if (__pQrCodeGeneratorImpl->SaveToBuffer((unsigned char*) pBuffer->GetPointer())) { - return buffer; + return pBuffer.release(); } else { - delete buffer; return null; } @@ -100,11 +102,15 @@ QrCodeGenerator::EncodeToFile(const Tizen::Base::String& message, QrCodeMode mod Tizen::Base::Collection::IListT* QrCodeGenerator::GetSupportedImageFileFormatsListN(void) { - Tizen::Base::Collection::ArrayListT* formatList = new Tizen::Base::Collection::ArrayListT; - formatList->Add(Tizen::Media::IMG_FORMAT_BMP); - formatList->Add(Tizen::Media::IMG_FORMAT_JPG); - formatList->Add(Tizen::Media::IMG_FORMAT_PNG); - return formatList; + std::unique_ptr > pFormatList( + new (std::nothrow) Tizen::Base::Collection::ArrayListT); + SysTryReturn(NID_UIX, pFormatList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + + + pFormatList->Add(Tizen::Media::IMG_FORMAT_BMP); + pFormatList->Add(Tizen::Media::IMG_FORMAT_JPG); + pFormatList->Add(Tizen::Media::IMG_FORMAT_PNG); + return pFormatList.release(); } } } } //Tizen::Uix::Vision diff --git a/src/FUixVision_ImageFeatureInfoImpl.cpp b/src/FUixVision_ImageFeatureInfoImpl.cpp index 73b2dd0..48369e7 100644 --- a/src/FUixVision_ImageFeatureInfoImpl.cpp +++ b/src/FUixVision_ImageFeatureInfoImpl.cpp @@ -72,38 +72,6 @@ bool _ImageFeatureInfoImpl::GetThumbnail(char* outBuffer, int bufWidth, int bufHeight, bool fit) const { return __imageFeatureDatabaseInfo.getThumbnailImage(outBuffer, bufWidth, bufHeight, fit); - - //Code for using in next arengine version - /* - char* tempBuffer = new char[bufWidth * bufHeight * 4]; - bool res = __imageFeatureDatabaseInfo.getThumbnailImage(tempBuffer, bufWidth, bufHeight, fit); - - if(!res) - { - delete[] tempBuffer; - return false; - } - - Tizen::Media::ImageBuffer imBuf; - result r = imBuf.Construct(bufWidth, bufHeight, Tizen::Media::MEDIA_PIXEL_FORMAT_BGRA8888, (byte*)tempBuffer, bufWidth * bufHeight * 4); - delete[] tempBuffer; - if(IsFailed(r)) - { - return false; - } - - Tizen::Base::ByteBuffer* yuvBuf = imBuf.GetByteBufferN(Tizen::Media::MEDIA_PIXEL_FORMAT_YUV420P); - if(yuvBuf == null) - { - return false; - } - - memcpy(outBuffer, yuvBuf->GetPointer(), bufWidth * bufHeight); - delete yuvBuf; - - return true; - */ - } Tizen::Uix::Vision::ImageFeatureInfo* diff --git a/src/FUixVision_ImageFeatureManagerImpl.cpp b/src/FUixVision_ImageFeatureManagerImpl.cpp index 0f212d1..87d137b 100644 --- a/src/FUixVision_ImageFeatureManagerImpl.cpp +++ b/src/FUixVision_ImageFeatureManagerImpl.cpp @@ -27,7 +27,7 @@ namespace Tizen { namespace Uix { namespace Vision _ImageFeatureManagerImpl::_ImageFeatureManagerImpl(void) : __imageFeatureManager(0) - , __readOnly(false) + , __readOnly(false) { } @@ -89,9 +89,9 @@ int _ImageFeatureManagerImpl::AddFeature(const unsigned char* data, int width, int height, const Tizen::Base::String& info) { if (!__imageFeatureManager) - { + { return -1; - } + } Tizen::Text::Utf8Encoding utf8; int index = (int) __imageFeatureManager->addImageToDB(data, width, height, (char*) utf8.GetBytesN(info)->GetPointer()); @@ -107,17 +107,25 @@ bool _ImageFeatureManagerImpl::DeleteFeature(int index) { if (!__imageFeatureManager) - { + { return false; - } + } - int realIndex(0); - __indices.GetAt(index,realIndex); - if (__imageFeatureManager->deleteImageFromDB(realIndex)) + if (index < __indices.GetCount() && index >= 0) { - __indices.RemoveAt(index); - return true; + int realIndex(0); + __indices.GetAt(index, realIndex); + if (__imageFeatureManager->deleteImageFromDB(realIndex)) + { + __indices.RemoveAt(index); + return true; + } } + else + { + SetLastResult(E_INVALID_ARG); + } + return false; } @@ -139,9 +147,9 @@ _ImageFeatureManagerImpl::SaveDB(bool optimizeDatabase, const Tizen::Base::Strin result result = E_FAILURE; if (!__imageFeatureManager) - { + { return E_FAILURE; - } + } if (null != dbPath) @@ -157,14 +165,15 @@ _ImageFeatureManagerImpl::SaveDB(bool optimizeDatabase, const Tizen::Base::Strin { Tizen::Text::Utf8Encoding utf8; result = __imageFeatureManager->saveDB(optimizeDatabase, (const char*) utf8.GetBytesN(__path)->GetPointer()) ? E_SUCCESS : E_FAILURE; - if (E_FAILURE == result && __readOnly) - { - result = E_INVALID_ARG; - } + if (E_FAILURE == result && __readOnly) + { + result = E_INVALID_ARG; + } } } return result; + } bool @@ -194,21 +203,20 @@ _ImageFeatureManagerImpl::OpenDB(const Tizen::Base::String& dbpath) __imageFeatureManager->initDB(); Tizen::Text::Utf8Encoding utf8; - switch (__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer())) - { - case 0: //ok - __path = dbpath; - UpdateFeatureIndices(); - break; - case -2: //read only feature set file + switch (__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer())) + { + case 0: //ok __path = dbpath; UpdateFeatureIndices(); - __readOnly = true; - break; - default: //error + break; + case -2: //read only feature set file __path = dbpath; UpdateFeatureIndices(); - } + __readOnly = true; + break; + default: //error + return false; + } return true; } @@ -217,9 +225,9 @@ void _ImageFeatureManagerImpl::ReleaseDB(void) { if (!__imageFeatureManager) - { + { return; - } + } __imageFeatureManager->releaseDB(); __indices.RemoveAll(); @@ -229,15 +237,23 @@ const Tizen::Uix::Vision::ImageFeatureInfo* _ImageFeatureManagerImpl::GetImageFeatureInfo(int index) { if (!__imageFeatureManager) - { + { return null; - } + } - Tizen::Uix::Vision::ImageFeatureInfo* di = _ImageFeatureInfoImpl::CreateImageFeatureInfoN(); - int realIndex(0); - __indices.GetAt(index, realIndex); - _ImageFeatureInfoImpl::GetInstance(di)->SetSariPointer(sari2::ImageFeatureInfo(__imageFeatureManager, realIndex)); - return di; + if (index < __indices.GetCount() && index >= 0) + { + Tizen::Uix::Vision::ImageFeatureInfo* di = _ImageFeatureInfoImpl::CreateImageFeatureInfoN(); + int realIndex(0); + __indices.GetAt(index, realIndex); + _ImageFeatureInfoImpl::GetInstance(di)->SetSariPointer(sari2::ImageFeatureInfo(__imageFeatureManager, realIndex)); + return di; + } + else + { + SetLastResult(E_INVALID_ARG); + return null; + } } void @@ -246,9 +262,9 @@ _ImageFeatureManagerImpl::UpdateFeatureIndices(void) __indices.RemoveAll(); if (!__imageFeatureManager) - { + { return; - } + } int total = __imageFeatureManager->totalNumberOfImages(); for (int i = 0; i < total; i++) diff --git a/src/FUixVision_QrCodeObjectImpl.cpp b/src/FUixVision_QrCodeObjectImpl.cpp index cf91159..f81701c 100644 --- a/src/FUixVision_QrCodeObjectImpl.cpp +++ b/src/FUixVision_QrCodeObjectImpl.cpp @@ -92,7 +92,9 @@ _QrCodeObjectImpl::GetRectangle(void) const __qrCodeObject.rectangle(coordinates); for (int i = 0; i < 4; ++i) + { __pRectangleList->Add(Tizen::Graphics::FloatPoint(coordinates[2 * i], coordinates[(2 * i) + 1])); + } return __pRectangleList; diff --git a/src/FUixVision_QrCodeRecognizerImpl.cpp b/src/FUixVision_QrCodeRecognizerImpl.cpp index f8fb607..d218977 100644 --- a/src/FUixVision_QrCodeRecognizerImpl.cpp +++ b/src/FUixVision_QrCodeRecognizerImpl.cpp @@ -29,7 +29,7 @@ _QrCodeRecognizerImpl::_QrCodeRecognizerImpl(void) _QrCodeRecognizerImpl::~_QrCodeRecognizerImpl(void) { - _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage); + _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage); } bool @@ -95,7 +95,7 @@ _QrCodeRecognizerImpl::GetQrCodeObject(int index) else { SetLastResult(E_INVALID_ARG); - return 0; + return null; } } diff --git a/src/ImageRecognitionInfo.h b/src/ImageRecognitionInfo.h old mode 100755 new mode 100644 diff --git a/src/ImageRecognizer.h b/src/ImageRecognizer.h old mode 100755 new mode 100644