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