sl@0: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __DEVVIDEOCONSTANTS_H__ sl@0: #define __DEVVIDEOCONSTANTS_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: /** sl@0: DevVideo Panic Category sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: _LIT(KDevVideoPanicCategory, "DevVideo"); sl@0: sl@0: /** sl@0: DevVideo Panic Codes sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TDevVideoPanicCodes sl@0: { sl@0: /** sl@0: A pre-condition on a method has been violated. sl@0: */ sl@0: EDevVideoPanicPreConditionViolation = 1, sl@0: /** sl@0: A post-condition on a method has been violated. sl@0: */ sl@0: EDevVideoPanicPostConditionViolation = 2, sl@0: /** sl@0: An invalid hardware device ID has been supplied. sl@0: */ sl@0: EDevVideoPanicInvalidHwDeviceId = 3 sl@0: }; sl@0: sl@0: sl@0: // DevVideo Plugin Interface UIDs sl@0: sl@0: /** Video Decoder HW Device Plugin Interface UID sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TUid KUidDevVideoDecoderHwDevice = {KUidDevVideoDecoderHwDeviceDefine}; sl@0: sl@0: /** Video Post Processor HW Device Plugin Interface UID sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TUid KUidDevVideoPostProcessorHwDevice = {KUidDevVideoPostProcessorHwDeviceDefine}; sl@0: sl@0: /** Video Encoder HW Device Plugin Interface UID sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TUid KUidDevVideoEncoderHwDevice = {KUidDevVideoEncoderHwDeviceDefine}; sl@0: sl@0: /** Video Pre Processor HW Device Plugin Interface UID sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TUid KUidDevVideoPreProcessorHwDevice = {KUidDevVideoPreProcessorHwDeviceDefine}; sl@0: sl@0: // DevVideo Custom Interface Uids sl@0: sl@0: /** MMMFVideoPlayHwDeviceExtensionScanCopy Custom Interface UID sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TUid KUidDevVideoPlayHwDeviceExtensionScanCopy = {KUidDevVideoPlayHwDeviceExScanCopyDefine}; sl@0: sl@0: /** sl@0: Picture frame rate constants sl@0: sl@0: Using these constants is recommended when the picture rate is known to match sl@0: one of them, to ensure that floating point equality comparisons work as expected. sl@0: sl@0: Note that the MSL video APIs currently only deal with non-interlaced frames. For interlaced sl@0: video, all references to the term "picture" should be considered to refer to complete frames. sl@0: As such, the term "picture rate" here refers to the frame rate for interlaced video. sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: const TReal KPictureRate5 = 5.0; sl@0: const TReal KPictureRate75 = 7.5; sl@0: const TReal KPictureRate10 = 10.0; sl@0: const TReal KPictureRate15 = 15.0; sl@0: const TReal KPictureRateNTSC24 = 23.97602397602398; // == 24000/1001 sl@0: const TReal KPictureRate25 = 25.0; sl@0: const TReal KPictureRateNTSC30 = 29.97002997002997; // == 30000/1001 sl@0: const TReal KPictureRate30 = 30.0; sl@0: sl@0: sl@0: /** sl@0: Specifies the data format used for an uncompressed picture. sl@0: The values are bit patterns that can be combined with other format definition constants. sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TImageDataFormat sl@0: { sl@0: /** Raw RGB picture data in a memory area. sl@0: */ sl@0: ERgbRawData = 0x01000000, sl@0: /** RGB picture data stored in a Symbian OS CFbsBitmap object. sl@0: */ sl@0: ERgbFbsBitmap = 0x02000000, sl@0: /** Raw YUV picture data stored in a memory area. The data storage sl@0: format depends on the YUV sampling pattern and data layout used. sl@0: */ sl@0: EYuvRawData = 0x04000000, sl@0: sl@0: /** Picture stored in a surface buffer. sl@0: @See MMmfVideoSurfaceHandleControl::MmvshcSetSurfaceHandle sl@0: */ sl@0: ESurfaceBuffer = 0x08000000 sl@0: }; sl@0: sl@0: sl@0: /** sl@0: RGB uncompressed image format alternatives. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TRgbFormat sl@0: { sl@0: /** sl@0: 16-bit RGB data format with four pixels per component. sl@0: The data format is the same as used in Symbian EColor4K bitmaps, sl@0: with each pixel using two bytes with the bit layout [ggggbbbb xxxxrrrr] sl@0: where "x" indicates unused bits. (This corresponds to "XRGB" 16-bit little-endian halfwords) sl@0: */ sl@0: ERgb16bit444 = ERgbRawData | 0x00000001, sl@0: sl@0: /** sl@0: 16-bit RGB data format with five bits per component for red and blue and sl@0: six bits for green. The data format is the same as used in Symbian EColor64K bitmaps, sl@0: with each pixel using two bytes with the bit layout [gggbbbbb rrrrrggg] sl@0: (This corresponds to "RGB" 16-bit little-endian halfwords) sl@0: */ sl@0: ERgb16bit565 = ERgbRawData | 0x00000002, sl@0: sl@0: /** sl@0: 32-bit RGB data format with eight bits per component. sl@0: This data format is the same as is used in Symbian EColor16MU bitmaps. The bit layout is sl@0: [bbbbbbbb gggggggg rrrrrrrr xxxxxxxx] where "x" indicates unused bits. sl@0: (This corresponds to "XRGB" 32-bit little-endian words) sl@0: */ sl@0: ERgb32bit888 = ERgbRawData | 0x00000004, sl@0: sl@0: /** sl@0: CFbsBitmap object with EColor4K data format. sl@0: */ sl@0: EFbsBitmapColor4K = ERgbFbsBitmap | 0x00000001, sl@0: sl@0: /** sl@0: CFbsBitmap object with EColor64K data format. sl@0: */ sl@0: EFbsBitmapColor64K = ERgbFbsBitmap | 0x00000002, sl@0: sl@0: /** sl@0: CFbsBitmap object with EColor16M data format. sl@0: */ sl@0: EFbsBitmapColor16M = ERgbFbsBitmap | 0x00000004, sl@0: sl@0: /** sl@0: CFbsBitmap object with EColor16MU data format. sl@0: */ sl@0: EFbsBitmapColor16MU = ERgbFbsBitmap | 0x00000008 sl@0: }; sl@0: sl@0: sl@0: /** sl@0: YUV (YCbCr) uncompressed image data sampling pattern. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TYuvSamplingPattern sl@0: { sl@0: /** sl@0: 4:2:0 sampling format. 4 luminance sample positions correspond to one chrominance sample position. sl@0: The four luminance sample positions are on the corners of a square. The chrominance sample position sl@0: is vertically half-way of the luminance sample positions and horizontally aligned with the left sl@0: side of the square. This is the MPEG-2 and the MPEG-4 Part 2 sampling pattern. sl@0: */ sl@0: EYuv420Chroma1 = 0x00000001, sl@0: sl@0: /** sl@0: 4:2:0 sampling format. 4 luminance sample positions correspond to one chrominance sample position. sl@0: The four luminance sample positions are on the corners of a square. The chrominance sample position sl@0: is vertically and horizontally in the middle of the luminance sample positions. This is the MPEG-1 sampling pattern. sl@0: */ sl@0: EYuv420Chroma2 = 0x00000002, sl@0: sl@0: /** sl@0: 4:2:0 sampling format. 4 luminance sample positions correspond to one chrominance sample position. sl@0: The four luminance sample positions are on the corners of a square. The chrominance sample position sl@0: colocates with the top-left corner of the square. This sampling format is one of the options in Annex E of H.264 | MPEG-4 AVC. sl@0: */ sl@0: EYuv420Chroma3 = 0x00000004, sl@0: sl@0: /** sl@0: 4:2:2 sampling format. 2 luminance sample positions correspond to one chrominance sample position. sl@0: The luminance sample positions reside on the same pixel row. The chrominance sample position is co-located sl@0: with the left one of the luminance sample positions. This is the MPEG-2 4:2:2 sampling pattern. sl@0: */ sl@0: EYuv422Chroma1 = 0x00000008, sl@0: sl@0: /** sl@0: 4:2:2 sampling format. 2 luminance sample positions correspond to one chrominance sample position. sl@0: The luminance sample positions reside on the same pixel row. The chrominance sample position is in the sl@0: middle of the luminance sample positions. This is the MPEG-1 4:2:2 sampling pattern. sl@0: */ sl@0: EYuv422Chroma2 = 0x00000010 sl@0: }; sl@0: sl@0: sl@0: /** sl@0: Defines the YUV data layout in a decoded picture. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TYuvDataLayout sl@0: { sl@0: /** sl@0: The data is stored in a plane mode. The memory buffer contains first all Y component sl@0: data for the whole picture, followed by U and V, making the data format Y00Y01Y02Y03...U0...V0... sl@0: For YUV 4:2:0 data, this is the same data format as EFormatYUV420Planar in the Onboard Camera API sl@0: */ sl@0: EYuvDataPlanar = 0x00000001, sl@0: sl@0: /** sl@0: The data is stored interleaved mode, all components interleaved in a single memory block. sl@0: Interleaved layout is only supported for YUV 4:2:2 data. The data byte order is Y1VY0U, sl@0: corresponding to "UY0VY1" little-endian 32-bit words. sl@0: This is the same data format as EFormatYUV422Reversed in the Onboard Camera API sl@0: */ sl@0: EYuvDataInterleavedLE = 0x00000002, sl@0: sl@0: /** sl@0: The data is stored interleaved mode, all components interleaved in a single memory block. sl@0: Interleaved layout is only supported for YUV 4:2:2 data. The data byte order is UY0VY1, sl@0: corresponding to "UY0VY1" big-endian 32-bit words. sl@0: This is the same data format as EFormatYUV422 in the Onboard Camera API sl@0: */ sl@0: EYuvDataInterleavedBE = 0x00000004, sl@0: /** sl@0: The data is stored in a semi-planar mode. The memory buffer contains first all Y component sl@0: data for the whole picture, followed by U and V components, which are interlaced, making the data sl@0: format Y00Y01Y02Y03...U0V0U1V1... For YUV 4:2:0 data, this is the same data format as sl@0: FormatYUV420SemiPlanar in the Onboard Camera API sl@0: */ sl@0: EYuvDataSemiPlanar = 0x00000008 sl@0: }; sl@0: sl@0: /** sl@0: Defines the picture effect used for an input picture. Please refer to ITU-T H.264 | ISO/IEC MPEG-4 AVC [] for the definitions of the transition effects. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TPictureEffect sl@0: { sl@0: /** sl@0: No effect. sl@0: */ sl@0: EEffectNone = 0x00000001, sl@0: sl@0: /** sl@0: Fade from black. sl@0: */ sl@0: EEffectFadeFromBlack = 0x00000002, sl@0: sl@0: /** sl@0: Fade to black. sl@0: */ sl@0: EEffectFadeToBlack = 0x00000004, sl@0: sl@0: /** sl@0: Unspecified transition from or to constant colour. sl@0: */ sl@0: EEffectUnspecifiedThroughConstantColor = 0x00000008, sl@0: sl@0: /** sl@0: Dissolve. sl@0: */ sl@0: EEffectDissolve = 0x00000010, sl@0: sl@0: /** sl@0: Wipe. sl@0: */ sl@0: EEffectWipe = 0x00000020, sl@0: sl@0: /** sl@0: Unspecified mixture of two scenes. sl@0: */ sl@0: EEffectUnspecifiedMixOfTwoScenes = 0x00000040 sl@0: }; sl@0: sl@0: /** sl@0: Defines the data value range used for RGB data. Used for determining the correct color space conversion factors. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TRgbRange sl@0: { sl@0: /** sl@0: The RGB data uses the full 8-bit range of [0…255]. sl@0: */ sl@0: ERgbRangeFull = 0x00000001, sl@0: sl@0: /** sl@0: The RGB data uses the nominal range of [16…235]. Individual samples can still contain sl@0: values beyond that range, the rest of the 8-bit range is used for headroom and footroom. sl@0: */ sl@0: ERgbRange16to235 = 0x00000002 sl@0: }; sl@0: sl@0: sl@0: sl@0: /** sl@0: Defines possible data unit types for encoded video data. The data unit types are used both sl@0: for encoded video input for playback as well as encoded video output from recording. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TVideoDataUnitType sl@0: { sl@0: /** sl@0: Each data unit is a single coded picture. sl@0: */ sl@0: EDuCodedPicture = 0x00000001, sl@0: sl@0: /** sl@0: Each data unit is a coded video segment. sl@0: A coded video segment is a part of the coded video data that forms an independently sl@0: decodable part of a coded video frame. For example, a video packet in MPEG-4 Part 2 sl@0: and slice in H.263 are coded video segments. sl@0: */ sl@0: EDuVideoSegment = 0x00000002, sl@0: sl@0: /** sl@0: Each data unit contains an integer number of video segments consecutive in decoding order, sl@0: possibly more than one. The video segments shall be a subset of one coded picture. sl@0: */ sl@0: EDuSeveralSegments = 0x00000004, sl@0: sl@0: /** sl@0: Each data unit contains a piece of raw video bitstream, not necessarily aligned at any headers. sl@0: The data must be written in decoding order. This data unit type can be used for playback if the client sl@0: does not have information about the bitstream syntax, and just writes data in random-sized chunks. For sl@0: recording this data unit type is useful if the client can handle arbitrarily split data units, giving the sl@0: encoder maximum flexibility in buffer allocation. For encoded data output, each data unit must still sl@0: belong to exactly one output picture. sl@0: */ sl@0: EDuArbitraryStreamSection = 0x00000008 sl@0: }; sl@0: sl@0: /** sl@0: Defines possible encapsulation types for coded video data units. The encapsulation information is sl@0: used both for encoded video input for playback as well as encoded video output from recording. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TVideoDataUnitEncapsulation sl@0: { sl@0: /** sl@0: The coded data units can be chained in a bitstream that can be decoded. For example, MPEG-4 sl@0: Part 2 elementary streams, H.263 bitstreams, and H.264 | MPEG-4 AVC Annex B bitstreams fall into this category. sl@0: */ sl@0: EDuElementaryStream = 0x00010000, sl@0: sl@0: /** sl@0: The coded data units are encapsulated in a general-purpose packet payload format whose coded sl@0: data units can be decoded independently but cannot be generally chained into a bitstream. sl@0: For example, the Network Abstraction Layer Units of H.264 | MPEG-4 AVC fall into this category. sl@0: */ sl@0: EDuGenericPayload = 0x00020000, sl@0: sl@0: /** sl@0: The coded data units are encapsulated in RTP packet payload format. The RTP payload header sl@0: may contain codec-specific items, such as a redundant copy of a picture header in the H.263 sl@0: payload specification RFC2429. sl@0: */ sl@0: EDuRtpPayload = 0x00040000 sl@0: }; sl@0: sl@0: /** sl@0: Defines the HRD/VBV specification used in a stream. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum THrdVbvSpecification sl@0: { sl@0: /** No HRD/VBV specification. */ sl@0: EHrdVbvNone = 0x00000001, sl@0: sl@0: /** The HRD/VBV specification in the corresponding coding standard. */ sl@0: EHrdVbvCodingStandard = 0x00000002, sl@0: sl@0: /** Annex G of 3GPP TS 26.234 Release 5. */ sl@0: EHrdVbv3GPP = 0x00000004 sl@0: }; sl@0: sl@0: /** sl@0: Defines the pre-processor and post-processor types available in the system. sl@0: One pre-processor or post-processor can implement multiple operations simultaneously, and thus the sl@0: types are defined as bit values that can be combined as a bitfield. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TPrePostProcessType sl@0: { sl@0: /** sl@0: Input cropping, used for pan-scan cropping in video playback and digital zoom in video recording. sl@0: Pan-scan cropping is useful, for example, for displaying arbitrary-sized pictures with codecs that sl@0: only support image dimensions that are multiples of 16 pixels. sl@0: */ sl@0: EPpInputCrop = 0x00000001, sl@0: sl@0: /** sl@0: Horizontal mirroring, flips the image data around a vertical line in its center. sl@0: */ sl@0: EPpMirror = 0x00000002, sl@0: sl@0: /** sl@0: Picture rotation, supports rotation by 90 or 180 degrees, clockwise and anticlockwise. sl@0: */ sl@0: EPpRotate = 0x00000004, sl@0: sl@0: /** sl@0: Picture scaling to a new size, includes both upscaling and downscaling. sl@0: The supported scaling types and scale factors depend on the pixel processor. sl@0: */ sl@0: EPpScale = 0x00000008, sl@0: sl@0: /** sl@0: Crops the picture to a final output rectangle. sl@0: */ sl@0: EPpOutputCrop = 0x00000010, sl@0: sl@0: /** sl@0: Pads the output picture to a defined size. Used in video recording to pad pictures to sl@0: suit the encoder input requirements. sl@0: */ sl@0: EPpOutputPad = 0x00000020, sl@0: sl@0: /** sl@0: YUV to RGB color space conversion. Supported only for video playback. sl@0: */ sl@0: EPpYuvToRgb = 0x00000040, sl@0: sl@0: /** sl@0: RGB to YUV color space conversion. Supported only for video recording. sl@0: */ sl@0: EPpRgbToYuv = 0x00000080, sl@0: sl@0: /** sl@0: YUV to YUV data format conversion. Supported only for video recording. sl@0: */ sl@0: EPpYuvToYuv = 0x00000100, sl@0: sl@0: /** sl@0: Noise filtering. Noise filtering is typically used to enhance the input sl@0: picture from the camera, and is usually only supported for video recording. sl@0: */ sl@0: EPpNoiseFilter = 0x00000200, sl@0: sl@0: /** sl@0: Color enhancement. Color enhancement is typically used to enhance the input picture sl@0: from the camera, and is usually only supported for video recording. sl@0: */ sl@0: EPpColorEnhancement = 0x00000400, sl@0: sl@0: /** sl@0: Frame stabilisation. Supported only for video recording. sl@0: */ sl@0: EPpFrameStabilisation = 0x00000800, sl@0: sl@0: /** sl@0: Deblocking is typically used to remove artefacts from the output picture that result from sl@0: high compression or a noisy input signal. Only supported for video playback. sl@0: */ sl@0: EPpDeblocking = 0x00001000, sl@0: sl@0: /** sl@0: Deringing is typically used to remove artefacts from the output picture that result from sl@0: a noisy input signal corrupting motion estimates. Only supported for video playback. sl@0: */ sl@0: EPpDeringing = 0x00002000, sl@0: sl@0: /** sl@0: Custom hardware device specific processing. sl@0: */ sl@0: EPpCustom = 0x10000000 sl@0: }; sl@0: sl@0: /** sl@0: Dithering types. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TDitherType sl@0: { sl@0: /** No dithering. */ sl@0: EDitherNone = 0x00000001, sl@0: sl@0: /** Ordered dither. */ sl@0: EDitherOrdered = 0x00000002, sl@0: sl@0: /** Error diffusion dither. */ sl@0: EDitherErrorDiffusion = 0x00000004, sl@0: sl@0: /** Other hardware device specific dithering type. */ sl@0: EDitherOther = 0x00000008 sl@0: }; sl@0: sl@0: /** sl@0: Rotation types for pre-processors and post-processors. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TRotationType sl@0: { sl@0: /** No rotation. */ sl@0: ERotateNone = 0x00000001, sl@0: sl@0: /** Rotate the picture 90 degrees clockwise. */ sl@0: ERotate90Clockwise = 0x00000002, sl@0: sl@0: /** Rotate the picture 90 degrees anticlockwise. */ sl@0: ERotate90Anticlockwise = 0x00000004, sl@0: sl@0: /** Rotate the picture 180 degrees. */ sl@0: ERotate180 = 0x00000008 sl@0: }; sl@0: sl@0: sl@0: sl@0: /** sl@0: Defines possible encoding bit-rate control modes. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TBitrateControlType sl@0: { sl@0: /** sl@0: The encoder does not control the bit-rate, but uses specified target picture quality and picture sl@0: rate as such. The coded data stream must still remain compliant with the standard and buffer settings sl@0: in use, if any, and thus HRD/VBV settings can limit the possible bit-rate. sl@0: */ sl@0: EBrControlNone = 0x00000001, sl@0: sl@0: /** sl@0: The encoder controls the coded bit-rate of the stream. The caller indicates target bit-rate, target sl@0: picture quality, target frame rate, spatial-temporal trade-off, and latency-quality trade-off. sl@0: */ sl@0: EBrControlStream = 0x00000002, sl@0: sl@0: /** sl@0: The encoder controls the coded bit-rate of each picture. The caller gives the target amount of bits per sl@0: frame. Each given input frame is coded. This type of operation is applicable only in memory-buffer-based sl@0: input. sl@0: */ sl@0: EBrControlPicture = 0x00000004 sl@0: }; sl@0: sl@0: sl@0: /** sl@0: Defines the scalability type for a single bit-rate scalability layer. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TScalabilityType sl@0: { sl@0: /** sl@0: The layer uses temporal scalability. Using the layer increases the picture rate. sl@0: */ sl@0: EScalabilityTemporal = 0x00000001, sl@0: sl@0: /** sl@0: The layer uses quality scalability. Using the layer improves picture quality. sl@0: */ sl@0: EScalabilityQuality = 0x00000002, sl@0: sl@0: /** sl@0: The layer uses spatial scalability. Using the layer increases picture resolution. sl@0: */ sl@0: EScalabilitySpatial = 0x00000004, sl@0: sl@0: /** sl@0: The layer is a fine-granularity scalability layer. In fine granularity scalability, the output sl@0: quality increases gradually as a function of decoded bits from the enhancement layer. sl@0: */ sl@0: EScalabilityFineGranularity = 0x10000000, sl@0: sl@0: /** sl@0: The layer is a fine-granularity quality scalability layer. sl@0: */ sl@0: EScalabilityQualityFG = EScalabilityFineGranularity | EScalabilityQuality sl@0: }; sl@0: sl@0: /** sl@0: Forward error control strength used for an unequal error protection level. Also other values between sl@0: EFecStrengthNone and EFecStrengthHigh can be used, the encoder will round the values to the levels sl@0: it supports. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TErrorControlStrength sl@0: { sl@0: /** No error control. */ sl@0: EFecStrengthNone = 0, sl@0: sl@0: /** Low error control strength. */ sl@0: EFecStrengthLow = 256, sl@0: sl@0: /** Normal error control strength. */ sl@0: EFecStrengthNormal = 512, sl@0: sl@0: /** High error control strength. */ sl@0: EFecStrengthHigh = 768 sl@0: }; sl@0: sl@0: /** sl@0: Defines the scalability type for in-layer bit-rate scalability. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TInLayerScalabilityType sl@0: { sl@0: /** Temporal scalability, such as B-pictures. */ sl@0: EInLScalabilityTemporal = 1, sl@0: sl@0: /** Other scalability type. */ sl@0: EInLScalabilityOther sl@0: }; sl@0: sl@0: /** sl@0: Defines what part of a frame is contained within a video buffer. sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: enum TFramePortion sl@0: { sl@0: /** The frame portion is unknown. */ sl@0: EFramePortionUnknown, sl@0: sl@0: /** An entire frame. */ sl@0: EFramePortionWhole, sl@0: sl@0: /** A fragment of a frame containing the start but not the end. */ sl@0: EFramePortionStartFragment, sl@0: sl@0: /** An fragment of a frame containing neither the start nor the end. */ sl@0: EFramePortionMidFragment, sl@0: sl@0: /** A fragment of a frame containing the end but not the start. */ sl@0: EFramePortionEndFragment sl@0: }; sl@0: sl@0: #endif sl@0: