camerauis/cameraxui/cxengine/tsrc/unit/system_include/imagingconfigmanager.h
author hgs
Wed, 18 Aug 2010 14:02:45 +0300
changeset 51 ccc0e7e3344f
permissions -rw-r--r--
201031_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     1
/*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     3
* All rights reserved.
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     8
*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    11
*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    12
* Contributors:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    13
*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    14
* Description:  Fake implementation for the unittest_cxequalitypresetssymbian
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    15
*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    16
*/
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    17
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    18
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    19
#ifndef IMAGINGCONFIGMANAGER_H
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    20
#define IMAGINGCONFIGMANAGER_H
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    21
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    22
#include <mmf\common\mmfutilities.h>
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    23
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    24
const TUint KMaxStringLength = 256;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    25
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    26
/*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    27
 * Video quality set structure
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    28
 */
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    29
class TVideoQualitySet
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    30
    {
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    31
    public:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    32
        // Enum level for the Quality set, used as ID
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    33
        TUint iVideoQualitySetLevel;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    34
        // Video file format mime type, e.g. "video/3gpp"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    35
        TText8 iVideoFileMimeType[ KMaxStringLength ];
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    36
        // Video codec mime type, e.g. "video/mp4v-es"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    37
        TText8 iVideoCodecMimeType[ KMaxStringLength ];
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    38
        // Video picture width in pixels (luminance), resolution width
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    39
        TInt iVideoWidth;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    40
        // Video picture height in pixels (luminance), resolution height
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    41
        TInt iVideoHeight;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    42
        // Video framerate in fps
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    43
        TReal iVideoFrameRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    44
        // Video bitrate in bps
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    45
        TInt iVideoBitRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    46
        // Video encoder UID
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    47
        TUid iVideoEncoderUID;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    48
        // Random access point rate, in pictures per second. For example, to
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    49
        // request a random access point every ten seconds, set the value to
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    50
        // 0.1. Random access means in video case usually that an INTRA frame
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    51
        // is forced by the encoder to make the video accessible at that time
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    52
        // without depending on the previous frames
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    53
        TReal iRandomAccessRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    54
        // Video's pixel aspect ratio numerator, e.g. in PAL 16:11 pixel
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    55
        // aspect ratio means that this value is set to 16
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    56
        TUint iVideoPixelAspectRatioNum;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    57
        // Video's pixel aspect ratio denominator, e.g. in PAL 16:11 pixel
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    58
        // aspect ratio means that this value is set to 11
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    59
        TUint iVideoPixelAspectRatioDenom;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    60
        // Preferred supplier for the MMF camcorder plug-in (e.g. "Nokia")
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    61
        TText8 iPreferredSupplier[ KMaxStringLength ];
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    62
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    63
        // Audio codec FourCC, e.g. " AMR"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    64
        TFourCC iAudioFourCCType;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    65
        // Audio bitrate in bps
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    66
        TInt iAudioBitRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    67
        // Audio sampling rate in Hz
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    68
        TInt iAudioSamplingRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    69
        // Number of audio channels; in practice mono(1) vs stereo(2)
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    70
        TInt iAudioChannels;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    71
        // Audio encoder UID
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    72
        TUid iAudioEncoderUID;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    73
        // Video recording A/V sync start delay (ms), only used by
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    74
        // CamcorderMMFPlugIn, but depends on the qualityset
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    75
        TInt iAVSyncStartDelay;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    76
        // Video recording A/V sync resume delay (ms), only used by
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    77
        // CamcorderMMFPlugIn, but depends on the qualityset
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    78
        TInt iAVSyncResumeDelay;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    79
        // A non-zero ID telling unique combination of camera (primary/
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    80
        // secondary) and/or display (cover UI/main display) and/or rotation
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    81
        // setting combined into a number for separating each setting set
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    82
        // type from others
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    83
        TUint iCameraDisplayId;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    84
        // Camcorder specific field that can be either 1(true) or 0(false)
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    85
        // meaning if the current quality settings set should be shown on
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    86
        // Camcorder UI or not
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    87
        TUint iCamcorderVisible;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    88
	};
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    89
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    90
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    91
/*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    92
 * Image quality set structure
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    93
 */
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    94
class TImageQualitySet
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    95
    {
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    96
    public:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    97
        // Enum level for the Quality set, used as ID
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    98
        TUint iImageQualitySetLevel;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
    99
        // Image file format mime type, e.g. "image/jpeg"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   100
        TText8 iImageFileMimeType[ KMaxStringLength ];
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   101
        // Image picture width in pixels, resolution width
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   102
        TInt iImageWidth;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   103
        // Image picture height in pixels, resolution height
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   104
        TInt iImageHeight;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   105
        // Image extension, e.g. ".jpg"
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   106
        TText8 iImageFileExtension[ KMaxStringLength ];
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   107
        // Image encoder UID
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   108
        TUid iImageEncoderUID;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   109
        // Compression quality, determines wether file size or image quality
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   110
        // is preferred over the other
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   111
        TInt iCompressionQuality;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   112
        // Estimated image size, in bytes
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   113
        TInt iEstimatedSize;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   114
        // A non-Zero ID telling unique combination of camera (primary/
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   115
        // secondary) and/or display (cover UI/main display) and/or rotation
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   116
        // setting combined into a number for separating each setting set type
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   117
        // from others
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   118
        TUint iCameraDisplayId;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   119
        // Camcorder specific field that can be either 1(true) or 0(false)
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   120
        // meaning if the current quality settings set should be shown on
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   121
        // Camcorder UI or not
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   122
        TUint iCamcorderVisible;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   123
    };
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   124
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   125
/*
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   126
 * Camcorder MMF Plug-in Specific settings structure
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   127
 *
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   128
 */
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   129
class TCamcorderMMFPluginSettings
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   130
	{
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   131
	public:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   132
		// Video framerate in nightmode (fps)
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   133
		TReal iVideoNightFrameRate;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   134
		// Video bitrate scaler for remaining time calculation during
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   135
		// first 3seconds.
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   136
		TReal iCMRAvgVideoBitRateScaler;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   137
		// Video Complexity Setting
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   138
		TInt iVideoComplexitySetting;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   139
		// Quality is more important in camcorder than delay
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   140
		TReal iCMRLatencyQualityTradeoff;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   141
		// range is [0...100]
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   142
		TUint iCMRPictureQuality;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   143
		// Try to maintain the frame-rate,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   144
		// 1.0 means the picture quality is sacrificed
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   145
		// "all the way" to match the target fps
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   146
		TReal iCMRQualityTemporalTradeoff;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   147
		// number of camera buffers to use when using HW accelerated encoder
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   148
		TUint iCMRNumCameraBuffers;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   149
		// number of camera buffers to use when using SW encoder
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   150
		TUint iCMRNumCameraBuffersARM;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   151
		// min number of output (bitstream) buffers
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   152
		TUint iCMRMinNumOutputBuffers;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   153
	};
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   154
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   155
/**
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   156
 *  Fake API class for emulate imaging configurations and settings
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   157
 */
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   158
class CImagingConfigManager : public CBase
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   159
    {
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   160
    public:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   161
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   162
        // two phase constructor
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   163
        static CImagingConfigManager* NewL();
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   164
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   165
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   166
        // Destructor
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   167
        ~CImagingConfigManager();
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   168
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   169
        // Returns number of video quality levels
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   170
        TInt NumberOfVideoQualityLevels() const;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   171
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   172
        // Get video quality levels
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   173
        TInt GetVideoQualityLevelsL( CArrayFixFlat<TUint>& aLevels,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   174
                                              TUint aCameraDisplayID = 0 );
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   175
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   176
        /// returns video quality set and symbian error code if any.
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   177
        TInt GetVideoQualitySet( TVideoQualitySet& aSet,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   178
                                          TInt aLevel,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   179
                                          TUint aCameraDisplayID = 0 );
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   180
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   181
        // Get all settings for Camcorder
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   182
        TInt GetCamcorderMMFPluginSettings(TCamcorderMMFPluginSettings& aSet) const;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   183
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   184
        // returns number of image quality levels
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   185
        TInt NumberOfImageQualityLevels() const;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   186
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   187
        // Get image quality levels
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   188
        TInt GetImageQualityLevelsL( CArrayFixFlat<TUint>& aLevels,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   189
                                              TUint aCameraDisplayID = 0 );
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   190
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   191
        // Get image quality set
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   192
        TInt GetImageQualitySet( TImageQualitySet& aSet,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   193
                                          TInt aLevel,
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   194
                                          TUint aCameraDisplayID = 0 );
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   195
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   196
    private:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   197
        CImagingConfigManager();
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   198
        // helper method to init image quality set
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   199
        void initImageQualitySet(TImageQualitySet& aSet);
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   200
        void initVideoQualitySet(TVideoQualitySet& aSet);
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   201
    private:
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   202
        CArrayFixFlat< TVideoQualitySet >* iVideoQualitySets;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   203
        CArrayFixFlat< TImageQualitySet >* iImageQualitySets;
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   204
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   205
    };
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   206
ccc0e7e3344f 201031_1
hgs
parents:
diff changeset
   207
#endif //IMAGINGCONFIGMANAGER_H