os/mm/mmhais/videohai/devvideo/inc/Mpeg4Visual.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
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
// Constants and structs specific to Mpeg4 Visual.  See the DevVideo specs for more details.
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
#ifndef __DEVVIDEO_MPEG4VISUAL_H__
sl@0
    19
#define __DEVVIDEO_MPEG4VISUAL_H__
sl@0
    20
sl@0
    21
#include <e32base.h>
sl@0
    22
#include <mmf/devvideo/h263.h>
sl@0
    23
sl@0
    24
/**
sl@0
    25
Specifies the picture type.
sl@0
    26
@publishedAll
sl@0
    27
@released
sl@0
    28
*/
sl@0
    29
enum TMPEG4VisualVOPType
sl@0
    30
    {
sl@0
    31
	/**
sl@0
    32
	An Intra-coded (I) VOP is coded using information only from itself.
sl@0
    33
	*/
sl@0
    34
    EMPEG4VisualVOPTypeI = 0x01,
sl@0
    35
sl@0
    36
	/**
sl@0
    37
	A Predictive-coded (P) VOP is a VOP which is coded using motion compensated prediction from a 
sl@0
    38
	past reference VOP.
sl@0
    39
	*/
sl@0
    40
    EMPEG4VisualVOPTypeP = 0x02,
sl@0
    41
sl@0
    42
	/**
sl@0
    43
	A Bidirectionally predictive-coded (B) VOP is a VOP which is coded using motion compensated 
sl@0
    44
	prediction from a past and/or future reference VOP(s).
sl@0
    45
	*/
sl@0
    46
    EMPEG4VisualVOPTypeB = 0x04,
sl@0
    47
sl@0
    48
	/**
sl@0
    49
	A sprite (S) VOP is a VOP for a sprite object or a VOP which is coded using prediction based on
sl@0
    50
	global motion compensation from a past reference VOP.
sl@0
    51
	*/
sl@0
    52
    EMPEG4VisualVOPTypeS = 0x08
sl@0
    53
    };
sl@0
    54
sl@0
    55
/**
sl@0
    56
Specifies the MPEG-4 Visual header types.
sl@0
    57
@publishedAll
sl@0
    58
@released
sl@0
    59
*/
sl@0
    60
enum TMPEG4VisualHeaderType
sl@0
    61
    {
sl@0
    62
	/**
sl@0
    63
	Visual Object Sequence Header.
sl@0
    64
	*/
sl@0
    65
    EMPEG4VisualHeaderSequence = 0x01,
sl@0
    66
sl@0
    67
	/**
sl@0
    68
	Visual Object Header.
sl@0
    69
	*/
sl@0
    70
    EMPEG4VisualHeaderObject   = 0x02,
sl@0
    71
sl@0
    72
	/**
sl@0
    73
	Video Object Layer Header.
sl@0
    74
	*/
sl@0
    75
    EMPEG4VisualHeaderVOL      = 0x04,
sl@0
    76
sl@0
    77
	/**
sl@0
    78
	Group of Video Object Plane Header.
sl@0
    79
	*/
sl@0
    80
    EMPEG4VisualHeaderGOV      = 0x08,
sl@0
    81
sl@0
    82
	/**
sl@0
    83
	Video Object Plane Header.
sl@0
    84
	*/
sl@0
    85
    EMPEG4VisualHeaderVOP      = 0x10
sl@0
    86
    };
sl@0
    87
sl@0
    88
sl@0
    89
/**
sl@0
    90
Object sequence header.
sl@0
    91
@publishedAll
sl@0
    92
@released
sl@0
    93
*/
sl@0
    94
class TMPEG4VisualObjectSequenceHeader
sl@0
    95
    {
sl@0
    96
public:
sl@0
    97
	/**
sl@0
    98
	Used to signal the profile and level identification according to Table G-1 of MPEG-4 Visual.
sl@0
    99
	*/
sl@0
   100
    TUint iProfileLevel;
sl@0
   101
sl@0
   102
	/**
sl@0
   103
	Contains the user_data bytes, if any, that are directly included in the VideoObjectSequence() 
sl@0
   104
	syntax structure (subclause 6.2.2 of MPEG-4 Visual), in bitstream order. The pointer must remain
sl@0
   105
	valid as long as the object it belongs to is being processed by the client (for playback) or MSL
sl@0
   106
	video subsystem (for recording).
sl@0
   107
	*/
sl@0
   108
    TPtrC8 iUserData;
sl@0
   109
    };
