From: Seokpil Park Date: Fri, 30 Aug 2013 11:54:55 +0000 (+0900) Subject: Fix : Extract the video meta data on demand to enhance performance X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2efa0099537234796b1a9fce624620b06a764c6c;p=platform%2Fframework%2Fnative%2Fcontent.git Fix : Extract the video meta data on demand to enhance performance Change-Id: I361f158086691c7812cde4562fd02391998bb31a Signed-off-by: Seokpil Park --- diff --git a/src/FCnt_ContentManagerImpl.cpp b/src/FCnt_ContentManagerImpl.cpp index b7be808..6d25bb4 100644 --- a/src/FCnt_ContentManagerImpl.cpp +++ b/src/FCnt_ContentManagerImpl.cpp @@ -2019,14 +2019,7 @@ _ContentManagerImpl::MakeVideoContentInfo(const media_info_h pMediaInfo, void* p pVideoContentInfoImpl->SetDuration(intValue); SysLog(NID_CNT, "META: duration[%d]", intValue); - // Get from metadata extractor (framerate, audio bitrate, video bitrate) - VideoMetadata* pVideoMetadata = ContentManagerUtil::GetVideoMetaN(pVideoContentInfoImpl->GetContentPath()); - result r = GetLastResult(); - SysTryReturnResult(NID_CNT, pVideoMetadata != null, r, "GetVideoMetadata() failed."); - - pVideoContentInfoImpl->SetFramerate(pVideoMetadata->GetFramerate()); - pVideoContentInfoImpl->SetAudioBitrate(pVideoMetadata->GetAudioBitrate()); - pVideoContentInfoImpl->SetVideoBitrate(pVideoMetadata->GetVideoBitrate()); + // Get some information from metadata extractor when calling VideoContentInfo (framerate, audio bitrate, video bitrate) return E_SUCCESS; } diff --git a/src/FCnt_VideoContentInfoImpl.cpp b/src/FCnt_VideoContentInfoImpl.cpp index ea5f45d..46ee88a 100644 --- a/src/FCnt_VideoContentInfoImpl.cpp +++ b/src/FCnt_VideoContentInfoImpl.cpp @@ -20,6 +20,7 @@ * This file contains implementation of the %VideoContentInfo class. */ +#include #include #include #include @@ -214,18 +215,36 @@ _VideoContentInfoImpl::GetBitrate(void) const int _VideoContentInfoImpl::GetAudioBitrate(void) const { + if (__audioBitrate == 0) + { + result r = GetVideoMetadata(); + SysTryLogReturn(NID_CNT, !IsFailed(r), __audioBitrate, "GetVideoMetadata failed."); + } + return __audioBitrate; } int _VideoContentInfoImpl::GetVideoBitrate(void) const { + if (__videoBitrate == 0) + { + result r = GetVideoMetadata(); + SysTryLogReturn(NID_CNT, !IsFailed(r), __videoBitrate, "GetVideoMetadata failed."); + } + return __videoBitrate; } int _VideoContentInfoImpl::GetFramerate(void) const { + if (__framerate == 0) + { + result r = GetVideoMetadata(); + SysTryLogReturn(NID_CNT, !IsFailed(r), __framerate, "GetVideoMetadata failed."); + } + return __framerate; } @@ -337,4 +356,23 @@ _VideoContentInfoImpl::SetDuration(long duration) __duration = duration; } +result +_VideoContentInfoImpl::GetVideoMetadata(void) const +{ + unique_ptr< VideoMetadata > pVideoMetadata(ContentManagerUtil::GetVideoMetaN(GetContentPath())); + result r = GetLastResult(); + SysTryReturn(NID_CNT, pVideoMetadata != null, r, r, "[%s] Failed to perform GetVideoMetadata operation.", GetErrorMessage(r)); + + // framerate + __framerate = pVideoMetadata->GetFramerate(); + + // audio bitrate + __audioBitrate = pVideoMetadata->GetAudioBitrate(); + + // video bitrate + __videoBitrate = pVideoMetadata->GetVideoBitrate(); + + return E_SUCCESS; +} + }} diff --git a/src/inc/FCnt_VideoContentInfoImpl.h b/src/inc/FCnt_VideoContentInfoImpl.h index 1b5f181..f56621e 100644 --- a/src/inc/FCnt_VideoContentInfoImpl.h +++ b/src/inc/FCnt_VideoContentInfoImpl.h @@ -97,11 +97,13 @@ private: _VideoContentInfoImpl& operator =(const _VideoContentInfoImpl& rhs); + result GetVideoMetadata(void) const; + int __width; int __height; - int __framerate; - int __audioBitrate; - int __videoBitrate; + mutable int __framerate; + mutable int __audioBitrate; + mutable int __videoBitrate; long __duration; Tizen::Base::String __artist; Tizen::Base::String __genre;