camerauis/cameraxui/cxengine/tsrc/unit/system_include/imagingconfigmanager.h
changeset 51 ccc0e7e3344f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/system_include/imagingconfigmanager.h	Wed Aug 18 14:02:45 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2006-2010 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:  Fake implementation for the unittest_cxequalitypresetssymbian
+*
+*/
+
+
+#ifndef IMAGINGCONFIGMANAGER_H
+#define IMAGINGCONFIGMANAGER_H
+
+#include <mmf\common\mmfutilities.h>
+
+const TUint KMaxStringLength = 256;
+
+/*
+ * Video quality set structure
+ */
+class TVideoQualitySet
+    {
+    public:
+        // Enum level for the Quality set, used as ID
+        TUint iVideoQualitySetLevel;
+        // Video file format mime type, e.g. "video/3gpp"
+        TText8 iVideoFileMimeType[ KMaxStringLength ];
+        // Video codec mime type, e.g. "video/mp4v-es"
+        TText8 iVideoCodecMimeType[ KMaxStringLength ];
+        // Video picture width in pixels (luminance), resolution width
+        TInt iVideoWidth;
+        // Video picture height in pixels (luminance), resolution height
+        TInt iVideoHeight;
+        // Video framerate in fps
+        TReal iVideoFrameRate;
+        // Video bitrate in bps
+        TInt iVideoBitRate;
+        // Video encoder UID
+        TUid iVideoEncoderUID;
+        // Random access point rate, in pictures per second. For example, to
+        // request a random access point every ten seconds, set the value to
+        // 0.1. Random access means in video case usually that an INTRA frame
+        // is forced by the encoder to make the video accessible at that time
+        // without depending on the previous frames
+        TReal iRandomAccessRate;
+        // Video's pixel aspect ratio numerator, e.g. in PAL 16:11 pixel
+        // aspect ratio means that this value is set to 16
+        TUint iVideoPixelAspectRatioNum;
+        // Video's pixel aspect ratio denominator, e.g. in PAL 16:11 pixel
+        // aspect ratio means that this value is set to 11
+        TUint iVideoPixelAspectRatioDenom;
+        // Preferred supplier for the MMF camcorder plug-in (e.g. "Nokia")
+        TText8 iPreferredSupplier[ KMaxStringLength ];
+
+        // Audio codec FourCC, e.g. " AMR"
+        TFourCC iAudioFourCCType;
+        // Audio bitrate in bps
+        TInt iAudioBitRate;
+        // Audio sampling rate in Hz
+        TInt iAudioSamplingRate;
+        // Number of audio channels; in practice mono(1) vs stereo(2)
+        TInt iAudioChannels;
+        // Audio encoder UID
+        TUid iAudioEncoderUID;
+        // Video recording A/V sync start delay (ms), only used by
+        // CamcorderMMFPlugIn, but depends on the qualityset
+        TInt iAVSyncStartDelay;
+        // Video recording A/V sync resume delay (ms), only used by
+        // CamcorderMMFPlugIn, but depends on the qualityset
+        TInt iAVSyncResumeDelay;
+        // A non-zero ID telling unique combination of camera (primary/
+        // secondary) and/or display (cover UI/main display) and/or rotation
+        // setting combined into a number for separating each setting set
+        // type from others
+        TUint iCameraDisplayId;
+        // Camcorder specific field that can be either 1(true) or 0(false)
+        // meaning if the current quality settings set should be shown on
+        // Camcorder UI or not
+        TUint iCamcorderVisible;
+	};
+
+
+/*
+ * Image quality set structure
+ */
+class TImageQualitySet
+    {
+    public:
+        // Enum level for the Quality set, used as ID
+        TUint iImageQualitySetLevel;
+        // Image file format mime type, e.g. "image/jpeg"
+        TText8 iImageFileMimeType[ KMaxStringLength ];
+        // Image picture width in pixels, resolution width
+        TInt iImageWidth;
+        // Image picture height in pixels, resolution height
+        TInt iImageHeight;
+        // Image extension, e.g. ".jpg"
+        TText8 iImageFileExtension[ KMaxStringLength ];
+        // Image encoder UID
+        TUid iImageEncoderUID;
+        // Compression quality, determines wether file size or image quality
+        // is preferred over the other
+        TInt iCompressionQuality;
+        // Estimated image size, in bytes
+        TInt iEstimatedSize;
+        // A non-Zero ID telling unique combination of camera (primary/
+        // secondary) and/or display (cover UI/main display) and/or rotation
+        // setting combined into a number for separating each setting set type
+        // from others
+        TUint iCameraDisplayId;
+        // Camcorder specific field that can be either 1(true) or 0(false)
+        // meaning if the current quality settings set should be shown on
+        // Camcorder UI or not
+        TUint iCamcorderVisible;
+    };
+
+/*
+ * Camcorder MMF Plug-in Specific settings structure
+ *
+ */
+class TCamcorderMMFPluginSettings
+	{
+	public:
+		// Video framerate in nightmode (fps)
+		TReal iVideoNightFrameRate;
+		// Video bitrate scaler for remaining time calculation during
+		// first 3seconds.
+		TReal iCMRAvgVideoBitRateScaler;
+		// Video Complexity Setting
+		TInt iVideoComplexitySetting;
+		// Quality is more important in camcorder than delay
+		TReal iCMRLatencyQualityTradeoff;
+		// range is [0...100]
+		TUint iCMRPictureQuality;
+		// Try to maintain the frame-rate,
+		// 1.0 means the picture quality is sacrificed
+		// "all the way" to match the target fps
+		TReal iCMRQualityTemporalTradeoff;
+		// number of camera buffers to use when using HW accelerated encoder
+		TUint iCMRNumCameraBuffers;
+		// number of camera buffers to use when using SW encoder
+		TUint iCMRNumCameraBuffersARM;
+		// min number of output (bitstream) buffers
+		TUint iCMRMinNumOutputBuffers;
+	};
+
+/**
+ *  Fake API class for emulate imaging configurations and settings
+ */
+class CImagingConfigManager : public CBase
+    {
+    public:
+
+        // two phase constructor
+        static CImagingConfigManager* NewL();
+
+
+        // Destructor
+        ~CImagingConfigManager();
+
+        // Returns number of video quality levels
+        TInt NumberOfVideoQualityLevels() const;
+
+        // Get video quality levels
+        TInt GetVideoQualityLevelsL( CArrayFixFlat<TUint>& aLevels,
+                                              TUint aCameraDisplayID = 0 );
+
+        /// returns video quality set and symbian error code if any.
+        TInt GetVideoQualitySet( TVideoQualitySet& aSet,
+                                          TInt aLevel,
+                                          TUint aCameraDisplayID = 0 );
+
+        // Get all settings for Camcorder
+        TInt GetCamcorderMMFPluginSettings(TCamcorderMMFPluginSettings& aSet) const;
+
+        // returns number of image quality levels
+        TInt NumberOfImageQualityLevels() const;
+
+        // Get image quality levels
+        TInt GetImageQualityLevelsL( CArrayFixFlat<TUint>& aLevels,
+                                              TUint aCameraDisplayID = 0 );
+
+        // Get image quality set
+        TInt GetImageQualitySet( TImageQualitySet& aSet,
+                                          TInt aLevel,
+                                          TUint aCameraDisplayID = 0 );
+
+    private:
+        CImagingConfigManager();
+        // helper method to init image quality set
+        void initImageQualitySet(TImageQualitySet& aSet);
+        void initVideoQualitySet(TVideoQualitySet& aSet);
+    private:
+        CArrayFixFlat< TVideoQualitySet >* iVideoQualitySets;
+        CArrayFixFlat< TImageQualitySet >* iImageQualitySets;
+
+    };
+
+#endif //IMAGINGCONFIGMANAGER_H