sl@0
   110
sl@0
   111
/**
sl@0
   112
Object header.
sl@0
   113
@publishedAll
sl@0
   114
@released
sl@0
   115
*/
sl@0
   116
class TMPEG4VisualObjectHeader
sl@0
   117
    {
sl@0
   118
public:
sl@0
   119
	/**
sl@0
   120
	Identifies the version number of the visual object as specified in the semantics of 
sl@0
   121
	visual_object_verid syntax element of MPEG-4 Visual.
sl@0
   122
	*/
sl@0
   123
    TUint iVisualObjectVerid;
sl@0
   124
sl@0
   125
	/**
sl@0
   126
	Specifies the priority of the visual object as specified in the semantics of 
sl@0
   127
	visual_object_priority syntax element of MPEG-4 Visual. If the visual_object_priority syntax 
sl@0
   128
	element is not present in the bitstream, iVisualObjectPriority shall be equal to 0.
sl@0
   129
	*/
sl@0
   130
    TUint iVisualObjectPriority;
sl@0
   131
sl@0
   132
	/**
sl@0
   133
	Identifies the type of the visual object as specified in the semantics of 
sl@0
   134
	visual_object_type syntax element of MPEG-4 Visual. HW devices according to this specification 
sl@0
   135
	are required to set iVisualObjectType to 1 (to indicate "video ID").
sl@0
   136
	*/
sl@0
   137
    TUint iVisualObjectType;
sl@0
   138
sl@0
   139
	/**
sl@0
   140
	Uniquely identifies the video object. The value of iVideoObjectId shall be the same as the 
sl@0
   141
	value of the video_object_id syntax element specified in MPEG-4 Visual.
sl@0
   142
	*/
sl@0
   143
    TUint iVideoObjectId;
sl@0
   144
sl@0
   145
	/**
sl@0
   146
	Contains the user_data bytes, if any, that are directly included in the VideoObject() syntax 
sl@0
   147
	structure (subclause 6.2.2 of MPEG-4 Visual), in bitstream order. The pointer must remain valid
sl@0
   148
	as long as the object it belongs to is being processed by the client (for playback) or MSL video
sl@0
   149
	subsystem (for recording).
sl@0
   150
	*/
sl@0
   151
    TPtrC8 iUserData;
sl@0
   152
    };
sl@0
   153
sl@0
   154
/**
sl@0
   155
Mpeg4 Visual VBV parameters.
sl@0
   156
sl@0
   157
If the syntax elements that are used to derive the values of the class member variables are not 
sl@0
   158
present in the bitstream, the variable values shall be set to default values as specified in 
sl@0
   159
Annex D of MPEG-4 Visual.
sl@0
   160
@publishedAll
sl@0
   161
@released
sl@0
   162
*/
sl@0
   163
class TMPEG4VisualVbvParams
sl@0
   164
    {
sl@0
   165
public:
sl@0
   166
	/**
sl@0
   167
	Specifies the instantaneous video object layer channel bit rate in bits per second. Shall be set
sl@0
   168
	to ((first_half_bit_rate << 15) + latter_half_bit_rate) * 400, where the values of 
sl@0
   169
	first_half_bit_rate and latter_half_bit_rate are conveyed in the VideoObjectLayer syntax 
sl@0
   170
	structure of MPEG-4 Visual.
sl@0
   171
	*/
sl@0
   172
    TInt64 iBitRate;
sl@0
   173
sl@0
   174
	/**
sl@0
   175
	Specifies the VBV buffer size in bytes. Shall be set to 
sl@0
   176
	((first_half_vbv_buffer_size) << 3) + latter_half_vbv_buffer_size) * 2048, 
sl@0
   177
	where the values of first_half_vbv_buffer_size and latter_half_vbv_buffer_size are conveyed in 
sl@0
   178
	the VideoObjectLayer syntax structure of MPEG-4 Visual.
sl@0
   179
	*/
sl@0
   180
    TUint32 iVbvBufferSize;
sl@0
   181
sl@0
   182
	/**
sl@0
   183
	Specifies VBV occupancy in bytes just before the removal of the first VOP following the VOL 
sl@0
   184
	header. The purpose for the quantity is to provide the initial condition for VBV buffer fullness. 
sl@0
   185
	Shall be set to ((first_half_vbv_occupancy) << 15) + latter_half_vbv_occupancy) * 2048, where
sl@0
   186
	the values of first_half_vbv_occupancy and latter_half_vbv_occupancy are conveyed in the 
sl@0
   187
	VideoObjectLayer syntax structure of MPEG-4 Visual.
sl@0
   188
	*/
sl@0
   189
    TUint32 iVbvOccupancy;
sl@0
   190
    };
