sl@0
|
1 |
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
|
sl@0
|
2 |
// All rights reserved.
|
sl@0
|
3 |
// This component and the accompanying materials are made available
|
sl@0
|
4 |
// under the terms of "Eclipse Public License v1.0"
|
sl@0
|
5 |
// which accompanies this distribution, and is available
|
sl@0
|
6 |
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
sl@0
|
7 |
//
|
sl@0
|
8 |
// Initial Contributors:
|
sl@0
|
9 |
// Nokia Corporation - initial contribution.
|
sl@0
|
10 |
//
|
sl@0
|
11 |
// Contributors:
|
sl@0
|
12 |
//
|
sl@0
|
13 |
// Description:
|
sl@0
|
14 |
// Header file: DevVideoPlay test data.
|
sl@0
|
15 |
//
|
sl@0
|
16 |
//
|
sl@0
|
17 |
|
sl@0
|
18 |
/**
|
sl@0
|
19 |
@file TestDevVideoPlayTestData.h
|
sl@0
|
20 |
*/
|
sl@0
|
21 |
|
sl@0
|
22 |
#ifndef __TESTDEVVIDEOPLAYTESTDATA_H__
|
sl@0
|
23 |
#define __TESTDEVVIDEOPLAYTESTDATA_H__
|
sl@0
|
24 |
|
sl@0
|
25 |
#include "TSU_MMF_DevVideo.h"
|
sl@0
|
26 |
|
sl@0
|
27 |
|
sl@0
|
28 |
// mime types
|
sl@0
|
29 |
_LIT8(KTestMimeType1, "video/testvideo");
|
sl@0
|
30 |
|
sl@0
|
31 |
// optional data
|
sl@0
|
32 |
_LIT8(KTestOptional1, "blah blah blah blah blah");
|
sl@0
|
33 |
|
sl@0
|
34 |
// test uncompressed video formats
|
sl@0
|
35 |
const TUncompressedVideoFormat KTestVidFormat1 = {ERgbRawData};
|
sl@0
|
36 |
const TUncompressedVideoFormat KTestVidFormat2 = {ERgbFbsBitmap};
|
sl@0
|
37 |
const TUncompressedVideoFormat KTestVidFormat3 = {EYuvRawData};
|
sl@0
|
38 |
|
sl@0
|
39 |
// test unit and encapsulation types
|
sl@0
|
40 |
const TVideoDataUnitType KTestUnitType1 = EDuCodedPicture;
|
sl@0
|
41 |
const TVideoDataUnitEncapsulation KTestEncapType1 = EDuElementaryStream;
|
sl@0
|
42 |
|
sl@0
|
43 |
// test compressed video format utility function
|
sl@0
|
44 |
static inline CCompressedVideoFormat* GetTestCVFormatL( const TDesC8& aMimeType )
|
sl@0
|
45 |
{
|
sl@0
|
46 |
CCompressedVideoFormat* temp = CCompressedVideoFormat::NewL( aMimeType, KTestOptional1 );
|
sl@0
|
47 |
return temp;
|
sl@0
|
48 |
}
|
sl@0
|
49 |
|
sl@0
|
50 |
// test pre-process types
|
sl@0
|
51 |
const TUint32 KTestProcessType1 = EPpInputCrop | EPpMirror | EPpRotate;
|
sl@0
|
52 |
const TUint32 KTestProcessType2 = EPpScale | EPpOutputCrop | EPpOutputPad;
|
sl@0
|
53 |
|
sl@0
|
54 |
// input crop rectangles
|
sl@0
|
55 |
const TInt KTestInputCropRectA = 0;
|
sl@0
|
56 |
const TInt KTestInputCropRectB = 50;
|
sl@0
|
57 |
const TInt KTestInputCropRectC = 100;
|
sl@0
|
58 |
const TInt KTestInputCropRectD = 150;
|
sl@0
|
59 |
|
sl@0
|
60 |
// KTestInputCropRect1 = A, B, C, D;
|
sl@0
|
61 |
// KTestInputCropRect2 = D, C, B, A;
|
sl@0
|
62 |
|
sl@0
|
63 |
// yuv to rgb options
|
sl@0
|
64 |
const TYuvToRgbOptions KTestYuvToRgb1 = {50, 50, 50, 0.5, EDitherNone};
|
sl@0
|
65 |
const TYuvToRgbOptions KTestYuvToRgb2 = {100, 100, 100, 1.0, EDitherErrorDiffusion};
|
sl@0
|
66 |
static inline TBool CompareYuvRgbOptions(const TYuvToRgbOptions& a, const TYuvToRgbOptions& b)
|
sl@0
|
67 |
{
|
sl@0
|
68 |
if ( (a.iLightness == b.iLightness) && (a.iSaturation == b.iSaturation) &&
|
sl@0
|
69 |
(a.iContrast == b.iContrast) && (a.iGamma == b.iGamma) &&
|
sl@0
|
70 |
(a.iDitherType == b.iDitherType) )
|
sl@0
|
71 |
return ETrue;
|
sl@0
|
72 |
else return EFalse;
|
sl@0
|
73 |
}
|
sl@0
|
74 |
|
sl@0
|
75 |
|
sl@0
|
76 |
// conversion matrices
|
sl@0
|
77 |
const TYuvConversionMatrix KTestYuvMatrix1 = {{1, 2, 3}, {4, 5, 6, 7, 8, 9, 10, 11, 12}, {13, 14, 15}};
|
sl@0
|
78 |
const TYuvConversionMatrix KTestYuvMatrix2 = {{-1, -2, -3}, {-4, -5, -6, -7, -8, -9, -10, -11, -12}, {-13, -14, -15}};
|
sl@0
|
79 |
|
sl@0
|
80 |
static inline TBool CompareYuvMatrices(const TYuvConversionMatrix& a, const TYuvConversionMatrix& b)
|
sl@0
|
81 |
{
|
sl@0
|
82 |
TBool same = ETrue;
|
sl@0
|
83 |
TInt x = 0;
|
sl@0
|
84 |
|
sl@0
|
85 |
for (x = 0; x < 3; x++)
|
sl@0
|
86 |
{
|
sl@0
|
87 |
if ( (a.iPostOffset[x] != b.iPostOffset[x]) ||
|
sl@0
|
88 |
(a.iPreOffset[x] != b.iPreOffset[x]) )
|
sl@0
|
89 |
{
|
sl@0
|
90 |
same = EFalse;
|
sl@0
|
91 |
}
|
sl@0
|
92 |
}
|
sl@0
|
93 |
|
sl@0
|
94 |
for (x = 0; x < 9; x++)
|
sl@0
|
95 |
{
|
sl@0
|
96 |
if (a.iMatrix[x] != b.iMatrix[x])
|
sl@0
|
97 |
{
|
sl@0
|
98 |
same = EFalse;
|
sl@0
|
99 |
}
|
sl@0
|
100 |
}
|
sl@0
|
101 |
|
sl@0
|
102 |
return same;
|
sl@0
|
103 |
}
|
sl@0
|
104 |
|
sl@0
|
105 |
// yuv formats
|
sl@0
|
106 |
const TYuvFormat KTestYuvFormat1 = {EYuvRange0, EYuv420Chroma1, EYuvDataPlanar, const_cast <TYuvConversionMatrix*> (&KTestYuvMatrix1), const_cast <TYuvConversionMatrix*> (&KTestYuvMatrix2), 10, 20};
|
sl@0
|
107 |
const TYuvFormat KTestYuvFormat2 = {EYuvRange1, EYuv420Chroma2, EYuvDataInterleavedLE, const_cast <TYuvConversionMatrix*> (&KTestYuvMatrix2), const_cast <TYuvConversionMatrix*> (&KTestYuvMatrix1), 5, 10};
|
sl@0
|
108 |
|
sl@0
|
109 |
static inline TBool CompareYuvFormats(const TYuvFormat& a, const TYuvFormat& b)
|
sl@0
|
110 |
{
|
sl@0
|
111 |
if ( (a.iCoefficients == b.iCoefficients) &&
|
sl@0
|
112 |
(a.iPattern == b.iPattern) &&
|
sl@0
|
113 |
(a.iDataLayout == b.iDataLayout) &&
|
sl@0
|
114 |
(CompareYuvMatrices(*a.iYuv2RgbMatrix, *b.iYuv2RgbMatrix)) &&
|
sl@0
|
115 |
(CompareYuvMatrices(*a.iRgb2YuvMatrix, *b.iRgb2YuvMatrix)) &&
|
sl@0
|
116 |
(a.iAspectRatioNum == b.iAspectRatioNum) &&
|
sl@0
|
117 |
(a.iAspectRatioDenom == b.iAspectRatioDenom) )
|
sl@0
|
118 |
return ETrue;
|
sl@0
|
119 |
else return EFalse;
|
sl@0
|
120 |
}
|
sl@0
|
121 |
|
sl@0
|
122 |
// rgb formats
|
sl@0
|
123 |
const TRgbFormat KTestRgbFormat1 = ERgb16bit444;
|
sl@0
|
124 |
const TRgbFormat KTestRgbFormat2 = EFbsBitmapColor16M;
|
sl@0
|
125 |
|
sl@0
|
126 |
// rotation types
|
sl@0
|
127 |
const TRotationType KTestRotate1 = ERotate90Clockwise;
|
sl@0
|
128 |
const TRotationType KTestRotate2 = ERotate90Anticlockwise;
|
sl@0
|
129 |
|
sl@0
|
130 |
// test scale size
|
sl@0
|
131 |
const TInt KTestScaleX = 100;
|
sl@0
|
132 |
const TInt KTestScaleY = 50;
|
sl@0
|
133 |
|
sl@0
|
134 |
// output crop rectangles
|
sl@0
|
135 |
const TInt KTestOutputCropRectA = 0;
|
sl@0
|
136 |
const TInt KTestOutputCropRectB = 50;
|
sl@0
|
137 |
const TInt KTestOutputCropRectC = 256;
|
sl@0
|
138 |
const TInt KTestOutputCropRectD = 350;
|
sl@0
|
139 |
|
sl@0
|
140 |
// KTestOutputCropRect1 = A, B, C, D;
|
sl@0
|
141 |
// KTestOutputCropRect2 = D, C, B, A;
|
sl@0
|
142 |
|
sl@0
|
143 |
// post-processor options
|
sl@0
|
144 |
_LIT8(KTestPostProcOptions1, "abcdefghijklmno");
|
sl@0
|
145 |
_LIT8(KTestPostProcOptions2, "123456-7-654321");
|
sl@0
|
146 |
|
sl@0
|
147 |
// buffer options creation utility function
|
sl@0
|
148 |
static inline CMMFDevVideoPlay::TBufferOptions GetTestBufferOptions( void )
|
sl@0
|
149 |
{
|
sl@0
|
150 |
CMMFDevVideoPlay::TBufferOptions buffOptions;
|
sl@0
|
151 |
|
sl@0
|
152 |
buffOptions.iPreDecodeBufferSize = 10;
|
sl@0
|
153 |
buffOptions.iMaxPostDecodeBufferSize = 20;
|
sl@0
|
154 |
buffOptions.iPreDecoderBufferPeriod = 30;
|
sl@0
|
155 |
buffOptions.iPostDecoderBufferPeriod = 40;
|
sl@0
|
156 |
buffOptions.iMaxInputBufferSize = 50;
|
sl@0
|
157 |
buffOptions.iMinNumInputBuffers = 60;
|
sl@0
|
158 |
|
sl@0
|
159 |
return buffOptions;
|
sl@0
|
160 |
}
|
sl@0
|
161 |
|
sl@0
|
162 |
// buffer options comparison utility function
|
sl@0
|
163 |
static inline TBool CompareBufferOptions(const CMMFDevVideoPlay::TBufferOptions& a, const CMMFDevVideoPlay::TBufferOptions& b)
|
sl@0
|
164 |
{
|
sl@0
|
165 |
if ( (a.iPreDecodeBufferSize == b.iPreDecodeBufferSize) &&
|
sl@0
|
166 |
(a.iMaxPostDecodeBufferSize == b.iMaxPostDecodeBufferSize) &&
|
sl@0
|
167 |
(a.iPreDecoderBufferPeriod == b.iPreDecoderBufferPeriod) &&
|
sl@0
|
168 |
(a.iPostDecoderBufferPeriod == b.iPostDecoderBufferPeriod) &&
|
sl@0
|
169 |
(a.iMaxInputBufferSize == b.iMaxInputBufferSize) &&
|
sl@0
|
170 |
(a.iMinNumInputBuffers == b.iMinNumInputBuffers) )
|
sl@0
|
171 |
return ETrue;
|
sl@0
|
172 |
else return EFalse;
|
sl@0
|
173 |
}
|
sl@0
|
174 |
|
sl@0
|
175 |
// Hrd/Vbv test data
|
sl@0
|
176 |
const THrdVbvSpecification KTestHrdVbvSpec = EHrdVbv3GPP;
|
sl@0
|
177 |
_LIT8(KTestHrdVbvParams, "not exactly a package of parameters but never mind");
|
sl@0
|
178 |
|
sl@0
|
179 |
// direct screen access test data
|
sl@0
|
180 |
const TInt KTestDSARectA = 0;
|
sl@0
|
181 |
const TInt KTestDSARectB = 100;
|
sl@0
|
182 |
const TInt KTestDSARectC = 200;
|
sl@0
|
183 |
const TInt KTestDSARectD = 300;
|
sl@0
|
184 |
|
sl@0
|
185 |
// KTestDSARect1 = A, B, C, D;
|
sl@0
|
186 |
// KTestDSARect2 = D, C, B, A;
|
sl@0
|
187 |
|
sl@0
|
188 |
// KTestDSARegion1 = {KTestDSARect1};
|
sl@0
|
189 |
// KTestDSARegion2 = {KTestDSARect2};
|
sl@0
|
190 |
|
sl@0
|
191 |
// position test data
|
sl@0
|
192 |
const TInt KTestPosition = 12345;
|
sl@0
|
193 |
const TInt KTestPositionFatal = 666;
|
sl@0
|
194 |
const TInt KTestDecodePosition = 256;
|
sl@0
|
195 |
const TInt KTestPlayPosition = 512;
|
sl@0
|
196 |
|
sl@0
|
197 |
// buffer bytes test data
|
sl@0
|
198 |
const TUint KTestPreDecoderBytes = 1024;
|
sl@0
|
199 |
const TUint KTestPictureBytes = 2048;
|
sl@0
|
200 |
|
sl@0
|
201 |
// picture counters creation utility function
|
sl@0
|
202 |
static inline CMMFDevVideoPlay::TPictureCounters GetTestPictureCounters( void )
|
sl@0
|
203 |
{
|
sl@0
|
204 |
CMMFDevVideoPlay::TPictureCounters picCount;
|
sl@0
|
205 |
|
sl@0
|
206 |
picCount.iPicturesSkipped = 10;
|
sl@0
|
207 |
picCount.iPicturesDecoded = 20;
|
sl@0
|
208 |
picCount.iPicturesDisplayed = 30;
|
sl@0
|
209 |
picCount.iTotalPictures = 40;
|
sl@0
|
210 |
|
sl@0
|
211 |
return picCount;
|
sl@0
|
212 |
}
|
sl@0
|
213 |
|
sl@0
|
214 |
// picture counters comparison utility function
|
sl@0
|
215 |
static inline TBool ComparePictureCounters(const CMMFDevVideoPlay::TPictureCounters& a, const CMMFDevVideoPlay::TPictureCounters& b)
|
sl@0
|
216 |
{
|
sl@0
|
217 |
if ( (a.iPicturesSkipped == b.iPicturesSkipped) &&
|
sl@0
|
218 |
(a.iPicturesDecoded == b.iPicturesDecoded) &&
|
sl@0
|
219 |
(a.iPicturesDisplayed == b.iPicturesDisplayed) &&
|
sl@0
|
220 |
(a.iTotalPictures == b.iTotalPictures) )
|
sl@0
|
221 |
return ETrue;
|
sl@0
|
222 |
else return EFalse;
|
sl@0
|
223 |
}
|
sl@0
|
224 |
|
sl@0
|
225 |
// bitstream counters creation utility function
|
sl@0
|
226 |
static inline CMMFDevVideoPlay::TBitstreamCounters GetTestBitstreamCounters( void )
|
sl@0
|
227 |
{
|
sl@0
|
228 |
CMMFDevVideoPlay::TBitstreamCounters bitCount;
|
sl@0
|
229 |
|
sl@0
|
230 |
bitCount.iLostPackets = 256;
|
sl@0
|
231 |
bitCount.iTotalPackets = 512;
|
sl@0
|
232 |
|
sl@0
|
233 |
return bitCount;
|
sl@0
|
234 |
}
|
sl@0
|
235 |
|
sl@0
|
236 |
// bitstream counters comparison utility function
|
sl@0
|
237 |
static inline TBool CompareBitstreamCounters(const CMMFDevVideoPlay::TBitstreamCounters& a, const CMMFDevVideoPlay::TBitstreamCounters& b)
|
sl@0
|
238 |
{
|
sl@0
|
239 |
if ( (a.iLostPackets == b.iLostPackets) &&
|
sl@0
|
240 |
(a.iTotalPackets == b.iTotalPackets) )
|
sl@0
|
241 |
return ETrue;
|
sl@0
|
242 |
else return EFalse;
|
sl@0
|
243 |
}
|
sl@0
|
244 |
|
sl@0
|
245 |
// test num buffers
|
sl@0
|
246 |
const TUint KTestNumFreeBuffers = 4096;
|
sl@0
|
247 |
|
sl@0
|
248 |
// complexity levels
|
sl@0
|
249 |
const TUint KTestComplexityLevel1 = 1;
|
sl@0
|
250 |
const TUint KTestComplexityLevel2 = 3;
|
sl@0
|
251 |
const TUint KTestNumComplexityLevels1 = 5;
|
sl@0
|
252 |
const TUint KTestNumComplexityLevels2 = 10;
|
sl@0
|
253 |
|
sl@0
|
254 |
// complexity level info creation utility function
|
sl@0
|
255 |
static inline CMMFDevVideoPlay::TComplexityLevelInfo GetTestLevelInfo( TInt a )
|
sl@0
|
256 |
{
|
sl@0
|
257 |
CMMFDevVideoPlay::TComplexityLevelInfo levInfo;
|
sl@0
|
258 |
|
sl@0
|
259 |
levInfo.iOptions = CMMFDevVideoPlay::TComplexityLevelInfo::EAvgPictureRate;
|
sl@0
|
260 |
levInfo.iAvgPictureRate = 1.5;
|
sl@0
|
261 |
levInfo.iPictureSize.SetSize(a * 100,a * 200);
|
sl@0
|
262 |
levInfo.iRelativeImageQuality = 0.5;
|
sl@0
|
263 |
levInfo.iRequiredMIPS = a;
|
sl@0
|
264 |
levInfo.iRelativeProcessTime = 0.3;
|
sl@0
|
265 |
|
sl@0
|
266 |
return levInfo;
|
sl@0
|
267 |
}
|
sl@0
|
268 |
|
sl@0
|
269 |
// complexity level info comparison utility function
|
sl@0
|
270 |
static inline TBool CompareLevelInfos(const CMMFDevVideoPlay::TComplexityLevelInfo& a, const CMMFDevVideoPlay::TComplexityLevelInfo& b)
|
sl@0
|
271 |
{
|
sl@0
|
272 |
if ( (a.iOptions == b.iOptions) &&
|
sl@0
|
273 |
(a.iAvgPictureRate == b.iAvgPictureRate) &&
|
sl@0
|
274 |
(a.iPictureSize == b.iPictureSize) &&
|
sl@0
|
275 |
(a.iRelativeImageQuality == b.iRelativeImageQuality) &&
|
sl@0
|
276 |
(a.iRequiredMIPS == b.iRequiredMIPS) &&
|
sl@0
|
277 |
(a.iRelativeProcessTime == b.iRelativeProcessTime) )
|
sl@0
|
278 |
return ETrue;
|
sl@0
|
279 |
else return EFalse;
|
sl@0
|
280 |
}
|
sl@0
|
281 |
|
sl@0
|
282 |
// picture timestamp test data
|
sl@0
|
283 |
const TInt KTestPictureTimestamp = 12345;
|
sl@0
|
284 |
|
sl@0
|
285 |
// input buffer test data
|
sl@0
|
286 |
_LIT8(KTestBufferString, "Roobarb and Custard!");
|
sl@0
|
287 |
const TUint32 KTestBufferOptions = TVideoInputBuffer::EDecodingTimestamp;
|
sl@0
|
288 |
const TUint KTestBufferSize = 20;
|
sl@0
|
289 |
|
sl@0
|
290 |
// decoder info
|
sl@0
|
291 |
const TUint32 KTestDecoderInfoCount = 3;
|
sl@0
|
292 |
|
sl@0
|
293 |
const TText8* const KTestDecoderInfoMimeArray[KTestDecoderInfoCount] =
|
sl@0
|
294 |
{
|
sl@0
|
295 |
_S8("video/bunglevideo"),
|
sl@0
|
296 |
_S8("video/zippyvideo"),
|
sl@0
|
297 |
_S8("video/georgevideo")
|
sl@0
|
298 |
};
|
sl@0
|
299 |
|
sl@0
|
300 |
_LIT(KTestDecoderInfoManufacturer, "fred bloggs plc");
|
sl@0
|
301 |
_LIT(KTestDecoderInfoIdentifier, "video funkifier");
|
sl@0
|
302 |
|
sl@0
|
303 |
const TInt KTestDecoderInfoMaxSizeX = 256;
|
sl@0
|
304 |
const TInt KTestDecoderInfoMaxSizeY = 512;
|
sl@0
|
305 |
|
sl@0
|
306 |
_LIT8(KTestDecoderInfoCSInfo, "coded by a blind monkey");
|
sl@0
|
307 |
_LIT8(KTestDecoderInfoISInfo, "implemented by a baboon");
|
sl@0
|
308 |
|
sl@0
|
309 |
const TInt KTestDecoderInfoVersionMaj = 1;
|
sl@0
|
310 |
const TInt KTestDecoderInfoVersionMin = 2;
|
sl@0
|
311 |
const TInt KTestDecoderInfoVersionBuild = 3;
|
sl@0
|
312 |
// KTestDecoderInfoVersion = Maj.Min.Build;
|
sl@0
|
313 |
|
sl@0
|
314 |
// post processor info
|
sl@0
|
315 |
const TUint32 KTestPostProcInfoCount = 3;
|
sl@0
|
316 |
_LIT(KTestPostProcInfoManufacturer, "honest sid inc");
|
sl@0
|
317 |
_LIT(KTestPostProcInfoIdentifier, "video post-funkifier");
|
sl@0
|
318 |
|
sl@0
|
319 |
_LIT8(KTestPostProcInfoISInfo, "implemented by a lame pigeon");
|
sl@0
|
320 |
|
sl@0
|
321 |
const TInt KTestPostProcInfoVersionMaj = 1;
|
sl@0
|
322 |
const TInt KTestPostProcInfoVersionMin = 2;
|
sl@0
|
323 |
const TInt KTestPostProcInfoVersionBuild = 3;
|
sl@0
|
324 |
// KTestPostProcInfoVersion = Maj.Min.Build;
|
sl@0
|
325 |
|
sl@0
|
326 |
const TUint32 KTestPostProcInfoRotations = ERotate90Clockwise | ERotate90Anticlockwise | ERotate180;
|
sl@0
|
327 |
|
sl@0
|
328 |
const TYuvToRgbCapabilities KTestPostProcInfoYuvToRgbCaps = {1, 2, 3, ETrue, EFalse, ETrue, EFalse, 4};
|
sl@0
|
329 |
static inline TBool CompareYuvRgbCaps(const TYuvToRgbCapabilities& a, const TYuvToRgbCapabilities& b)
|
sl@0
|
330 |
{
|
sl@0
|
331 |
if ( (a.iSamplingPatterns == b.iSamplingPatterns) && (a.iCoefficients == b.iCoefficients) &&
|
sl@0
|
332 |
(a.iRgbFormats == b.iRgbFormats) && (a.iLightnessControl == b.iLightnessControl) &&
|
sl@0
|
333 |
(a.iSaturationControl == b.iSaturationControl) && (a.iContrastControl == b.iContrastControl) &&
|
sl@0
|
334 |
(a.iGammaCorrection == b.iGammaCorrection) && (a.iDitherTypes == b.iDitherTypes) )
|
sl@0
|
335 |
return ETrue;
|
sl@0
|
336 |
else return EFalse;
|
sl@0
|
337 |
}
|
sl@0
|
338 |
|
sl@0
|
339 |
const TUncompressedVideoFormat KTestPostProcInfoFormatArray[KTestPostProcInfoCount] =
|
sl@0
|
340 |
{{ERgbRawData}, {ERgbFbsBitmap}, {EYuvRawData}};
|
sl@0
|
341 |
|
sl@0
|
342 |
const TUint32 KTestPostProcInfoCombsArray[KTestPostProcInfoCount] =
|
sl@0
|
343 |
{KTestProcessType1, KTestProcessType2, EPpNoiseFilter | EPpColorEnhancement | EPpFrameStabilisation};
|
sl@0
|
344 |
|
sl@0
|
345 |
const TScaleFactor KTestPostProcInfoScaleFactorsArray[KTestPostProcInfoCount] =
|
sl@0
|
346 |
{{1, 2}, {1, 4}, {1,8}};
|
sl@0
|
347 |
|
sl@0
|
348 |
static inline TBool CompareScaleFactors(const TScaleFactor& a, const TScaleFactor& b)
|
sl@0
|
349 |
{
|
sl@0
|
350 |
if ((a.iScaleNum == b.iScaleNum) && (a.iScaleDenom == b.iScaleDenom))
|
sl@0
|
351 |
return ETrue;
|
sl@0
|
352 |
else return EFalse;
|
sl@0
|
353 |
}
|
sl@0
|
354 |
|
sl@0
|
355 |
const TUncompressedVideoFormat KTestPostProcInfoNegativeFormat = {EYuvRawData};
|
sl@0
|
356 |
const TUint32 KTestPostProcInfoNegativeComb = EPpCustom;
|
sl@0
|
357 |
|
sl@0
|
358 |
|
sl@0
|
359 |
// video header information
|
sl@0
|
360 |
const TVideoDataUnitType KTestDataUnitType = EDuCodedPicture;
|
sl@0
|
361 |
const TVideoDataUnitEncapsulation KTestDataUnitEncap = EDuElementaryStream;
|
sl@0
|
362 |
const TVideoInputBuffer::TVideoBufferOptions KTestInputBufferOptions = TVideoInputBuffer::EPresentationTimestamp;
|
sl@0
|
363 |
const TVideoPictureHeader::THeaderOptions KTestPictureHeaderOptions = TVideoPictureHeader::EPresentationTimestamp;
|
sl@0
|
364 |
const TInt KTestInputBufferTimestamp = 1000000;
|
sl@0
|
365 |
const TInt KTestPictureHeaderTimestamp = 2000000;
|
sl@0
|
366 |
_LIT8(KTestInputBufferData, "I'm a lumber jack and I'm OK!");
|
sl@0
|
367 |
|
sl@0
|
368 |
// TPictureData
|
sl@0
|
369 |
const TInt KTestPictureDataSizeX = 57;
|
sl@0
|
370 |
const TInt KTestPictureDataSizeY = 18;
|
sl@0
|
371 |
|
sl@0
|
372 |
// snapshot data
|
sl@0
|
373 |
const TInt KTestSnapshotTimestamp = 1000;
|
sl@0
|
374 |
const TPictureId KTestSnapshotId = {TPictureId::ETemporalReference, 999};
|
sl@0
|
375 |
|
sl@0
|
376 |
// clock deviation
|
sl@0
|
377 |
const TUint KTestClockDeviationMS = 500000; // 0.5 seconds
|
sl@0
|
378 |
const TUint KTestClockBigDeviationMS = 2000000; // 2 seconds
|
sl@0
|
379 |
const TUint KTestClock2Seconds = 2000000;
|
sl@0
|
380 |
const TUint KTestClock4Seconds = 4000000;
|
sl@0
|
381 |
const TUint KTestClock18Seconds = 18000000;
|
sl@0
|
382 |
const TUint KTestClock20Seconds = 20000000;
|
sl@0
|
383 |
const TUint KTestClock22Seconds = 22000000;
|
sl@0
|
384 |
|
sl@0
|
385 |
// devvideorecord specific test data
|
sl@0
|
386 |
const TInt KTestInputSize1X = 640;
|
sl@0
|
387 |
const TInt KTestInputSize1Y = 480;
|
sl@0
|
388 |
|
sl@0
|
389 |
const TInt KTestInputSize2X = 320;
|
sl@0
|
390 |
const TInt KTestInputSize2Y = 200;
|
sl@0
|
391 |
|
sl@0
|
392 |
const TInt KTestCamHandlePre = 1;
|
sl@0
|
393 |
const TInt KTestCamHandleEnc = 2;
|
sl@0
|
394 |
const TInt KTestCamHandleFatal = 666;
|
sl@0
|
395 |
|
sl@0
|
396 |
const TReal KTestPictureRate = 29.97;
|
sl@0
|
397 |
|
sl@0
|
398 |
// rgb data
|
sl@0
|
399 |
const TRgbRange KTestRgbRange1 = ERgbRangeFull;
|
sl@0
|
400 |
const TRgbRange KTestRgbRange2 = ERgbRange16to235;
|
sl@0
|
401 |
|
sl@0
|
402 |
// output pad
|
sl@0
|
403 |
const TInt KTestPadX = 100;
|
sl@0
|
404 |
const TInt KTestPadY = 200;
|
sl@0
|
405 |
const TInt KTestPadPointX = 300;
|
sl@0
|
406 |
const TInt KTestPadPointY = 400;
|
sl@0
|
407 |
|
sl@0
|
408 |
// color enhancement
|
sl@0
|
409 |
const TColorEnhancementOptions KTestColorEnhance1 = {1, 2, 3};
|
sl@0
|
410 |
const TColorEnhancementOptions KTestColorEnhance2 = {4, 5, 6};
|
sl@0
|
411 |
|
sl@0
|
412 |
static inline TBool CompareColorEnhancements(const TColorEnhancementOptions& a, const TColorEnhancementOptions& b)
|
sl@0
|
413 |
{
|
sl@0
|
414 |
if ( (a.iLightness == b.iLightness) &&
|
sl@0
|
415 |
(a.iSaturation == b.iSaturation) &&
|
sl@0
|
416 |
(a.iContrast == b.iContrast) )
|
sl@0
|
417 |
return ETrue;
|
sl@0
|
418 |
else return EFalse;
|
sl@0
|
419 |
}
|
sl@0
|
420 |
|
sl@0
|
421 |
// custom pre process options
|
sl@0
|
422 |
_LIT8(KTestCustomPreProc1, "rhubarb rhubarb rhubarb!");
|
sl@0
|
423 |
_LIT8(KTestCustomPreProc2, "custard custard custard?");
|
sl@0
|
424 |
|
sl@0
|
425 |
const TReal KTestRandomAccessRate = 0.555;
|
sl@0
|
426 |
const TUint KTestNumBitrateLayers = 369;
|
sl@0
|
427 |
|
sl@0
|
428 |
const TUint KTestLayer = 12;
|
sl@0
|
429 |
const TScalabilityType KTestScaleType = EScalabilityQualityFG;
|
sl@0
|
430 |
|
sl@0
|
431 |
const TUint KTestMaxRefPics = 9;
|
sl@0
|
432 |
const TUint KTestMaxPicDelay = 111;
|
sl@0
|
433 |
|
sl@0
|
434 |
// encoder buffer options creation utility function
|
sl@0
|
435 |
static inline TEncoderBufferOptions GetTestEncBufferOptions( void )
|
sl@0
|
436 |
{
|
sl@0
|
437 |
TEncoderBufferOptions buffOptions;
|
sl@0
|
438 |
|
sl@0
|
439 |
buffOptions.iMaxPreEncoderBufferPictures = 10;
|
sl@0
|
440 |
buffOptions.iHrdVbvSpec = KTestHrdVbvSpec;
|
sl@0
|
441 |
buffOptions.iHrdVbvParams.Set(KTestHrdVbvParams);
|
sl@0
|
442 |
buffOptions.iMaxOutputBufferSize = 100;
|
sl@0
|
443 |
buffOptions.iMaxCodedPictureSize = 200;
|
sl@0
|
444 |
buffOptions.iMaxCodedSegmentSize = 300;
|
sl@0
|
445 |
buffOptions.iMinNumOutputBuffers = 400;
|
sl@0
|
446 |
|
sl@0
|
447 |
return buffOptions;
|
sl@0
|
448 |
}
|
sl@0
|
449 |
|
sl@0
|
450 |
// encoder buffer options comparison utility function
|
sl@0
|
451 |
static inline TBool CompareEncBufferOptions(const TEncoderBufferOptions& a, const TEncoderBufferOptions& b)
|
sl@0
|
452 |
{
|
sl@0
|
453 |
if ( (a.iMaxPreEncoderBufferPictures == b.iMaxPreEncoderBufferPictures) &&
|
sl@0
|
454 |
(a.iHrdVbvSpec == b.iHrdVbvSpec) &&
|
sl@0
|
455 |
(a.iHrdVbvParams == b.iHrdVbvParams) &&
|
sl@0
|
456 |
(a.iMaxOutputBufferSize == b.iMaxOutputBufferSize) &&
|
sl@0
|
457 |
(a.iMaxCodedPictureSize == b.iMaxCodedPictureSize) &&
|
sl@0
|
458 |
(a.iMaxCodedSegmentSize == b.iMaxCodedSegmentSize) &&
|
sl@0
|
459 |
(a.iMinNumOutputBuffers == b.iMinNumOutputBuffers) )
|
sl@0
|
460 |
return ETrue;
|
sl@0
|
461 |
else return EFalse;
|
sl@0
|
462 |
}
|
sl@0
|
463 |
|
sl@0
|
464 |
_LIT8(KTestCSEncoderOptions, "there's a moose in the hoose!");
|
sl@0
|
465 |
_LIT8(KTestISEncoderOptions, "but did the moose chase the goose?");
|
sl@0
|
466 |
|
sl@0
|
467 |
_LIT8(KTestISInitOutput, "I am a mole...");
|
sl@0
|
468 |
_LIT8(KTestCSInitOutput, "...and I live in a hole!");
|
sl@0
|
469 |
|
sl@0
|
470 |
const TUint KTestProtectLevels = 444;
|
sl@0
|
471 |
const TUint KTestLevel = 11;
|
sl@0
|
472 |
const TUint KTestBitrate = 192;
|
sl@0
|
473 |
const TUint KTestStrength = EFecStrengthLow;
|
sl@0
|
474 |
|
sl@0
|
475 |
const TInt KTestLossBurstLength = 123456;
|
sl@0
|
476 |
const TUint KTestLossRate = 8192;
|
sl@0
|
477 |
|
sl@0
|
478 |
const TReal KTestErrorRate = 1.11;
|
sl@0
|
479 |
const TReal KTestStdDeviation = 2.22;
|
sl@0
|
480 |
|
sl@0
|
481 |
const TUint KTestSizeBytes = 8;
|
sl@0
|
482 |
const TUint KTestSizeMacroblocks = 244;
|
sl@0
|
483 |
|
sl@0
|
484 |
// encoder rate control options creation utility function
|
sl@0
|
485 |
static inline TRateControlOptions GetTestRateControlOptions( void )
|
sl@0
|
486 |
{
|
sl@0
|
487 |
TRateControlOptions rateOptions;
|
sl@0
|
488 |
|
sl@0
|
489 |
rateOptions.iControl = EBrControlPicture;
|
sl@0
|
490 |
rateOptions.iBitrate = 256;
|
sl@0
|
491 |
rateOptions.iPictureQuality = 512;
|
sl@0
|
492 |
rateOptions.iPictureRate = 1.234;
|
sl@0
|
493 |
rateOptions.iQualityTemporalTradeoff = 4.321;
|
sl@0
|
494 |
rateOptions.iLatencyQualityTradeoff = 5.678;
|
sl@0
|
495 |
|
sl@0
|
496 |
return rateOptions;
|
sl@0
|
497 |
}
|
sl@0
|
498 |
|
sl@0
|
499 |
// encoder rate control options comparison utility function
|
sl@0
|
500 |
static inline TBool CompareRateControlOptions(const TRateControlOptions& a, const TRateControlOptions& b)
|
sl@0
|
501 |
{
|
sl@0
|
502 |
if ( (a.iControl == b.iControl) &&
|
sl@0
|
503 |
(a.iBitrate == b.iBitrate) &&
|
sl@0
|
504 |
(a.iPictureQuality == b.iPictureQuality) &&
|
sl@0
|
505 |
(a.iPictureRate == b.iPictureRate) &&
|
sl@0
|
506 |
(a.iQualityTemporalTradeoff == b.iQualityTemporalTradeoff) &&
|
sl@0
|
507 |
(a.iLatencyQualityTradeoff == b.iLatencyQualityTradeoff) )
|
sl@0
|
508 |
return ETrue;
|
sl@0
|
509 |
else return EFalse;
|
sl@0
|
510 |
}
|
sl@0
|
511 |
|
sl@0
|
512 |
// scalability
|
sl@0
|
513 |
const TUint KTestNumSteps = 56;
|
sl@0
|
514 |
const TInLayerScalabilityType KTestLayerScaleType = EInLScalabilityTemporal;
|
sl@0
|
515 |
const TUint KTestBitrateShare1 = 666;
|
sl@0
|
516 |
const TUint KTestBitrateShare2 = 777;
|
sl@0
|
517 |
const TUint KTestPictureShare1 = 888;
|
sl@0
|
518 |
const TUint KTestPictureShare2 = 999;
|
sl@0
|
519 |
|
sl@0
|
520 |
const TUint KTestPointPeriod = 2;
|
sl@0
|
521 |
|
sl@0
|
522 |
// settings output
|
sl@0
|
523 |
_LIT8(KTestISSettingsOutput, "seven deadly sins...");
|
sl@0
|
524 |
_LIT8(KTestCSSettingsOutput, "...seven ways to win");
|
sl@0
|
525 |
|
sl@0
|
526 |
// picture timestamp
|
sl@0
|
527 |
const TInt KTestEncPictureTimestamp = 98765;
|
sl@0
|
528 |
|
sl@0
|
529 |
// supplemental info
|
sl@0
|
530 |
_LIT8(KTestSuppInfo, "don't eat spaghetti with chopsticks...");
|
sl@0
|
531 |
const TInt KTestSuppTime = 6000000;
|
sl@0
|
532 |
const TInt KTestSuppTimeCancel = 666666666;
|
sl@0
|
533 |
|
sl@0
|
534 |
const TInt KTestRecordPosition = 999666333;
|
sl@0
|
535 |
|
sl@0
|
536 |
const TUint KTestFreeBuffers = 9;
|
sl@0
|
537 |
const TUint KTestFreeBytes = 256;
|
sl@0
|
538 |
|
sl@0
|
539 |
// picture counters creation utility function
|
sl@0
|
540 |
static inline CMMFDevVideoRecord::TPictureCounters GetTestEncPictureCounters( void )
|
sl@0
|
541 |
{
|
sl@0
|
542 |
CMMFDevVideoRecord::TPictureCounters picCount;
|
sl@0
|
543 |
|
sl@0
|
544 |
picCount.iPicturesSkippedBufferOverflow = 10;
|
sl@0
|
545 |
picCount.iPicturesSkippedProcPower = 20;
|
sl@0
|
546 |
picCount.iPicturesSkippedRateControl = 30;
|
sl@0
|
547 |
picCount.iPicturesProcessed = 40;
|
sl@0
|
548 |
picCount.iInputPictures = 50;
|
sl@0
|
549 |
return picCount;
|
sl@0
|
550 |
}
|
sl@0
|
551 |
|
sl@0
|
552 |
// picture counters comparison utility function
|
sl@0
|
553 |
static inline TBool CompareEncPictureCounters(const CMMFDevVideoRecord::TPictureCounters& a, const CMMFDevVideoRecord::TPictureCounters& b)
|
sl@0
|
554 |
{
|
sl@0
|
555 |
if ( (a.iPicturesSkippedBufferOverflow == b.iPicturesSkippedBufferOverflow) &&
|
sl@0
|
556 |
(a.iPicturesSkippedProcPower == b.iPicturesSkippedProcPower) &&
|
sl@0
|
557 |
(a.iPicturesSkippedRateControl == b.iPicturesSkippedRateControl) &&
|
sl@0
|
558 |
(a.iPicturesProcessed == b.iPicturesProcessed) &&
|
sl@0
|
559 |
(a.iInputPictures == b.iInputPictures ))
|
sl@0
|
560 |
return ETrue;
|
sl@0
|
561 |
else return EFalse;
|
sl@0
|
562 |
}
|
sl@0
|
563 |
|
sl@0
|
564 |
const TInt KTestEncInputPictures = 10;
|
sl@0
|
565 |
|
sl@0
|
566 |
const TInt KTestFrameStableX1 = 5;
|
sl@0
|
567 |
const TInt KTestFrameStableY1 = 10;
|
sl@0
|
568 |
const TInt KTestFrameStableX2 = 300;
|
sl@0
|
569 |
const TInt KTestFrameStableY2 = 200;
|
sl@0
|
570 |
|
sl@0
|
571 |
const TPictureId KTestPictureId1 = {TPictureId::ETemporalReference, 999};
|
sl@0
|
572 |
const TPictureId KTestPictureId2 = {TPictureId::ETemporalReference, 666};
|
sl@0
|
573 |
const TPictureId KTestPictureId3 = {TPictureId::ETemporalReference, 333};
|
sl@0
|
574 |
|
sl@0
|
575 |
static inline TBool ComparePictureIDs(const TPictureId& a, const TPictureId&b)
|
sl@0
|
576 |
{
|
sl@0
|
577 |
return ((a.iIdType == b.iIdType) && (a.iId == b.iId));
|
sl@0
|
578 |
}
|
sl@0
|
579 |
|
sl@0
|
580 |
// slice loss
|
sl@0
|
581 |
const TUint KTestFirstMacroblock = 50;
|
sl@0
|
582 |
const TUint KTestNumMacroblocks = 3;
|
sl@0
|
583 |
|
sl@0
|
584 |
// ref picture data
|
sl@0
|
585 |
_LIT8(KTestRefPictureInfo, "there once was an ugly duckling...");
|
sl@0
|
586 |
|
sl@0
|
587 |
// start / stop / pause / resume positions
|
sl@0
|
588 |
const TInt KTestRecTimeStop = 0;
|
sl@0
|
589 |
|
sl@0
|
590 |
const TInt KTestRecTimeStartEnc = 10;
|
sl@0
|
591 |
const TInt KTestRecTimePauseEnc = 20;
|
sl@0
|
592 |
const TInt KTestRecTimeResumeEnc = 30;
|
sl@0
|
593 |
|
sl@0
|
594 |
const TInt KTestRecTimeStartPre = 40;
|
sl@0
|
595 |
const TInt KTestRecTimePausePre = 50;
|
sl@0
|
596 |
const TInt KTestRecTimeResumePre = 60;
|
sl@0
|
597 |
|
sl@0
|
598 |
// command to start buffer creation
|
sl@0
|
599 |
_LIT8(KTestISEncBuffers, "get them buffers a rollin!");
|
sl@0
|
600 |
_LIT8(KTestISEncBufferData, "steam rollin along!");
|
sl@0
|
601 |
|
sl@0
|
602 |
// encoder info
|
sl@0
|
603 |
const TUint32 KTestEncoderInfoCount = 3;
|
sl@0
|
604 |
|
sl@0
|
605 |
const TText8* const KTestEncoderInfoMimeArray[KTestEncoderInfoCount] =
|
sl@0
|
606 |
{
|
sl@0
|
607 |
_S8("video/bunglevideo"),
|
sl@0
|
608 |
_S8("video/zippyvideo"),
|
sl@0
|
609 |
_S8("video/georgevideo")
|
sl@0
|
610 |
};
|
sl@0
|
611 |
|
sl@0
|
612 |
_LIT(KTestEncoderInfoManufacturer, "bodgitt plc");
|
sl@0
|
613 |
_LIT(KTestEncoderInfoIdentifier, "video bodger");
|
sl@0
|
614 |
|
sl@0
|
615 |
_LIT8(KTestEncoderInfoCSInfo, "coded by a blind orangutan");
|
sl@0
|
616 |
_LIT8(KTestEncoderInfoISInfo, "implemented by an imp");
|
sl@0
|
617 |
|
sl@0
|
618 |
const TInt KTestEncoderInfoVersionMaj = 11;
|
sl@0
|
619 |
const TInt KTestEncoderInfoVersionMin = 22;
|
sl@0
|
620 |
const TInt KTestEncoderInfoVersionBuild = 33;
|
sl@0
|
621 |
// KTestEncoderInfoVersion = Maj.Min.Build;
|
sl@0
|
622 |
|
sl@0
|
623 |
const TInt KTestEncoderInfoMaxSizeX = 256;
|
sl@0
|
624 |
const TInt KTestEncoderInfoMaxSizeY = 512;
|
sl@0
|
625 |
const TUint KTestEncoderInfoMaxUEPLevels = 5;
|
sl@0
|
626 |
const TUint KTestEncoderInfoMaxBitrate = 963;
|
sl@0
|
627 |
const TUint KTestEncoderInfoMaxILSSteps = 555;
|
sl@0
|
628 |
const TUint32 KTestEncoderInfoPictureOptions = TVideoPicture::ESceneCut | TVideoPicture::EEffectParameters | TVideoPicture::ETimestamp;
|
sl@0
|
629 |
|
sl@0
|
630 |
static inline void GetTestEncoderInfoRate(TInt aIndex, TPictureRateAndSize& aRate)
|
sl@0
|
631 |
{
|
sl@0
|
632 |
TPictureRateAndSize rate;
|
sl@0
|
633 |
TSize size(aIndex * 10, aIndex * 20);
|
sl@0
|
634 |
TReal rIndex = aIndex;
|
sl@0
|
635 |
|
sl@0
|
636 |
rate.iPictureSize = size;
|
sl@0
|
637 |
rate.iPictureRate = rIndex / 10.0;
|
sl@0
|
638 |
|
sl@0
|
639 |
aRate = rate;
|
sl@0
|
640 |
}
|
sl@0
|
641 |
|
sl@0
|
642 |
// Pre Processor Info
|
sl@0
|
643 |
_LIT(KTestPreProcInfoManufacturer, "iced inc");
|
sl@0
|
644 |
_LIT(KTestPreProcInfoIdentifier, "video munger");
|
sl@0
|
645 |
|
sl@0
|
646 |
_LIT8(KTestPreProcInfoISInfo, "implemented by a marsupial");
|
sl@0
|
647 |
|
sl@0
|
648 |
const TInt KTestPreProcInfoVersionMaj = 44;
|
sl@0
|
649 |
const TInt KTestPreProcInfoVersionMin = 55;
|
sl@0
|
650 |
const TInt KTestPreProcInfoVersionBuild = 66;
|
sl@0
|
651 |
// KTestPreProcInfoVersion = Maj.Min.Build;
|
sl@0
|
652 |
const TUint32 KTestPreProcInfoRotations = KTestRotate1 | KTestRotate2;
|
sl@0
|
653 |
const TUint32 KTestPreProcInfoRgbRanges = KTestRgbRange1 | KTestRgbRange2;
|
sl@0
|
654 |
|
sl@0
|
655 |
const TYuvToYuvCapabilities KTestPreProcInfoYuvToYuvCaps = {1, 2, 3, 4};
|
sl@0
|
656 |
|
sl@0
|
657 |
static inline TBool CompareYuvYuvCapabilities(const TYuvToYuvCapabilities& a, const TYuvToYuvCapabilities& b)
|
sl@0
|
658 |
{
|
sl@0
|
659 |
return ((a.iInputSamplingPatterns == b.iInputSamplingPatterns) &&
|
sl@0
|
660 |
(a.iInputDataLayouts == b.iInputDataLayouts) &&
|
sl@0
|
661 |
(a.iOutputSamplingPatterns == b.iOutputSamplingPatterns) &&
|
sl@0
|
662 |
(a.iOutputDataLayouts == b.iOutputDataLayouts) );
|
sl@0
|
663 |
}
|
sl@0
|
664 |
|
sl@0
|
665 |
const TUncompressedVideoFormat KTestPreProcInfoOutputFormatArray[KTestPostProcInfoCount] =
|
sl@0
|
666 |
{{ERgbRawData}, {ERgbFbsBitmap}, {EYuvRawData}};
|
sl@0
|
667 |
|
sl@0
|
668 |
const TUncompressedVideoFormat KTestPreProcInfoInputFormatArray[KTestPostProcInfoCount] =
|
sl@0
|
669 |
{{ERgbFbsBitmap}, {EYuvRawData}, {ERgbRawData}};
|
sl@0
|
670 |
|
sl@0
|
671 |
const TUncompressedVideoFormat KTestPreProcInfoNegativeFormat = {ERgbRawData};
|
sl@0
|
672 |
|
sl@0
|
673 |
// Custom Interface UIDs
|
sl@0
|
674 |
const TUid KUidCustomInterfaceOne = {0x101F7DD1}; //Supported by decoder
|
sl@0
|
675 |
const TUid KUidCustomInterfaceTwo = {0x101F7DD2}; //Supported by post processor
|
sl@0
|
676 |
const TUid KUidCustomInterfaceThree = {0x101F7DD3}; //Supported by encoder
|
sl@0
|
677 |
const TUid KUidCustomInterfaceFour = {0x101F7DD4}; //Supported by pre processor
|
sl@0
|
678 |
|
sl@0
|
679 |
#endif // __TESTDEVVIDEOPLAYTESTDATA_H__
|