epoc32/include/mmf/devvideo/avc.h
branchSymbian2
changeset 2 2fe1408b6811
child 4 837f303aceeb
equal deleted inserted replaced
1:666f914201fb 2:2fe1408b6811
       
     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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.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