sl@0
   191
sl@0
   192
sl@0
   193
/**
sl@0
   194
Video object layer header.
sl@0
   195
@publishedAll
sl@0
   196
@released
sl@0
   197
*/
sl@0
   198
class TMPEG4VisualVOLHeader
sl@0
   199
    {
sl@0
   200
public:
sl@0
   201
	/**
sl@0
   202
	Uniquely identifies the video object layer. The value of iVideoObjectLayerId shall be the same
sl@0
   203
	as the value of the video_object_layer_id syntax element specified in MPEG-4 Visual.
sl@0
   204
	*/
sl@0
   205
    TUint iVideoObjectLayerId;
sl@0
   206
sl@0
   207
	/**
sl@0
   208
	iShortVideoHeader equal to ETrue indicates that the associated elementary stream conforms to
sl@0
   209
	ITU-T Recommendation H.263 (without optional coding modes).  The value of iShortVideoHeader 
sl@0
   210
	shall be equal to the value of the short_video_header flag of MPEG-4 Visual. 
sl@0
   211
	*/
sl@0
   212
    TBool iShortVideoHeader;
sl@0
   213
sl@0
   214
	/**
sl@0
   215
	iRandomAccessibleVOL equal to ETrue indicates that every VOP in this VOL is individually
sl@0
   216
	decodable. The value of iRandomAccessibleVOL shall be equal to the value of the 
sl@0
   217
	random_accessible_vol flag of MPEG-4 Visual.
sl@0
   218
	*/
sl@0
   219
    TBool iRandomAccessibleVOL;
sl@0
   220
sl@0
   221
	/**
sl@0
   222
	Indicates the object type as specified in Table 6-10 of MPEG-4 Visual and constrains the 
sl@0
   223
	associated elementary stream to use tools from the indicated object type. HW devices according
sl@0
   224
	to this specification are required to set iVideoObjectTypeIndication to 1 (to indicate Simple
sl@0
   225
	Object Type).
sl@0
   226
	*/
sl@0
   227
    TUint iVideoObjectTypeIndication;
sl@0
   228
sl@0
   229
	/**
sl@0
   230
	Identifies the version number of the video object layer as specified in the semantics of 
sl@0
   231
	video_object_layer_verid syntax element of MPEG-4 Visual.
sl@0
   232
	*/
sl@0
   233
    TUint iVideoObjectLayerVerid;
sl@0
   234
sl@0
   235
	/**
sl@0
   236
	*/
sl@0
   237
    TUint iVideoObjectLayerPriority;
sl@0
   238
sl@0
   239
	/**
sl@0
   240
	Specifies the priority of the video object layer as specified in the semantics of 
sl@0
   241
	video_object_layer_priority syntax element of MPEG-4 Visual. If the video_object_layer_priority
sl@0
   242
	syntax element is not present in the bitstream, iVideoObjectLayerPriority shall be equal to 0.
sl@0
   243
	*/
sl@0
   244
    TUint iAspectRatioNum;
sl@0
   245
sl@0
   246
	/**
sl@0
   247
	Pixel aspect ratio numerator and denominator respectively. The pixel aspect ratio is defined as 
sl@0
   248
	iAspectRatioNum/iAspectRatioDenom, where the values are positive integers and relatively prime. 
sl@0
   249
	These values shall be set according to the value of aspect_ratio_info, par_width (if present), 
sl@0
   250
	and par_height (if present) syntax elements in the VideoObjectLayer() syntax structure of MPEG-4
sl@0
   251
	Visual.
sl@0
   252
	*/
sl@0
   253
    TUint iAspectRatioDenom;
sl@0
   254
sl@0
   255
	/**
sl@0
   256
	Specifies the VBV parameters in use for the VOL. The values in iVbvParams are valid if 
sl@0
   257
	iShortVideoHeader equals to EFalse. If iShortVideoHeader equals to ETrue, the VBV operation and 
sl@0
   258
	parameters are specified in Annex D of MPEG-4 Visual.
sl@0
   259
	*/
sl@0
   260
    TMPEG4VisualVbvParams iVbvParams;
sl@0
   261
sl@0
   262
	/**
sl@0
   263
	Indicates the number of evenly spaced subintervals, called ticks, within one modulo time. One
sl@0
   264
	modulo time represents the fixed interval of one second. Shall be set equal to the value of 
sl@0
   265
	vop_time_increment_resolution of the VideoObjectLayer() syntax structure of MPEG-4 Visual.
sl@0
   266
	*/
sl@0
   267
    TUint16 iVOPTimeIncrementResolution;
sl@0
   268
sl@0
   269
	/**
sl@0
   270
	iFixedVOPRate equal to ETrue indicates that all VOPs are coded with a fixed VOP rate. 
sl@0
   271
	iFixedVOPRate equal to EFalse indicates that some VOPs may not be coded with a fixed VOP rate. 
sl@0
   272
	Shall be set equal to the value of fixed_vop_rate of the VideoObjectLayer() syntax structure
sl@0
   273
	of MPEG-4 Visual.
sl@0
   274
	*/
sl@0
   275
    TBool iFixedVOPRate;
sl@0
   276
sl@0
   277
	/**
sl@0
   278
	The number of ticks between two successive VOPs in the display order. Valid only if 
sl@0
   279
	iFixedVOPRate is equal to ETrue. Shall be set equal to the value of fixed_vop_time_increment 
sl@0
   280
	of the VideoObjectLayer() syntax structure of MPEG-4 Visual.
sl@0
   281
	*/
sl@0
   282
    TUint16 iFixedVOPTimeIncrement;
sl@0
   283
sl@0
   284
	/**
sl@0
   285
	iDataPartitioning equal to ETrue indicates that slices are organized in data partitions within 
sl@0
   286
	the associated elementary bitstream. Shall be set equal to the value of the data_partitioned 
sl@0
   287
	syntax element of the VideoObjectLayer() syntax structure of MPEG-4 Visual.
sl@0
   288
	*/
sl@0
   289
    TBool iDataPartitioning;
sl@0
   290
sl@0
   291
	/**
sl@0
   292
	iReversibleVLC equal to ETrue indicates that the reversible variable length tables of MPEG-4 
sl@0
   293
	Visual are in use in the associated elementary bistream. Shall be set equal to the value of the
sl@0
   294
	reversible_vlc syntax element of the VideoObjectLayer() syntax structure of MPEG-4 Visual. If 
sl@0
   295
	reversible_vlc is not present in the bitstream, the value of iReversibleVLC shall be set to 
sl@0
   296
	EFalse.
sl@0
   297
	*/
sl@0
   298
    TBool iReversibleVLC;
sl@0
   299
sl@0
   300
	/**
sl@0
   301
	Contains the user_data bytes, if any, that are directly included in the VideoObjectLayer()
sl@0
   302
	syntax structure, in bitstream order. The pointer must remain valid as long as the object it 
sl@0
   303
	belongs to is being processed by the client (for playback) or MSL video subsystem (for 
sl@0
   304
	recording).
sl@0
   305
	*/
sl@0
   306
    TPtrC8 iUserData;
sl@0
   307
    };
