--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/common/src/CamVideoQualityLevel.cpp Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,322 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Stores video qulaity leve linformation read from resource file*
+*/
+
+
+
+// INCLUDE FILES
+
+#include <utf.h> // CnvUtfConverter
+#include "CameraVariant.hrh"
+
+
+#include "CamSettings.hrh"
+#include "CamSettingsInternal.hrh"
+#include "CamVideoQualityLevel.h"
+#include "camlogging.h"
+#include "CamUtility.h"
+
+
+const TInt KQualityMaxStringLength = 64;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::CCamVideoQualityLevel
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CCamVideoQualityLevel::CCamVideoQualityLevel()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::ConstructFromResourceL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CCamVideoQualityLevel::ConstructFromResourceL( TResourceReader& aReader )
+ {
+ // read identifier for this quality level
+ iQualityLevel = aReader.ReadInt16();
+ // read resolution
+ iVideoResolution = TVideoResolution(aReader.ReadInt16());
+ // read frame rate
+ iVideoFrameRate = aReader.ReadReal64();
+ // read video bitrate
+ iVideoBitRate = aReader.ReadInt32();
+ // read audio bitrate
+ iAudioBitRate = aReader.ReadInt32();
+ // read mime type
+ iVideoMimeType = ReadHBufC8L( aReader );
+ // read preferred supplier
+ iPreferredSupplier = aReader.ReadHBufC16L();
+ // read video codec
+ iVideoCodec = ReadHBufC8L( aReader );
+ // read audio codec
+ iAudioCodec = ReadHBufC8L( aReader );
+ // read file type
+ iVideoFileType = aReader.ReadInt16();
+ // read length
+ iVideoLength = aReader.ReadInt16();
+
+ // if sharing quality - check the flags
+/* if ( iQualityLevel == ECamVideoQualitySharing )
+ {
+ // sharing should be subqcif
+ if ( aVariantFlags & KCamCrQualityVideoSharingIsSubQCIF )
+ {
+ iVideoResolution = ECamVideoResolutionSubQCIF;
+ }
+ } */
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CCamVideoQualityLevel::ConstructL( TVideoQualitySettings& aSettings )
+ {
+ // read identifier for this quality level
+ iQualityLevel = aSettings.iQualityLevel;
+ // read resolution
+ iVideoResolution = TVideoResolution(aSettings.iVideoResolution);
+ // read frame rate
+ iVideoFrameRate = aSettings.iVideoFrameRate;
+ // read video bitrate
+ iVideoBitRate = aSettings.iVideoBitRate;
+ // read audio bitrate
+ iAudioBitRate = aSettings.iAudioBitRate;
+
+ // read mime type
+ iVideoMimeType = HBufC8::NewL( KQualityMaxStringLength );
+ iVideoMimeType->Des().Copy(aSettings.iVideoMimeType);
+
+ // read preferred supplier
+ iPreferredSupplier = HBufC::NewL( KQualityMaxStringLength ) ;
+ iPreferredSupplier->Des().Copy( aSettings.iPreferredSupplier);
+
+ // read video codec
+ iVideoCodec = HBufC8::NewL( KQualityMaxStringLength );
+ iVideoCodec->Des().Copy( aSettings.iVideoCodec );
+ // read audio codec
+ iAudioCodec = HBufC8::NewL( KQualityMaxStringLength );
+ iAudioCodec->Des().Copy( aSettings.iAudioCodec );
+
+ // read file type*
+ iVideoFileType = aSettings.iVideoFileType;
+ // read length
+ iVideoLength = aSettings.iVideoLength;
+
+ // if sharing quality - check the flags
+/* if ( iQualityLevel == ECamVideoQualitySharing )
+ {
+ // sharing should be subqcif
+ if ( aVariantFlags & KCamCrQualityVideoSharingIsSubQCIF )
+ {
+ iVideoResolution = ECamVideoResolutionSubQCIF;
+ }
+ }*/
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CCamVideoQualityLevel* CCamVideoQualityLevel::NewL( TResourceReader& aReader )
+ {
+ CCamVideoQualityLevel* self = new( ELeave ) CCamVideoQualityLevel;
+
+ CleanupStack::PushL( self );
+ self->ConstructFromResourceL( aReader );
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CCamVideoQualityLevel* CCamVideoQualityLevel::NewL( TVideoQualitySettings& aSettings )
+ {
+ CCamVideoQualityLevel* self = new( ELeave ) CCamVideoQualityLevel;
+ CleanupStack::PushL( self );
+ self->ConstructL( aSettings );
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// Destructor
+CCamVideoQualityLevel::~CCamVideoQualityLevel()
+ {
+ PRINT( _L("Camera => ~CCamVideoQualityLevel" ));
+ delete iVideoMimeType;
+ delete iPreferredSupplier;
+ delete iVideoCodec;
+ delete iAudioCodec;
+ PRINT( _L("Camera <= ~CCamVideoQualityLevel" ));
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoResolution
+// Return video resolution associated with this quality level
+// -----------------------------------------------------------------------------
+//
+TVideoResolution CCamVideoQualityLevel::VideoResolution()
+ {
+ return iVideoResolution;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::FrameRate
+// Return video frame rate associated with this quality level
+// -----------------------------------------------------------------------------
+//
+TReal CCamVideoQualityLevel::FrameRate()
+ {
+ return iVideoFrameRate;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoBitRate
+// Return video bitrate associated with this quality level
+// -----------------------------------------------------------------------------
+//
+TInt CCamVideoQualityLevel::VideoBitRate()
+ {
+ return iVideoBitRate;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::AudioBitRate
+// Return audio bitrate associated with this quality level identifier
+// -----------------------------------------------------------------------------
+//
+TInt CCamVideoQualityLevel::AudioBitRate()
+ {
+ return iAudioBitRate;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoMimeType
+// Return mime type required associated with this video quality level
+// -----------------------------------------------------------------------------
+//
+TPtrC8 CCamVideoQualityLevel::VideoMimeType()
+ {
+ return *iVideoMimeType;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::PreferredSupplier
+// Return preferred supplier value associated with this video quality level
+// -----------------------------------------------------------------------------
+//
+TPtrC CCamVideoQualityLevel::PreferredSupplier()
+ {
+ return *iPreferredSupplier;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoFileType
+// Return video codec associated with this video quality level
+// -----------------------------------------------------------------------------
+//
+TPtrC8 CCamVideoQualityLevel::VideoFileType()
+ {
+ return *iVideoCodec;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::AudioType
+// Return audio codec associated with this video quality level
+// -----------------------------------------------------------------------------
+//
+TPtrC8 CCamVideoQualityLevel::AudioType()
+ {
+ return *iAudioCodec;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoType
+// Return file type identier associated with this video quality level
+// either Mpeg4 or 3GP
+// -----------------------------------------------------------------------------
+//
+TInt CCamVideoQualityLevel::VideoType()
+ {
+ return iVideoFileType;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoLength
+// Return length associated with this video quality level
+// either max or short
+// -----------------------------------------------------------------------------
+//
+TInt CCamVideoQualityLevel::VideoLength()
+ {
+ return iVideoLength;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamVideoQualityLevel::VideoQuality
+// Return video quality level
+// -----------------------------------------------------------------------------
+//
+TInt CCamVideoQualityLevel::VideoQuality()
+ {
+ return iQualityLevel;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamVideoQualityLevel::ReadHBufC8L
+// Reads an LTEXT element from resources and returns
+// it as HBufC8.
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCamVideoQualityLevel::ReadHBufC8L( TResourceReader& aReader ) const
+ {
+ HBufC* tempBuf = NULL;
+ tempBuf = aReader.ReadHBufCL();
+ if ( !tempBuf )
+ {
+ return NULL;
+ }
+
+ CleanupStack::PushL( tempBuf );
+
+ // Assume aSource only contains 7-bit ASCII characters.
+ // (ie. length of the string in UTF-8 is equal to the number of
+ // characters)
+ HBufC8* res = HBufC8::NewLC( tempBuf->Length() );
+ TPtr8 resPtr( res->Des() );
+ TPtr16 sourcePtr( tempBuf->Des() );
+ CnvUtfConverter::ConvertFromUnicodeToUtf8( resPtr, sourcePtr );
+ CleanupStack::Pop(); // res
+ CleanupStack::PopAndDestroy(); // tempBuf
+ return res;
+ }
+
+
+// End of File