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