sl@0
   308
sl@0
   309
sl@0
   310
/**
sl@0
   311
Mpeg4 visual GOV header.
sl@0
   312
@publishedAll
sl@0
   313
@released
sl@0
   314
*/
sl@0
   315
class TMPEG4VisualGOVHeader
sl@0
   316
    {
sl@0
   317
public:
sl@0
   318
	/**
sl@0
   319
	iTimeCodeHours, iTimeCodeMinutes and iTimeCodeSeconds together specify the modulo part (i.e. the 
sl@0
   320
	full second units) of the time base for the first object plane (in display order) after the GOV 
sl@0
   321
	header according to the semantics of the time_code syntax element of MPEG-4 Visual.
sl@0
   322
	*/
sl@0
   323
    TUint iTimeCodeHours;
sl@0
   324
sl@0
   325
	/**
sl@0
   326
	iTimeCodeHours, iTimeCodeMinutes and iTimeCodeSeconds together specify the modulo part (i.e. the 
sl@0
   327
	full second units) of the time base for the first object plane (in display order) after the GOV 
sl@0
   328
	header according to the semantics of the time_code syntax element of MPEG-4 Visual.
sl@0
   329
	*/
sl@0
   330
    TUint iTimeCodeMinutes;
sl@0
   331
sl@0
   332
	/**
sl@0
   333
	iTimeCodeHours, iTimeCodeMinutes and iTimeCodeSeconds together specify the modulo part (i.e. the 
sl@0
   334
	full second units) of the time base for the first object plane (in display order) after the GOV 
sl@0
   335
	header according to the semantics of the time_code syntax element of MPEG-4 Visual.
sl@0
   336
	*/
sl@0
   337
    TUint iTimeCodeSeconds;
sl@0
   338
sl@0
   339
	/**
sl@0
   340
	Indicates the nature of the predictions used in the first consecutive B-VOPs (if any) 
sl@0
   341
	immediately following the first coded I-VOP after the GOV header. iClosedGOV equal to ETrue
sl@0
   342
	indicates that there are no such B-VOPs or that these B-VOPs have been encoded using only 
sl@0
   343
	backward prediction or intra coding. The value of iClosedGOV shall be set equal to the value of
sl@0
   344
	closed_gov syntax element of MPEG-4 Visual.
sl@0
   345
	*/
sl@0
   346
    TBool iClosedGOV;
sl@0
   347
sl@0
   348
	/**
sl@0
   349
	iBrokenLink equal to ETrue indicates that the first consecutive B-VOPs (if any) immediately 
sl@0
   350
	following the first coded I-VOP following the GOV header may not be correctly decoded because
sl@0
   351
	the reference frame which is used for prediction is not available (e.g., due to result of 
sl@0
   352
	editing in compressed domain). A decoder may use this flag to avoid displaying frames that 
sl@0
   353
	cannot be correctly decoded. The value of iBrokenLink shall be set equal to the value of 
sl@0
   354
	broken_link syntax element of MPEG-4 Visual.
sl@0
   355
	*/
sl@0
   356
    TBool iBrokenLink;
sl@0
   357
    };
