Update contrib.
1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #include "devvideobase.h"
17 #include "devvideoconstants.h"
19 //Include the following headers here just to check they can be compiled OK.
20 #include "Mpeg4Visual.h"
25 #include "sorensonspark.h"
27 EXPORT_C CCompressedVideoFormat* CCompressedVideoFormat::NewL(const TDesC8& aMimeType,const TDesC8& aOptionalData)
29 CCompressedVideoFormat* s = new(ELeave) CCompressedVideoFormat;
30 CleanupStack::PushL(s);
31 s->ConstructL(aMimeType, aOptionalData);
36 EXPORT_C CCompressedVideoFormat* CCompressedVideoFormat::NewL(const CCompressedVideoFormat& aFormat)
38 CCompressedVideoFormat* s = new(ELeave) CCompressedVideoFormat;
39 CleanupStack::PushL(s);
40 s->ConstructL(aFormat.MimeType(), aFormat.OptionalData());
45 EXPORT_C CCompressedVideoFormat::~CCompressedVideoFormat()
51 EXPORT_C const TDesC8& CCompressedVideoFormat::MimeType() const
56 EXPORT_C const TDesC8& CCompressedVideoFormat::OptionalData() const
58 return *iOptionalData;
61 CCompressedVideoFormat::CCompressedVideoFormat()
65 void CCompressedVideoFormat::ConstructL(const TDesC8& aMimeType, const TDesC8& aOptionalData)
67 iMimeType = aMimeType.AllocL();
68 iOptionalData = aOptionalData.AllocL();
71 EXPORT_C TBool CCompressedVideoFormat::operator==(const CCompressedVideoFormat& aOther) const
73 TBool retval = EFalse;
74 // only test optionalData if aOther has an optional data of length > 0. Need a
75 // check like this for performing matches on mimetype only.
76 if (aOther.OptionalData().Length() > 0)
77 retval = ((aOther.MimeType().CompareF(*iMimeType) == 0) && (aOther.OptionalData().CompareF(*iOptionalData) == 0));
79 retval = ((aOther.MimeType().CompareF(*iMimeType) == 0));
85 EXPORT_C CSystemClockSource* CSystemClockSource::NewL()
87 CSystemClockSource* s = new(ELeave) CSystemClockSource;
88 CleanupStack::PushL(s);
94 CSystemClockSource::CSystemClockSource()
96 iStartTime.UniversalTime();
100 void CSystemClockSource::ConstructL()
102 User::LeaveIfError(iCriticalSection.CreateLocal());
105 EXPORT_C CSystemClockSource::~CSystemClockSource()
107 iCriticalSection.Close();
110 TAny* CSystemClockSource::CustomInterface(TUid /*aInterface*/)
115 EXPORT_C void CSystemClockSource::Reset()
117 iCriticalSection.Wait();
118 iStartTime.UniversalTime();
121 iCriticalSection.Signal();
124 EXPORT_C void CSystemClockSource::Reset(const TTimeIntervalMicroSeconds& aOffset)
126 iCriticalSection.Wait();
127 iStartTime.UniversalTime();
130 iCriticalSection.Signal();
133 TTimeIntervalMicroSeconds CSystemClockSource::Time()
135 iCriticalSection.Wait();
136 TTimeIntervalMicroSeconds elapsed(0);
139 iCurrentTime.UniversalTime();
140 elapsed = iCurrentTime.MicroSecondsFrom(iStartTime);
144 // If we're currently suspended, current time == time when we were suspended
145 elapsed = iTimeWhenSuspended.MicroSecondsFrom(iStartTime);
148 // Perceived elapsed time == true elapsed + offset - time spent suspended
149 TInt64 time = elapsed.Int64() + iOffset.Int64() - iTimeSuspended.Int64();
150 iCriticalSection.Signal();
154 EXPORT_C void CSystemClockSource::Suspend()
156 __ASSERT_DEBUG(!iSuspended, DevVideoPanic(EDevVideoPanicPreConditionViolation));
157 iCriticalSection.Wait();
158 iTimeWhenSuspended.UniversalTime();
160 iCriticalSection.Signal();
163 EXPORT_C void CSystemClockSource::Resume()
165 __ASSERT_DEBUG(iSuspended, DevVideoPanic(EDevVideoPanicPreConditionViolation));
166 iCriticalSection.Wait();
168 iCurrentTime.UniversalTime();
169 iTimeSuspended = iTimeSuspended.Int64() + iCurrentTime.MicroSecondsFrom(iTimeWhenSuspended).Int64();
170 iCriticalSection.Signal();
174 EXPORT_C CMMFClockSourcePeriodicUtility* CMMFClockSourcePeriodicUtility::NewL(MMMFClockSource& aClockSource, MMMFClockSourcePeriodicUtilityObserver& aObserver)
176 CMMFClockSourcePeriodicUtility* s = new(ELeave) CMMFClockSourcePeriodicUtility(aClockSource, aObserver);
177 CleanupStack::PushL(s);
179 CleanupStack::Pop(s);
183 CMMFClockSourcePeriodicUtility::CMMFClockSourcePeriodicUtility(MMMFClockSource& aClockSource, MMMFClockSourcePeriodicUtilityObserver& aObserver) :
184 iClockSource(aClockSource),
189 void CMMFClockSourcePeriodicUtility::ConstructL()
191 iTimer = CPeriodic::NewL(EPriorityNormal);
194 EXPORT_C void CMMFClockSourcePeriodicUtility::Start(TTimeIntervalMicroSeconds32 aPeriod)
196 TCallBack callback(CMMFClockSourcePeriodicUtility::Callback, this);
197 iTimer->Start(aPeriod, aPeriod, callback);
200 EXPORT_C void CMMFClockSourcePeriodicUtility::Stop()
205 EXPORT_C CMMFClockSourcePeriodicUtility::~CMMFClockSourcePeriodicUtility()
210 TInt CMMFClockSourcePeriodicUtility::Callback(TAny* aAny)
212 CMMFClockSourcePeriodicUtility* me = reinterpret_cast<CMMFClockSourcePeriodicUtility*>(aAny);
217 void CMMFClockSourcePeriodicUtility::DoCallback()
219 iObserver.MmcspuoTick(iClockSource.Time());