epoc32/include/mmf/devvideo/avc.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100 (2010-03-31)
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.
     1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Constants and structs specific to AVC.  See the DevVideo specs for more details.
    15 // 
    16 //
    17 
    18 #ifndef __DEVVIDEO_AVC_H__
    19 #define __DEVVIDEO_AVC_H__
    20 
    21 #include <e32base.h>
    22 
    23 /**
    24 Specifies the picture type.
    25 @publishedAll
    26 @released
    27 */
    28 enum TAvcPictureType
    29     {
    30 	/**
    31 	INTRA picture, a picture consisted of at least one I slice and zero or more SI slices
    32 	*/
    33 	EAvcPictureTypeI   = 0x01,
    34 
    35 	/**
    36 	INTER picture, a picture consisted of at least one P slice and zero or more I, SI and SP slices
    37 	*/
    38 	EAvcPictureTypeP   = 0x02,
    39 
    40 	/**
    41 	Bi-predictive picture, a picture consisted of at least one B slice and zero or more I, P, SI, 
    42 	and SP slices 
    43 	*/
    44 	EAvcPictureTypeB   = 0x04,
    45 
    46 	/**
    47 	SI picture or switching I picture, a picture consisted of SI slices
    48 	*/
    49 	EAvcPictureTypeSI  = 0x08,
    50 
    51 	/**
    52 	SP picture or switching P picture, a picture consisted of at least one SP slice and zero or more
    53 	SI slices
    54 	*/
    55 	EAvcPictureTypeSP  = 0x10
    56     };
    57 
    58 
    59 /**
    60 These enumerations can be used in codec capability indication and/or bitstream property indication.
    61 When used as part of an encoder capability indication, a signaled value indicates the capability 
    62 of an encoder to produce such Supplemental Enhancement Information (SEI) to the bitstream and the 
    63 additional meanings as specified below. When used as part of a decoder capability indication, a 
    64 signalled value indicates the capability of a decoder to react to such information in a way as
    65 specified below. If a decoder does not have such capability, it shall be able to parse and discard
    66 the information. When used as part of a bitstream property indication, a non-signalled value 
    67 indicates the absence of such information in the bitstream and a signalled value indicates the 
    68 possibility of having such information in the bitstream.
    69 @publishedAll
    70 @released
    71 */
    72 enum TAvcSupplementalInformation
    73     {
    74 	/**
    75 	encoder capability:	no meaning
    76 	decoder capability:	capability to initialize Hypothetical Reference Decoder (HRD) as specified 
    77 						in AVC Annex C at any buffering period SEI message
    78 	bitstream property:	existence of Network Abstraction Layer (NAL) units with nal_unit_type equal
    79 						to 6 and the SEI payload type (payloadType) equal to 0 
    80 	*/
    81 	EAvcSeiBufferingPeriod			 				= 0x00000001,
    82 
    83 	/**
    84 	encoder capability:	no meaning
    85 	decoder capability:	capability to operate HRD and decode/display video streams according to the
    86 						provided timing information
    87 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal 
    88 						to 1
    89 	*/
    90 	EAvcSeiPictureTiming         					= 0x00000002,
    91 
    92 	/**
    93 	encoder capability:	no meaning
    94 	decoder capability:	capability to crop after decoding and to display the specified rectangular 
    95 						region 
    96 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal 
    97 						to 2
    98 	*/
    99 	EAvcSeiPanScanRectangle         				= 0x00000004,
   100 
   101 	/**
   102 	encoder capability:	no meaning
   103 	decoder capability:	no meaning
   104 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   105 						to 3
   106 	*/
   107 	EAvcSeiFillerPayload 							= 0x00000008,
   108 
   109 	/**
   110 	encoder capability:	no meaning
   111 	decoder capability:	no meaning
   112 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal 
   113 						to 4
   114 	*/
   115 	EAvcSeiUserDataRegisteredByITUTRecT35  			= 0x00000010,
   116 
   117 	/**
   118 	encoder capability:	no meaning
   119 	decoder capability:	no meaning
   120 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   121 						to 5
   122 	*/
   123 	EAvcSeiUserDataUnRegistered       				= 0x00000020,
   124 
   125 	/**
   126 	encoder capability:	no meaning
   127 	decoder capability:	capability to start decoding from any access unit with a recovery point SEI 
   128 						message
   129 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   130 						to 6
   131 	*/
   132 	EAvcSeiRecoveryPoint    						= 0x00000040,
   133 
   134 	/**
   135 	encoder capability:	capability to repeat the decoded reference picture marking syntax structure
   136 						as specified in subclauses 7.3.3.3 and 7.4.3.3 of the AVC specification.
   137 	decoder capability:	capability to recover the decoded reference picture marking process due to
   138 						losses of reference pictures with decoded reference picture marking syntax
   139 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal 
   140 						to 7
   141 	*/
   142 	EAvcSeiDecodedReferencePictureMarkingRepetition	= 0x00000080,
   143 
   144 	/**
   145 	encoder capability:	capability to analyze video pictures for creation of spare picture information
   146 	decoder capability:	capability to utilize the spare picture information to enhance video decoding
   147 						in case there is loss of reference pictures
   148 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   149 						to 8
   150 	*/
   151 	EAvcSeiSparePicture		       					= 0x00000100,
   152 
   153 	/**
   154 	encoder capability:	no meaning
   155 	decoder capability:	capability to utilize the scene information to enhance error concealment
   156 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   157 						to 9
   158 	*/
   159 	EAvcSeiSceneInformation						   	= 0x00000200,
   160 
   161 	/**
   162 	encoder capability:	no meaning
   163 	decoder capability:	capability to utilize the sub-sequence information to achieve temporal
   164 						scalability
   165 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType
   166 						equal to 10
   167 	*/
   168 	EAvcSeiSubsequenceInformation		     		= 0x00000400,
   169 
   170 	/**
   171 	encoder capability:	no meaning
   172 	decoder capability:	capability to utilize the sub-sequence information and the sub-sequence
   173 						layer characteristics to achieve temporal scalability
   174 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType 
   175 						equal to 11 (if sub-sequence layer characteristics SEI message is present,
   176 						sub-sequence information SEI message must be present)
   177 	*/
   178 	EAvcSeiSubsequenceLayerCharacteristics       	= 0x00000800,
   179 
   180 	/**
   181 	encoder capability:	no meaning
   182 	decoder capability:	capability to utilize the sub-sequence information and the sub-sequence 
   183 						characteristics to achieve temporal scalability
   184 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   185 						to 12 (if sub-sequence characteristics SEI message is present, sub-sequence
   186 						information SEI message must be present)
   187 	*/
   188 	EAvcSeiSubsequenceCharacteristics       		= 0x00001000,
   189 
   190 	/**
   191 	encoder capability:	no meaning
   192 	decoder capability:	capability to freeze displayed picture according to AVC Annex D.2.14.
   193 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   194 						to 13
   195 	*/
   196 	EAvcSeiFullFrameFreeze	               			= 0x00002000,
   197 
   198 	/**
   199 	encoder capability:	no meaning
   200 	decoder capability:	capability to release frozen displayed picture according to AVC Annex D.2.15
   201 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType 
   202 						equal to 14
   203 	*/
   204 	EAvcSeiFullFrameFreezeRelease					= 0x00004000,
   205 
   206 	/**
   207 	encoder capability:	no meaning
   208 	decoder capability:	no meaning
   209 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType
   210 						equal to 15
   211 	*/
   212 	EAvcSeiFullFrameSnapshot				    	= 0x00008000,
   213 
   214 	/**
   215 	encoder capability:	no meaning
   216 	decoder capability:	no meaning
   217 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType
   218 						equal to 16
   219 	*/
   220 	EAvcSeiProgressiveRefinementSegmentStrat     	= 0x00010000,
   221 
   222 	/**
   223 	encoder capability:	no meaning
   224 	decoder capability:	no meaning
   225 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType 
   226 						equal to 17
   227 	*/
   228 	EAvcSeiProgressiveRefinementSegmentEnd   		= 0x00020000,
   229 
   230 	/**
   231 	encoder capability:	capability to constrain the inter prediction process according to 
   232 						AVC Annex D.2.19
   233 	decoder capability:	capability to decode only part of the pictures covered by the motion-
   234 						constrained slice group set
   235 	bitstream property:	existence of NAL units with nal_unit_type equal to 6 and payloadType equal
   236 						to 18
   237 	*/
   238 	EAvcSeiMotionConstrainedSliceGroupSet        	= 0x00040000
   239     };
   240 
   241 
   242 /**
   243 AVC Picture Header.
   244 @publishedAll
   245 @released
   246 */
   247 class TAvcPictureHeader
   248     {
   249 public:
   250 	/**
   251 	Equal to ETrue indicates that the bitstream obeys all constraints specified in subclause A.2.1
   252 	of the AVC specification, equal to EFalse indicates that the bitstream may or may not obey the 
   253 	constraints. The value is equal to ETrue (EFalse) if the syntax element constraint_set0_flag is
   254 	equal to 1 (0). 
   255 	*/
   256 	TBool iBaselineProfileConstraintSet;
   257 
   258 	/**
   259 	Equal to ETrue indicates that the bitstream obeys all constraints specified in subclause A.2.2
   260 	of the AVC specification, equal to EFalse indicates that the bitstream may or may not obey the 
   261 	constraints. The value is equal to ETrue (EFalse) if the syntax element constraint_set1_flag is
   262 	equal to 1 (0). 
   263 	*/
   264 	TBool iMainProfileConstraintSet;
   265 
   266 	/**
   267 	Equal to ETrue indicates that the bitstream obeys all constraints specified in subclause A.2.3 
   268 	of the AVC specification, equal to EFalse indicates that the bitstream may or may not obey the
   269 	constraints. The value is equal to ETrue (EFalse) if the syntax element constraint_set2_flag is
   270 	equal to 1 (0). 
   271 	*/
   272 	TBool iExtendedProfileConstraintSet;
   273 
   274 	/**
   275 	Indicates the picture type. iPictureType is set as one of the values defined in TAvcPictureType.
   276 	*/
   277 	TAvcPictureType iPictureType;
   278 
   279 	/**
   280 	iLongTermPicture equal to ETrue indicates that the picture is a long-term picture, i.e., it has 
   281 	been marked as "used for long-term reference" according to the decoded reference picture marking 
   282 	process as specified in subclause 8.2.5 of the AVC specification. Otherwise the picture is not a 
   283 	long-term picture.
   284 	*/
   285 	TBool iLongTermPicture;
   286 
   287 	/**
   288 	Indicates whether the picture is a frame or a field. iFrame is equal to ETrue if the picture is 
   289 	a frame (field_pic_flag is equal to 0), EFalse if the picture is a field (field_pic_flag is equal
   290 	to 1).
   291 	*/
   292 	TBool iFrame;
   293 
   294 	/**
   295 	Valid only if iFrame is equal to EFalse. Indicates whether the field picture is a top field or a
   296 	bottom field. iTopField is equal to ETrue if the picture is a top field (bottom_field_flag is 
   297 	equal to 0), EFalse if the picture is a bottom field (bottom_field_flag is equal to 0).
   298 	*/
   299 	TBool iTopField;
   300 
   301 	/**
   302 	Indicates the picture order count of the top field of a frame, the top field of a complementary 
   303 	field pair, or a top field. iTopFieldOrderCount is equal to the value of TopFieldOrderCnt as 
   304 	specified in subclause 8.2.1 of the AVC specification.
   305 	*/
   306 	TUint iTopFieldOrderCount;
   307 
   308 	/**
   309 	Indicates the picture order count of the bottom field of a frame, the bottom field of a 
   310 	complementary field pair, or a bottom field. iBottomFieldOrderCount is equal to the value of 
   311 	BottomFieldOrderCnt as specified in subclause 8.2.1 of the AVC specification.
   312 	*/
   313 	TUint iBottomFieldOrderCount;
   314 
   315 	/**
   316 	Equal to ETrue indicates that the picture is an Instantaneous Decoding Refresh (IDR) picture;
   317 	otherwise the picture is not an IDR picture. The value of nal_unit_type of all the Video Coding
   318 	Layer (VCL) NAL units of the primary coded picture of an IDR picture shall be equal to 5.
   319 	*/
   320 	TBool iIdrPicture;
   321 
   322 	/**
   323 	Indicates the initial value of the quantization parameter. If iPictureType is equal to 
   324 	EAvcPictureTypeSI or EavcPictureTypeSP, iPQY is equal to pic_init_qs_minus26 + 26; otherwise
   325 	iPQY is equal to pic_init_qp_minus26 + 26.
   326 	*/
   327 	TUint iQPY;
   328 
   329 	/**
   330 	Pixel aspect ratio numerator. The pixel aspect ratio is defined as 
   331 	iAspectRatioNum/iAspectRatioDenom, where the values are positive integers and relatively prime. 
   332 	When aspect_ratio_idc is equal to 0 or sar_width is equal to 0 or sar_height is equal to 0, the 
   333 	sample aspect ratio shall be considered unspecified, and iAspectRatioNum and iAspectRationDenom 
   334 	are set to 0. When aspect_ratio_idc is equal to any of the value from 1 to 13, inclusive, 
   335 	iAspectRatioNum and iAspectRatioDenom are set according to Table E-1 of the AVC specification.
   336 	When aspect_ratio_idc is equal to 255 (Extended_SAR), iAspectRatioNum is set to sar_width and 
   337 	iAspectRatioDenom is set to sar_height.
   338 	*/
   339 	TUint iAspectRatioNum;
   340 
   341 	/**
   342 	Pixel aspect ratio denominator. The pixel aspect ratio is defined as 
   343 	iAspectRatioNum/iAspectRatioDenom, where the values are positive integers and relatively prime. 
   344 	When aspect_ratio_idc is equal to 0 or sar_width is equal to 0 or sar_height is equal to 0, the 
   345 	sample aspect ratio shall be considered unspecified, and iAspectRatioNum and iAspectRationDenom
   346 	are set to 0. When aspect_ratio_idc is equal to any of the value from 1 to 13, inclusive, 
   347 	iAspectRatioNum and iAspectRatioDenom are set according to Table E-1 of the AVC specification.
   348 	When aspect_ratio_idc is equal to 255 (Extended_SAR), iAspectRatioNum is set to sar_width and 
   349 	iAspectRatioDenom is set to sar_height.
   350 	*/
   351 	TUint iAspectRatioDenom;
   352 
   353 	/**
   354 	Indicates the frame cropping rectangle as specified in subclause 7.4.2.1 of the AVC specification.
   355 	*/
   356 	TRect iFrameCropRect;
   357 
   358 	/**
   359 	Equal to 0 indicates that the cropped (according to the frame cropping rectangle) decoded 
   360 	pictures output contain visually important information in the entire region out to the edges of 
   361 	the cropping rectangle of the picture, such that the cropped decoded pictures output should not 
   362 	be displayed using overscan. Instead, they should be displayed using either an exact match 
   363 	between the display area and the cropping rectangle, or using underscan. Equal to 1 indicates
   364 	that the cropped decoded picture output is suitable for display using overscan. Otherwise, it is 
   365 	unspecified whether the cropped decoded picture output is suitable for display using overscan or
   366 	not. 
   367 	*/
   368 	TUint iOverscanInfo;
   369 
   370 	/**
   371 	Indicates the representation of the pictures as specified in Table E-2 of the AVC specification, 
   372 	before being coded. 
   373 	*/
   374 	TUint iVideoFormat;
   375 
   376 	/**
   377 	Indicates whether a picture should be displayed as a frame or one or more fields, according to
   378 	Table D-1. iPictureStructure is equal to the syntax element pic_struct.
   379 	*/
   380 	TUint iPictureStructure;
   381 
   382 	/**
   383 	Each picture has up to NumClockTS sets of clock timestamp information. The value of NumClockTS
   384 	is as specified in Table D-1 of the AVC specification, with a maximum value equal to 3. Each 
   385 	instance of iClockTimestamp[i] indicates a time of origin, capture, or alternative ideal display,
   386 	in units of microseconds. iClockTimestamp[i] is equal to 
   387 	(clockTimestamp[i] / time_scale * 1000000), where clockTimestamp[i] is the i-th set of clock
   388 	timestamp information as specified in subclause D.2.2 of the AVC specification. 
   389 	iClockTimestamp[i] where i is larger than NumClockTS-1 is invalid. When picture timing 
   390 	information is not available, NumClockTS is set to zero.
   391 	*/
   392 	TTimeIntervalMicroSeconds iClockTimestamp[3];
   393     };
   394 
   395 /**
   396 This class is used to signal decoder or encoder capabilities or bitstream properties.
   397 @publishedAll
   398 @released
   399 */
   400 class TAvcVideoCapability
   401     {
   402 public:
   403 	/**
   404 	When used as part of a codec capability indication, iProfileLevel[ProfileIdc] indicates the 
   405 	maximum processing level that a decoder or an encoder supports for a particular profile set 
   406 	indicated by ProfileIdc (the indication is described below). A negative value indicates that
   407 	the profile set is not supported. When used as part of a stream property indication,
   408 	iProfileLevel[ProfileIdc] indicates the maximum processing level that is present in the stream
   409 	for a particular profile set indicated by ProfileIdc. A negative value indicates that the stream 
   410 	does not contain data coded according to the indicated profile set.
   411 
   412 	ProfileIdc equal to 0 indicates that all of constraint_set0_flag, constraint_set1_flag and 
   413 	constraint_set2_flag are equal to 1, and profile_idc may indicate any of the profiles (baseline,
   414 	main or extended). ProfileIdc equal to 1 indicates that constraint_set0_flag and 
   415 	constraint_set2_flag are equal to 1 while constraint_set1_flag is equal to 0, and 
   416 	profile_idc may indicate either the baseline or extended profile. ProfileIdc equal to 2 
   417 	indicates that constraint_set1_flag and constraint_set2_flag are equal to 1 while 
   418 	constraint_set0_flag is equal to 0, and profile_idc may indicate either the main or extended 
   419 	profile. ProfileIdc equal to 3 indicates that constraint_set1_flag is equal to 1 while the other
   420 	two flags are equal to 0, and profile_idc indicates the main profile. ProfileIdc equal to 4 
   421 	indicates that constraint_set2_flag is equal to 1 while the other two flags are equal to 0, and
   422 	profile_idc indicates the extended profile.
   423 	*/
   424 	TInt iProfileLevel[5];
   425 
   426 	/**
   427 	iSupplementalInformationCap indicates the supported supplemental enhancement functions. The 
   428 	value is a binary OR of values from TAvcSupplementalInformation.
   429 	*/
   430 	TUint32 iSupplementalInformationCap;
   431     };
   432 
   433 
   434 /**
   435 This class is used to set the encoder operation mode.
   436 @publishedAll
   437 @released
   438 */
   439 class TAvcVideoMode
   440     {
   441 public:
   442 	/**
   443 	Specifies the picture types allowed in the bitstream. The value is a binary OR of values from 
   444 	TAvcPictureType. Signaled picture types that are not included in the prevailing coding profile 
   445 	are ignored.
   446 	*/
   447 	TUint32 iAllowedPictureTypes;
   448 
   449 	/**
   450 	Specifies whether Flexible Macroblock Order (FMO) is allowed. Equal to ETrue indicates that 
   451 	num_slice_groups_minus1 is in the range of 0 to 7, inclusive, i.e. FMO is allowed. Equal to
   452 	EFalse indicates that num_slice_groups_minus1 shall be equal to 0 only, i.e., FMO is not allowed.
   453 	*/
   454 	TBool iFlexibleMacroblockOrder;
   455 
   456 	/**
   457 	Specifies whether redundant pictures may be encoded. Equal to ETrue indicates that 
   458 	redundant_pic_cnt_present_flag can be equal to either 0 or 1 (i.e., redundant pictures may be 
   459 	encoded), while Equal to EFalse indicates that redundant_pic_cnt_present_flag shall be equal to
   460 	0 only (i.e., redundant pictures cannot be encoded). 
   461 	*/
   462 	TBool iRedundantPictures;
   463 
   464 	/**
   465 	Specifies whether data partitioning is in use. When equal to ETrue, data partitioning is in use,
   466 	i.e., NAL unit streams can contain nal_unit_type values in the range of 2 to 4, inclusive. When 
   467 	equal to EFalse, data partitioning is not in use, i.e., NAL unit streams shall not contain 
   468 	nal_unit_type values in the range of 2 to 4, inclusive. If data partitioning is in use, the 
   469 	SetErrorProtectionLevelsL method, if used, should set the number of unequal error protection 
   470 	levels to be larger than one. 
   471 	*/
   472 	TBool iDataPartitioning;
   473 
   474 	/**
   475 	iFrameMBsOnly equal to ETrue specifies that every coded picture of the coded video sequence is a
   476 	coded frame containing only frame macroblocks. Equal to EFalse specifies that coded pictures of 
   477 	the coded video sequence may either be coded fields or coded frames.
   478 	*/
   479 	TBool iFrameMBsOnly;
   480 
   481 	/**
   482 	iMBAFFCoding equal to EFalse specifies no switching between frame and field 
   483 	macroblocks within a picture. Equal to ETrue specifies the possible use of switching between 
   484 	frame and field macroblocks within frames. Valid only when iFrameMBsOnly is equal to EFalse.
   485 	*/
   486 	TBool iMBAFFCoding;
   487 
   488 	/**
   489 	Specifies the entropy decoding method to be applied for the syntax elements for which two 
   490 	descriptors appear in the syntax tables. Equal to EFalse indicates that Exp-Golomb codes or 
   491 	CAVLC (Context-based Adaptive Variable Length Coding), as described in subclause 9.1 or 9.2 of
   492 	the AVC specification, is applied. Otherwise, CABAC (Context-based Adaptive Binary Arithmetic 
   493 	Coding) as described in subclause 9.3 of the AVC specification is applied.
   494 	*/
   495 	TBool iEntropyCodingCABAC;
   496 
   497 	/**
   498 	Equal to EFalse specifies that weighted prediction shall not be applied to P and SP slices.
   499 	Equal to ETrue specifies that weighted prediction may be applied to P and SP slices. 
   500 	*/
   501 	TBool iWeightedPPrediction;
   502 
   503 	/**
   504 	Equal to 0 specifies that the default weighted prediction is applied to B slices. Equal to 1 
   505 	specifies that explicit weighted prediction is applied to B slices. Equal to 2 specifies that 
   506 	implicit weighted prediction is applied to B slices.
   507 	*/
   508 	TUint iWeightedBipredicitonMode;
   509 
   510 	/**
   511 	Specifies the method used in the derivation process for luma motion vectors for B_Skip, 
   512 	B_Direct_16x16 and B_Direct_8x8 as specified in subclause 8.4.1.2 of the AVC specification. When
   513 	iFrameMBsOnly is equal to EFalse, iDirect8x8Inference shall be equal to ETrue. 
   514 	*/
   515 	TBool iDirect8x8Inference;
   516     };
   517 
   518 /**
   519 TAvcHrdParams specifies a set of AVC-specific HRD parameters. All pointers included in the objects
   520 have the same lifetime as the objects themselves, and the memory is allocated and deallocated by
   521 the same instance that creates and owns the object.
   522 @publishedAll
   523 @released
   524 */
   525 class TAvcHrdParams
   526     {
   527 public:
   528     class TCpbParams
   529         {
   530     public:
   531 		/**
   532 		Specifies the delay for a CPB between the time of arrival in the CPB of the first bit of the 
   533 		coded data associated with the access unit associated with the buffering period SEI message 
   534 		and the time of removal from the CPB of the coded data associated with the same access unit,
   535 		for the first buffering period after HRD initialisation. It is in units of a 90 kHz clock.
   536 		The value is equal to the corresponding initinal_cpb_removal_delay of the NAL HRD parameters
   537 		if the current parameter is for the NAL HRD or of the VCL HRD parameters if the current
   538 		parameter is for the VCL HRD. 
   539 		*/
   540 		TUint iInitialCpbRemovalDelay;
   541 
   542 		/**
   543 		This parameter is used for a CPB in combination with the cpb_removal_delay to specify the 
   544 		initial delivery time of coded access units to the CPB.  It is in units of a 90 kHz clock.
   545 		The value is equal to the corresponding initinal_cpb_removal_delay_offset of the NAL HRD 
   546 		parameters if the current parameter is for the NAL HRD or of the VCL HRD parameters if the
   547 		current parameter is for the VCL HRD.
   548 
   549 		Note: Over the entire coded video sequence, the sum of iInitialCpbRemovalDelay and the 
   550 		corresponding iInitialCpbRemovalDelayOffset shall be constant for either the NAL HRD
   551 		parameters or the VCL HRD parameters.
   552 		*/
   553 		TUint iInitialCpbRemovalDelayOffset;
   554 
   555 		/**
   556 		Equal to EFalse specifies that to decode this bitstream by the HRD using the CPB 
   557 		specification, the hypothetical stream scheduler (HSS) operates in an intermittent bit 
   558 		rate mode.  Equal to 1 specifies that the HSS operates in a constant bit rate (CBR) mode. 
   559 		*/
   560 		TBool iCbr;
   561 
   562 		/**
   563 		Specifies the maximum input bit rate, in bits per second, of a CPB. The value is equal to 
   564 		Bitrate as specified in subclause E.2.2 of the AVC specification.
   565 		*/
   566 		TUint iBitrate;
   567 
   568 		/**
   569 		Specifies the size, in bytes, of a CPB. The value is equal to CpbSize/8, where CpbSize is as
   570 		specified in subclause E.2.2 of the AVC specification.
   571 		*/
   572 		TUint iCpbSize;
   573         };
   574     
   575 	/**
   576 	Specifies the required size of the decoded picture buffer (DPB) in unit of bytes. The value is
   577 	equal to max_dec_frame_buffering* PicWidthInSamplesL*FrameHeightInMbs*2, where PicWidthInSamplesL
   578 	and FrameHeightInMbs are specified in subclause 7.4.2.1 of the AVC specification amd the syntax
   579 	element max_dec_frame_buffering as specified in subclause E.2.1 of the AVC specification.
   580 	*/
   581 	TUint iDpbSize;
   582     
   583 	/**
   584 	Specifies the HRD operational mode as specified in Annex C of the AVC specification. The value
   585 	of LowDelayHrd is equal to ETrue if the syntax element low_delay_hrd_flag is equal to 1, and
   586 	EFalse otherwise. This parameter is valid only if at least one of iNalCpbCount and iVclCpbCount
   587 	is larger than 0.
   588 	*/
   589 	TBool iLowDelayHrd;
   590     
   591 	/**
   592 	Specifies the number of alternative coded picture buffer (CPB) specifications for NAL HRD 
   593 	parameters in the bitstream. The value of iNalCpbCount is equal to cpb_cnt_minus1 + 1 in the 
   594 	NAL HRD parameters, if present. iNalCpbCount equal to 0 means that NAL HRD parameters are not
   595 	present.
   596 	*/
   597 	TUint iNalCpbCount;
   598     
   599 	/**
   600 	Valid only if iNalCpbCount is larger than zero. iNalCpbParams is a pointer to an object of 
   601 	TCpbParams, which contains the parameters of an alternative CPB.
   602 	*/
   603 	TCpbParams* iNalCpbParams;
   604     
   605 	/**
   606 	Specifies the number of alternative coded picture buffer (CPB) specifications for VCL HRD 
   607 	parameters in the bitstream. The value of iVclCpbCount is equal to cpb_cnt_minus1 + 1 in the
   608 	VCL HRD parameters, if present. iVclCpbCount equal to 0 means that VCL HRD parameters are not
   609 	present.
   610 	*/
   611 	TUint iVclCpbCount;
   612     
   613 	/**
   614 	Valid only if iVclCpbCount is larger than zero. iVclCpbParams is a pointer to an object of 
   615 	TCpbParams, which contains the parameters of an alternative CPB.
   616 	*/
   617 	TCpbParams* iVclCpbParams;
   618     };
   619 
   620 
   621 
   622 
   623 
   624 #endif