sl@0
   358
sl@0
   359
sl@0
   360
/**
sl@0
   361
Mpeg4 visual VOP header.
sl@0
   362
@publishedAll
sl@0
   363
@released
sl@0
   364
*/
sl@0
   365
class TMPEG4VisualVOPHeader
sl@0
   366
    {
sl@0
   367
public:
sl@0
   368
	/**
sl@0
   369
	Indicates the coding type of the VOP.
sl@0
   370
	*/
sl@0
   371
    TMPEG4VisualVOPType iVOPCodingType;
sl@0
   372
sl@0
   373
	/**
sl@0
   374
	Indicates the number of seconds elapsed since the previous GOV header or since the previous
sl@0
   375
	picture in display order, whichever is closer in display order. The value of iModuloTimeBase 
sl@0
   376
	shall be set equal to the decoded value derived from a series of modulo_time_base fields as 
sl@0
   377
	specified in MPEG-4 Visual.
sl@0
   378
	*/
sl@0
   379
    TUint iModuloTimeBase;
sl@0
   380
sl@0
   381
	/**
sl@0
   382
	VOP display time relative to iModuloTimeBase in clock ticks. The value of iVOPTimeIncrement 
sl@0
   383
	shall be set equal to the value of the vop_time_increment syntax element of MPEG-4 Visual.
sl@0
   384
	*/
sl@0
   385
    TUint16 iVOPTimeIncrement;
sl@0
   386
sl@0
   387
	/**
sl@0
   388
	iVOPCoded equal to EFalse indicates that the VOP is a copy of the previous VOP in display order.
sl@0
   389
	The value of iVOPCoded shall be set equal to the value of the vop_coded syntax element of MPEG-4
sl@0
   390
	Visual.
sl@0
   391
	*/
sl@0
   392
    TBool iVOPCoded;
sl@0
   393
sl@0
   394
	/**
sl@0
   395
	Indicates the initial value of the quantization parameter. iVOPQuant shall be set equal to the
sl@0
   396
	value of the vop_quant syntax element.
sl@0
   397
	*/
sl@0
   398
    TUint iVOPQuant;
sl@0
   399
sl@0
   400
	/**
sl@0
   401
	Indicates the VOP ID. iVOPId shall be set equal to the value of the vop_id syntax element. Valid
sl@0
   402
	only if the flag newpred_enable is equal to 1.
sl@0
   403
	*/
sl@0
   404
    TUint16 iVOPId;
sl@0
   405
sl@0
   406
	/**
sl@0
   407
	When equal to ETrue indicates the following iVOPIdForPrediction is valid. Valid only if the flag
sl@0
   408
	newpred_enable is equal to 1.
sl@0
   409
	*/
sl@0
   410
    TBool iVOPIdForPredictionValid;
sl@0
   411
sl@0
   412
	/**
sl@0
   413
	Indicates VOP ID of the VOP that is used as the reference VOP for the current VOP. 
sl@0
   414
	iVOPIdForPrediction shall be set equal to the value of the vop_id_for_prediction if the syntax 
sl@0
   415
	element is present (i.e. the ). Valid only if iVOPIdForPredictionValid is equal to ETrue.
sl@0
   416
	*/
sl@0
   417
    TUint16 iVOPIdForPrediction;
sl@0
   418
    };
sl@0
   419
sl@0
   420
sl@0
   421
/**
sl@0
   422
This class is used to convey information of Visual Object Sequence, Visual Object, VOL, GOV, and VOP 
sl@0
   423
headers that are consecutive in decoding order without any intervening syntax structures.
sl@0
   424
@publishedAll
sl@0
   425
@released
sl@0
   426
*/
sl@0
   427
class TMPEG4VisualHeader
sl@0
   428
    {
sl@0
   429
public:
sl@0
   430
	/**
sl@0
   431
	A binary OR of values specified in TMPEG4VisualHeaderType:
sl@0
   432
		* EMPEG4VisualHeaderSequence - set if the visual object sequence header is present and 
sl@0
   433
		  iVisualObjectSequenceHeader is set accordingly. Otherwise, iVisualObjectSequenceHeader 
sl@0
   434
		  shall be set to NULL.
sl@0
   435
		* EMPEG4VisualHeaderObject - set if the visual object header is present and 
sl@0
   436
		  iVisualObjectHeader is set accordingly. Otherwise, iVisualObjectHeader shall be set
sl@0
   437
		  to NULL.
sl@0
   438
		* EMPEG4VisualHeaderVOL - set if the VOL header is present and iVOLHeader is set accordingly.
sl@0
   439
		  Otherwise, iVOLHeader shall be set to NULL.
sl@0
   440
		* EMPEG4VisualHeaderGOV - set if the GOV header is present and iGOVHeader is set accordingly.
sl@0
   441
		  Otherwise, iGOVHeader shall be set to NULL.
sl@0
   442
		* EMPEG4VisualHeaderVOP - set if the VOP header is present and iVOPHeader is set accordingly.
sl@0
   443
		  Otherwise, iVOPHeader shall be set to NULL
sl@0
   444
	*/
sl@0
   445
    TUint32 iConsecutiveHeaders;
sl@0
   446
sl@0
   447
	/**
sl@0
   448
	The visual object sequence header.
sl@0
   449
	*/
sl@0
   450
    const TMPEG4VisualObjectSequenceHeader* iVisualObjectSequenceHeader;
sl@0
   451
sl@0
   452
	/**
sl@0
   453
	The visual object header.
sl@0
   454
	*/
sl@0
   455
    const TMPEG4VisualObjectHeader* iVisualObjectHeader;
sl@0
   456
sl@0
   457
	/**
sl@0
   458
	The VOL header.
sl@0
   459
	*/
sl@0
   460
    const TMPEG4VisualVOLHeader* iVOLHeader;
sl@0
   461
sl@0
   462
	/**
sl@0
   463
	The GOV header.
sl@0
   464
	*/
sl@0
   465
    const TMPEG4VisualGOVHeader* iGOVHeader;
sl@0
   466
sl@0
   467
	/**
sl@0
   468
	The VOP header.
sl@0
   469
	*/
sl@0
   470
    const TMPEG4VisualVOPHeader* iVOPHeader;
sl@0
   471
    };
sl@0
   472
sl@0
   473
sl@0
   474
sl@0
   475
/**
sl@0
   476
This class is used to signal decoder or encoder capabilities.
sl@0
   477
@publishedAll
sl@0
   478
@released
sl@0
   479
*/
sl@0
   480
class TMPEG4VisualCapability
sl@0
   481
    {
sl@0
   482
public:
sl@0
   483
	/*
sl@0
   484
	iProfileLevel[ i ] indicates a supported combination of profile and level, i.e., 
sl@0
   485
	profile_and_level_indication, according to Table G-1 of MPEG-4 Visual. The values of i from 62 
sl@0
   486
	to 255 are reserved (the MPEG-4 Visual standard referenced in the present document has 62 
sl@0
   487
	combinations of profile and level). 
sl@0
   488
	*/
sl@0
   489
    TUint8 iProfileLevel[256];
sl@0
   490
    };
sl@0
   491
sl@0
   492
sl@0
   493
/**
sl@0
   494
This class is used to set the encoder operation mode.
sl@0
   495
@publishedAll
sl@0
   496
@released
sl@0
   497
*/
sl@0
   498
class TMPEG4VisualNormalMPEG4Mode
sl@0
   499
    {
sl@0
   500
public:
sl@0
   501
	/**
sl@0
   502
	Specifies the picture types allowed in the bitstream. The value is a binary OR of values from
sl@0
   503
	TMPEG4VisualVOPType. Signaled picture types that are not included in the prevailing coding 
sl@0
   504
	profile are ignored.
sl@0
   505
	*/
sl@0
   506
    TMPEG4VisualVOPType iAllowedVOPTypes;
sl@0
   507
	
sl@0
   508
	/**
sl@0
   509
	Specifies the number of consecutive video packet headers within a VOP, starting from the first
sl@0
   510
	video packet header in decoding order, where the value of header_extension_code shall be set to 1. 
sl@0
   511
	*/
sl@0
   512
    TUint iHeaderExtension;
sl@0
   513
sl@0
   514
	/**
sl@0
   515
	Specifies whether data partitioning is in use. When equal to ETrue, data partitioning is in use.
sl@0
   516
	When equal to EFalse, data partitioning is not in use. If data partitioning is in use, the 
sl@0
   517
	SetErrorProtectionLevelsL method, if used, should set the number of unequal error protection
sl@0
   518
	levels to be larger than one. 
sl@0
   519
	*/
sl@0
   520
    TBool iDataPartitioning;
sl@0
   521
	
sl@0
   522
	/**
sl@0
   523
	Specifies whether reversible variable length coding is in use. When equal to ETrue, reversible 
sl@0
   524
	variable length coding is in use. When equal to EFalse, reversible variable length coding is 
sl@0
   525
	not in use. Valid only if iDataPartitioned is equal to ETrue.
sl@0
   526
	*/
sl@0
   527
    TBool iReversibleVLC;
sl@0
   528
	
sl@0
   529
	/**
sl@0
   530
	Specifies which headers are included in the first output buffer of each intra VOP. (Note: Video
sl@0
   531
	Object Sequence and Video Object Headers can be repeated for error resiliency. VOL Header 
sl@0
   532
	includes the initial buffer occupancy level. GOV header includes an update on display times.)
sl@0
   533
	*/
sl@0
   534
    TMPEG4VisualHeaderType iHeadersBeforeIntraVOP;
sl@0
   535
    };
sl@0
   536
sl@0
   537
/**
sl@0
   538
This class is used to set the encoder operation mode.
sl@0
   539
@publishedAll
sl@0
   540
@released
sl@0
   541
*/
sl@0
   542
class TMPEG4VisualMode
sl@0
   543
    {
sl@0
   544
public:
sl@0
   545
	/**
sl@0
   546
	Indicates whether the short header mode of MPEG-4 Visual is used. If iShortHeaderMode is 
sl@0
   547
	equal to ETrue, then iH263VideoMode is valid and all other parameter values are invalid. If 
sl@0
   548
	iShortHeaderMode is equal to EFalse, then iH263VideoMode is invalid and all other parameter 
sl@0
   549
	values are valid. 
sl@0
   550
	*/
sl@0
   551
    TBool iShortHeaderMode;
sl@0
   552
	
sl@0
   553
	/**
sl@0
   554
	Contains the encoding modes to use when iShortHeaderMode is EFalse.
sl@0
   555
	*/
sl@0
   556
    TMPEG4VisualNormalMPEG4Mode iMPEG4VisualNormalMPEG4Mode;
sl@0
   557
sl@0
   558
	/**
sl@0
   559
	Contains the encoding modes to use when iShortHeaderMode is ETrue.
sl@0
   560
	*/
sl@0
   561
    TH263VideoMode iH263VideoMode;
sl@0
   562
    };
sl@0
   563
sl@0
   564
	
sl@0
   565
sl@0
   566
#endif