Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <devvideorecord.h>
Link against: devvideo.lib
This item is not part of the S60 5th Edition SDK

Class CMMFDevVideoRecord

class CMMFDevVideoRecord : public CBase, private MMMFDevVideoRecordProxy;

Description

CMMFDevVideoRecord is the main client class of DevVideoRecord.

Derivation

Members

Defined in CMMFDevVideoRecord:

Inherited from CBase:


Construction and destruction


NewL(MMMFDevVideoRecordObserver &)

IMPORT_C static CMMFDevVideoRecord* NewL(MMMFDevVideoRecordObserver &aObserver);

Description

Creates a new CMMFDevVideoRecord object.

Parameters

MMMFDevVideoRecordObserver &aObserver

"The observer object to use. The observer callbacks are used to return input buffers back to the client."

Return value

CMMFDevVideoRecord *

"A new CMMFDevVideoRecord object.

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrHardwareNotAvailable - Not enough free video processing hardware resourcesKErrNoMemory - Not enough free memory available"


~CMMFDevVideoRecord()

IMPORT_C ~CMMFDevVideoRecord();

Description

Destructor.

[Top]


Member functions


FindEncodersL(const TDesC8 &,TUint32,RArray< TUid > &,TBool)

IMPORT_C void FindEncodersL(const TDesC8 &aMimeType, TUint32 aPreProcType, RArray< TUid > &aEncoders, TBool aExactMatch=ETrue);

Description

Finds all available encoders for a given video type with support for certain pre-processing operations. The video type is specified using its MIME type, which may include parameters specifying the supported level, version, and other information. Encoder hardware devices can use wildcards when listing the supported video types in the ECom registration information, so it is possible that all the encoders returned do not support the specified submode, e.g. profile and level, unless aExactMatch is set.

The encoder capabilities can be checked with CMMFDevVideoRecord::VideoEncoderInfoLC(TUid).

Parameters

const TDesC8 &aMimeType

"The video type that will be encoded."

TUint32 aPreProcType

"The pre-processing types that the encoder has to support, a binary OR of TPrePostProcessType values. If no pre-processing support is needed, set this value to zero."

RArray< TUid > &aEncoders

"An array for the result encoder UIDs. The array must be created and destroyed by the caller."

TBool aExactMatch

"True if exact matching should be used. In this case only encoders that support exactly the MIME-type given will be returned. Since verifying this may require loading the encoders into memory, this can be a fairly expensive operation, and if the user needs to verify their capabilities further in any case this parameter should be set to EFalse."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: -KErrNotFound - No encoders were found matching the search parameters."


FindPreProcessorsL(TUint32,RArray< TUid > &)

IMPORT_C void FindPreProcessorsL(TUint32 aPreProcType, RArray< TUid > &aPreProcessors);

Description

Finds all available pre-processors for a given set of pre-processing operations.

Parameters

TUint32 aPreProcType

"The pre-processing types that the device has to support, a binary OR of TPrePostProcessType values."

RArray< TUid > &aPreProcessors

"An array for the result pre-processor UIDs. The array must be created and destroyed by the caller."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotFound - No pre-processors were found matching the search parameters."


GetEncoderListL(RArray< TUid > &)

IMPORT_C void GetEncoderListL(RArray< TUid > &aEncoders);

Description

Retrieves a list of available video encoders in the system.

Parameters

RArray< TUid > &aEncoders

"An array for the result encoder UIDs. The array must be created and destroyed by the caller."

Leave codes

"The

method will leave if an error occurs. Not finding any encoders is not treated as an error condition: in this situation, aEncoders will be empty."


GetPreProcessorListL(RArray< TUid > &)

IMPORT_C void GetPreProcessorListL(RArray< TUid > &aPreProcessors);

Description

Retrieves a list of available video pre-processor hardware devices in the system.

Parameters

RArray< TUid > &aPreProcessors

"An array for the result pre-processor UIDs. The array must be created and destroyed by the caller."

Leave codes

"The

method will leave if an error occurs. Not finding any pre-processors is not treated as an error condition: in this situation, aPreProcessors will be empty."


VideoEncoderInfoLC(TUid)

IMPORT_C CVideoEncoderInfo* VideoEncoderInfoLC(TUid aVideoEncoder);

Description

Retrieves information about an installed video encoder. Note that this method will need to load the encoder hardware device into memory, and can thus be relatively expensive.

Parameters

TUid aVideoEncoder

"The video encoder device to query."

Return value

CVideoEncoderInfo *

"Encoder information as a CVideoEncoderInfo object. The object is pushed to the cleanup stack, and must be deallocated by the caller."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotFound - No encoder was found with the given UID"


PreProcessorInfoLC(TUid)

IMPORT_C CPreProcessorInfo* PreProcessorInfoLC(TUid aPreProcessor);

Description

Retrieves information about the pre-processing capabilities of an installed pre-processor or encoder hardware device. Note that this method will need to load the device into memory, and can thus be relatively expensive.

Parameters

TUid aPreProcessor

"The device to query."

Return value

CPreProcessorInfo *

"Pre-processor information as a CPreProcessorInfo object. The object is pushed to the cleanupstack, and must be deallocated by the caller."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotFound - No pre-processor was found with the given UID"


SelectEncoderL(TUid)

IMPORT_C THwDeviceId SelectEncoderL(TUid aEncoder);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Selects the video encoder to be used. This method must be called before any other video encoder related methods are used. The encoder can be changed by calling this method again before the system has been initialized with CMMFDevVideoRecord::Initialize().

All video encoder settings are reset to their default values. By default no pre-processing is performed.

Parameters

TUid aEncoder

"The video encoder to use."

Return value

THwDeviceId

"Hardware device ID, used in other methods for configuring the encoder."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotFound - No encoder was found with the given UID"


SelectPreProcessorL(TUid)

IMPORT_C THwDeviceId SelectPreProcessorL(TUid aPreProcessor);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Selects the video pre-processor to be used. This method must be called before any other pre-processor related methods are used. The pre-processor to use can be changed by calling this method again before the API has been initialized with CMMFDevVideoRecord::Initialize().

All pre-processor settings are reset to their default values. By default no pre-processing is performed.

Parameters

TUid aPreProcessor

"The pre-processor to use."

Return value

THwDeviceId

"Hardware device ID, used in other methods for configuring the pre-processor."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotFound - No pre-processor was found with the given UID"


SetInputFormatL(THwDeviceId,const TUncompressedVideoFormat &,const TSize &)

IMPORT_C void SetInputFormatL(THwDeviceId aHwDevice, const TUncompressedVideoFormat &aFormat, const TSize &aPictureSize);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the input format for a hardware device. If both a pre-processor and an encoder are used, the pre-processor output format and the encoder input format must be the same. The input format for the first device in the system is the input format for video input data.

The method has to be called for both direct capture as well as memory buffer input. The camera API must be initialized by the device using it for capture, since there is no way to query the current format from the camera API.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TUncompressedVideoFormat &aFormat

"The input format to use."

const TSize &aPictureSize

"The input picture size in pixels."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The input format specified is not supported."


SetSourceCameraL(TInt,TReal)

IMPORT_C void SetSourceCameraL(TInt aCameraHandle, TReal aPictureRate);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the data source to be a camera, and sets the system to use direct capture for input. The first hardware device (pre-processor if both encoder and pre-processor are used, encoder otherwise) must support direct capture.

Parameters

TInt aCameraHandle

"A camera handle for the camera to use. The handle is passed to CCamera::NewDuplicateL() in the camera API."

TReal aPictureRate

"Video capture picture rate."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - Direct capture is not supported or the picture rate specified is not supported."


SetSourceMemoryL(TReal,TBool,TBool)

IMPORT_C void SetSourceMemoryL(TReal aMaxPictureRate, TBool aConstantPictureRate, TBool aProcessRealtime);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the data source to be memory buffers.

Parameters

TReal aMaxPictureRate

"The maximum picture rate for input pictures."

TBool aConstantPictureRate

"True if the input picture rate is constant. In that case, aMaxPictureRate specifies the picture rate. If pictures may be skipped in the input data due to performance reasons, this flag cannot be set."

TBool aProcessRealtime

"True if real-time processing is needed, false if not. Real-time processing is typically needed for video recording applications, while video conversion and off-line processing applications do not require it."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The picture rate specified is not supported."


SetOutputFormatL(THwDeviceId,const CCompressedVideoFormat &,TVideoDataUnitType,TVideoDataUnitEncapsulation,TBool)

IMPORT_C void SetOutputFormatL(THwDeviceId aHwDevice, const CCompressedVideoFormat &aFormat, TVideoDataUnitType aDataUnitType, TVideoDataUnitEncapsulation aDataEncapsulation, TBool aSegmentationAllowed=EFalse);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the output format for a hardware device to a compressed video format. Only applicable for encoder devices. The picture size depends on the input data format and possible scaling performed.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid)when the device is selected."

const CCompressedVideoFormat &aFormat

"The video format to use."

TVideoDataUnitType aDataUnitType

"The type of output coded data units."

TVideoDataUnitEncapsulation aDataEncapsulation

"Data encapsulation type for output encoded data units."

TBool aSegmentationAllowed

"True if a coded data unit can be segmented into multiple output buffers if a single buffer is not large enough."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The format specified is not supported."


SetOutputFormatL(THwDeviceId,const TUncompressedVideoFormat &)

IMPORT_C void SetOutputFormatL(THwDeviceId aHwDevice, const TUncompressedVideoFormat &aFormat);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the output format for a hardware device to an uncompressed video format. Only applicable for pre-processor devices. The picture size depends on the input data format and possible scaling performed.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TUncompressedVideoFormat &aFormat

"The video format to use."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The format specified is not supported."


SetClockSource(MMMFClockSource *)

IMPORT_C void SetClockSource(MMMFClockSource *aClock);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the clock source to use for video timing. When video recording is synchronized with audio, the clock source is implemented by the audio playback subsystem, otherwise the clock source should get the time from the system clock. This method can be called after all hardware devices have been selected, but before calling CMMFDevVideoRecord::Initialize().

If no clock source is set, video recording will not be synchronized, but will proceed as fast as possible, depending on input data and output buffer availability. If direct capturing is used without a clock source, the timestamps in the output data may not be valid. All encoders must support synchronization with an external clock source, as well as unsynchronized non-realtime operation.

Parameters

MMMFClockSource *aClock

"The clock source to use."


SetRgbToYuvOptionsL(THwDeviceId,TRgbRange,const TYuvFormat &)

IMPORT_C void SetRgbToYuvOptionsL(THwDeviceId aHwDevice, TRgbRange aRgbRange, const TYuvFormat &aOutputFormat);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets pre-processing options for RGB to YUV color space conversion. By default, input RGB data is assumed to use the full value range ([0…255]), and the output YUV format is the hardware device output format, so typically calling this method is not necessary.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

TRgbRange aRgbRange

"Input RGB data range"

const TYuvFormat &aOutputFormat

"Conversion output YUV format."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The formats specified are not supported"


SetYuvToYuvOptionsL(THwDeviceId,const TYuvFormat &,const TYuvFormat &)

IMPORT_C void SetYuvToYuvOptionsL(THwDeviceId aHwDevice, const TYuvFormat &aInputFormat, const TYuvFormat &aOutputFormat);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets pre-processing options for YUV to YUV data format conversion. By default, the hardware device input and output data formats are used. For encoder devices, the device input format and the closest matching format supported by the encoding process are used. Typically calling this method is not necessary.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TYuvFormat &aInputFormat

"Conversion input format."

const TYuvFormat &aOutputFormat

"Conversion output format."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The formats specified are not supported"


SetNumBitrateLayersL(TUint)

IMPORT_C void SetNumBitrateLayersL(TUint aNumLayers);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the number of bit-rate scalability layers to use. Set to 1 to disable layered scalability.

Bit-rate scalability refers to the ability of a coded stream to be decoded at different bit-rates. Scalable video is typically ordered into hierarchical layers of data. A base layer contains an individual representation of a video stream and enhancement layers contain refinement data in addition to the base layer. The quality of the encoded video stream progressively improves as enhancement layers are added to the base layer.

Parameters

TUint aNumLayers

"The number of bit-rate scalability layers to use, set to 1 to disable scalability."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The scalability layers are not supported or too many layers specified."


SetScalabilityLayerTypeL(TUint,TScalabilityType)

IMPORT_C void SetScalabilityLayerTypeL(TUint aLayer, TScalabilityType aScalabilityType);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the scalability type for a bit-rate scalability layer.

Parameters

TUint aLayer

"Layer number. Layers are numbered [0…n-1], where n is the number of layers available. The first layer is the base layer, it can be decoded independently from the other layers, and it has the lowest total bitrate."

TScalabilityType aScalabilityType

"Layer scalability type."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The scalability layers or the specified scalability type are not supported."


SetGlobalReferenceOptions(TUint,TUint)

IMPORT_C void SetGlobalReferenceOptions(TUint aMaxReferencePictures, TUint aMaxPictureOrderDelay);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the reference picture options to be used for all scalability layers. The settings can be overridden for an individual scalability layer by using CMMFDevVideoRecord::SetLayerReferenceOptions(TUint,TUint,TUint).

Parameters

TUint aMaxReferencePictures

"The maximum number of reference pictures to be used. More than one reference frame can be used in the H.264 | MPEG-4 AVC and in some advanced profiles of MPEG-4 Part 2 and H.263. The minimum value is one."

TUint aMaxPictureOrderDelay

"The maximum picture order delay, in number of pictures. This specifies the maximum number of pictures that precede any picture in the sequence in decoding order and follow the picture in presentation order. Pictures may be coded/decoded in different order from their capture/display order. Thus, decoded pictures have to be buffered to order them in correct display order. For example, if one conventional B picture is coded between P pictures, a one-picture display ordering delay has to be applied in the decoder. The minimum value is zero, which indicates that pictures must be coded in capture/display order."


SetLayerReferenceOptions(TUint,TUint,TUint)

IMPORT_C void SetLayerReferenceOptions(TUint aLayer, TUint aMaxReferencePictures, TUint aMaxPictureOrderDelay);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets the reference picture options to be used for a single scalability layer. These settings override those set with CMMFDevVideoRecord::SetGlobalReferenceOptions(TUint,TUint).

Parameters

TUint aLayer

"Layer number."

TUint aMaxReferencePictures

"The maximum number of reference pictures to be used."

TUint aMaxPictureOrderDelay

"The maximum picture order delay, in number of pictures."


SetBufferOptionsL(const TEncoderBufferOptions &)

IMPORT_C void SetBufferOptionsL(const TEncoderBufferOptions &aOptions);

Pre-Condition

"This method can only be called before the API has been initialized with Initialize()."

Description

Sets encoder buffering options.

Parameters

const TEncoderBufferOptions &aOptions

"The buffering options."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified settings are not supported."


SetOutputRectL(THwDeviceId,const TRect &)

IMPORT_C void SetOutputRectL(THwDeviceId aHwDevice, const TRect &aRect);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets the encoder output rectangle for encoded video output. This rectangle specifies the part of the input and output pictures which is displayed after encoding. Many video codecs process data in 16x16 pixel units but enable specifying and coding the decoder output rectangle for image sizes that are not multiple of 16 pixels (e.g 160x120).

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) when the device is selected."

const TRect &aRect

"The encoder output rectangle."

Leave codes

"The

method will leave if an error occurs."


SetPreProcessTypesL(THwDeviceId,TUint32)

IMPORT_C void SetPreProcessTypesL(THwDeviceId aHwDevice, TUint32 aPreProcessTypes);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets the pre-processing types to be used in a hardware device. [1 #191] If separate encoder and pre-processor devices are used, both can be configured to perform different pre-processing operations.

Pre-processing operations are carried out in the following order:

1. Frame stabilisation 2. Input cropping 3. Mirroring 4. Rotating 5. Scaling 6. Output cropping 7. Output padding

Color space conversion and color enhancement can be performed at any point in the pre-processing flow.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

TUint32 aPreProcessTypes

"The pre-processing steps to perform, a bitwise OR of values from TPrePostProcessType."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The pre-processing combination is not supported"


SetRotateOptionsL(THwDeviceId,TRotationType)

IMPORT_C void SetRotateOptionsL(THwDeviceId aHwDevice, TRotationType aRotationType);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets pre-processing options for rotation.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

TRotationType aRotationType

"The rotation to perform."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The rotation type is not supported."


SetScaleOptionsL(THwDeviceId,const TSize &,TBool)

IMPORT_C void SetScaleOptionsL(THwDeviceId aHwDevice, const TSize &aTargetSize, TBool aAntiAliasFiltering);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets pre-processing options for scaling.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TSize &aTargetSize

"Target picture size. If a fixed scale factor size is used, the new dimensions must be set to: width=floor(factor*width), height=floor(factor*height). For example, scaling a QCIF (176x144) picture up by a factor of 4/3 yields a size of 234x192."

TBool aAntiAliasFiltering

"True if anti-aliasing filtering should be used. If the pre-processor does not support anti-aliased scaling, or supports anti-aliased scaling only, this argument is ignored."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified target size is not supported."


SetInputCropOptionsL(THwDeviceId,const TRect &)

IMPORT_C void SetInputCropOptionsL(THwDeviceId aHwDevice, const TRect &aRect);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets pre-processing options for input cropping. Input cropping is typically used for digital zooming.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TRect &aRect

"The input cropping rectangle specifying the area of the picture to use. The rectangle must fit completely inside the input picture."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified cropping rectangle is not supported."


SetOutputCropOptionsL(THwDeviceId,const TRect &)

IMPORT_C void SetOutputCropOptionsL(THwDeviceId aHwDevice, const TRect &aRect);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets pre-processing options for output cropping. Output cropping is performed after other pre-processing operations but before output padding. Output cropping and padding can be used in combination to prepare the picture size to suit the encoder, typically video encoders only support picture sizes that are multiples of 16 pixels.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TRect &aRect

"The output cropping rectangle specifying the area of the picture to use. The rectangle must fit completely inside the picture."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified cropping rectangle is not supported."


SetOutputPadOptionsL(THwDeviceId,const TSize &,const TPoint &)

IMPORT_C void SetOutputPadOptionsL(THwDeviceId aHwDevice, const TSize &aOutputSize, const TPoint &aPicturePos);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets pre-processing options for output padding. Output padding is performed as the last pre-processing operation, and typically used to prepare the picture size to suit the encoder. The image is padded with black pixels.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TSize &aOutputSize

"The padded output picture size. The output size must be large enough for the picture in its new position."

const TPoint &aPicturePos

"The position for the original picture in the new padded picture. The original picture in its new position must fit completely inside the new picture."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified padding settings are not supported."


SetColorEnhancementOptionsL(THwDeviceId,const TColorEnhancementOptions &)

IMPORT_C void SetColorEnhancementOptionsL(THwDeviceId aHwDevice, const TColorEnhancementOptions &aOptions);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets color enhancement pre-processing options.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TColorEnhancementOptions &aOptions

"Color enchancement options."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified settings are not supported."


SetFrameStabilisationOptionsL(THwDeviceId,const TSize &,TBool)

IMPORT_C void SetFrameStabilisationOptionsL(THwDeviceId aHwDevice, const TSize &aOutputSize, TBool aFrameStabilisation);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets frame stabilisation options.

Frame stabilisation is performed as the first pre-processing operation in the hardware device. The stabilisation process gets the complete hardware device input picture as its input, and it produces a smaller stabilised output picture. The rest of the processing in the hardware device is done using the stabilisation output picture.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TSize &aOutputSize

"Output picture size. The output picture must size must be smaller than or equal to the hardware device input picture size."

TBool aFrameStabilisation

"True if frame stabilisation should be used. By default stabilisation is not used."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified settings are not supported."


SetCustomPreProcessOptionsL(THwDeviceId,const TDesC8 &)

IMPORT_C void SetCustomPreProcessOptionsL(THwDeviceId aHwDevice, const TDesC8 &aOptions);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets custom implementation-specific pre-processing options.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

const TDesC8 &aOptions

"Post-processing options. The data format is implementation-specific."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The options are not supported."


SetErrorsExpected(TBool,TBool)

IMPORT_C void SetErrorsExpected(TBool aBitErrors, TBool aPacketLosses);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets whether bit errors or packets losses can be expected in the video transmission channel. The video encoder can use this information to optimize the bitstream.

Parameters

TBool aBitErrors

"True if bit errors can be expected."

TBool aPacketLosses

"True if packet losses can be expected."


SetMinRandomAccessRate(TReal)

IMPORT_C void SetMinRandomAccessRate(TReal aRate);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets the minimum frequency (in time) for instantaneous random access points in the bitstream. An instantaneous random access point is such where the encoder can achieve a full output picture immediately by encoding data starting from the random access point. The random access point frequency may be higher than signalled, if the sequence contains scene cuts which typically cause a coding of a random access point.

Parameters

TReal aRate

"Random access point rate, in pictures per second. For example, to request a random access point every ten seconds, set the value to 0.1."


SetCodingStandardSpecificOptionsL(const TDesC8 &)

IMPORT_C void SetCodingStandardSpecificOptionsL(const TDesC8 &aOptions);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets coding-standard specific encoder options.

Parameters

const TDesC8 &aOptions

"The options to use. The data format for the options is coding-standard specific, and defined seperately."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified settings are not supported."


SetImplementationSpecificEncoderOptionsL(const TDesC8 &)

IMPORT_C void SetImplementationSpecificEncoderOptionsL(const TDesC8 &aOptions);

Pre-Condition

"This method can be called either before or after the API has been initialized with CMMFDevVideoRecord::Initialize(). If called after initialization, the change will only be committed once CMMFDevVideoRecord::CommitL() is called."

Description

Sets implementation-specific encoder options.

Parameters

const TDesC8 &aOptions

"The options to use. The data format for the options is specific to the encoder implementation, and defined separately by the encoder implementor."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified settings are not supported."


Initialize()

IMPORT_C void Initialize();

Pre-Condition

"This method can only be called before the API has been initialized."

Description

Initializes the video devices, and reserves hardware resources. This method is asynchronous, DevVideoRecord will call MMMFDevVideoRecordObserver::MdvroInitializeComplete(TInt) after initialization has completed. If direct capture is used, this method also prepares the camera API for capture by calling PrepareVideoCaptureL(). No DevVideoRecord method may be called while initialization is in progress, the initialization process can only be cancelled by destroying the DevVideoRecord object.

After initialization has successfully been completed, video capturing and encoding can be started with CMMFDevVideoRecord::Start() with a relatively low delay since the hardware has already been set up.

If CMMFDevVideoRecord::Initialize() fails, the DevVideoRecord object must be destroyed, and set up from scratch.

Error handling: Errors are reported using the MdvroInitializeComplete() callback method. Typical error codes used:


CommitL()

IMPORT_C void CommitL();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Commit all configuration changes since the last CMMFDevVideoRecord::CommitL(), CMMFDevVideoRecord::Revert() or CMMFDevVideoRecord::Initialize(). This only applies to methods that can be called both before AND after DevVideoRecord has been initialized. See the following methods for details.

Leave codes

"The

method will leave if an error occurs."

See also:


Revert()

IMPORT_C void Revert();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Revert any configuration changes that have not yet been committed using CMMFDevVideoRecord::CommitL(). This only applies to methods that can be called both before AND after DevVideoRecord has been initialized. See the following methods for details.

See also:


CodingStandardSpecificInitOutputLC()

IMPORT_C HBufC8* CodingStandardSpecificInitOutputLC();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns coding-standard specific initialization output from the encoder. The information can contain, for example, the MPEG-4 VOL header. This method can be called after CMMFDevVideoRecord::Initialize() has been called.

Return value

HBufC8 *

"Coding-standard specific initialization output. The data format is coding-standard specific and defined separately. The buffer is pushed to the cleanup stack, and the caller is responsible for deallocating it."

Leave codes

"The

method will leave if an error occurs."


ImplementationSpecificInitOutputLC()

IMPORT_C HBufC8* ImplementationSpecificInitOutputLC();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns implementation-specific initialization output from the encoder. This method can be called after CMMFDevVideoRecord::Initialize() has been called.

Return value

HBufC8 *

"Implementation-specific initialization output. The data format is specific to the encoder implementation, and defined by the encoder supplier. The buffer is pushed to the cleanup stack, and the caller is responsible for deallocating it."

Leave codes

"The

method will leave if an error occurs."


SetErrorProtectionLevelsL(TUint,TBool)

IMPORT_C void SetErrorProtectionLevelsL(TUint aNumLevels, TBool aSeparateBuffers);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the number of unequal error protection levels. By default unequal error protection is not used.

Parameters

TUint aNumLevels

"The number of unequal error protection levels. To disable unequal error protection, set this value to one. When unequal error protection is used, the encoder should code pictures so that they can be divided into number of unequal error protection levels having an ascending order of importance in the quality of decoded pictures, with level zero indicating the least important level. The encoder should map the requested bit-rate scalability layers and in-layer bit-rate scalability steps to the unequal error protection levels. In addition, the encoder may use coded sub-pictures to divide coded pictures to different regions of interest or data partitions to divide coded segments into pieces of different importance."

TBool aSeparateBuffers

"True if each unequal error protection level of a coded data unit shall be encapsulated in its own output buffer. Ignored if unequal error protection is not used. If each unequal error protection level (e.g. a data partition) of coded data unit is encapsulated in its own output buffer, the caller can transmit the output buffers in different logical channels or can apply a different amount of application-level forward error coding for different output buffers. If all unequal error protection levels (e.g. data partitions) of coded data unit are encapsulated in the same output buffer, the caller can apply a forward error control mechanism that protects the beginning of the output buffer better than the remaining of the output buffer."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - Unequal error protection is not supported."


SetErrorProtectionLevelL(TUint,TUint,TUint)

IMPORT_C void SetErrorProtectionLevelL(TUint aLevel, TUint aBitrate, TUint aStrength);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets up an unequal error protection level. If unequal error protection is not used, this method can be used to control settings for the whole encoded bitstream.

Parameters

TUint aLevel

"Error protection level number. This argument is ignored if unequal error protection is not in use."

TUint aBitrate

"Target bit-rate for this error protection level."

TUint aStrength

"Forward error control strength for this error protection level. The strength can be specified using values from TErrorControlStrength (EFecStrengthNone, EFecStrengthLow, EFecStrengthNormal, EFecStrengthHigh), or with intermediate values between those constants."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - The specified bit-rate cannot be supported. "


SetChannelPacketLossRate(TUint,TReal,TTimeIntervalMicroSeconds32)

IMPORT_C void SetChannelPacketLossRate(TUint aLevel, TReal aLossRate, TTimeIntervalMicroSeconds32 aLossBurstLength);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the expected or prevailing channel conditions for an unequal error protection level, in terms of expected packet loss rate. The video encoder can use this information to optimize the generated bitstream.

Parameters

TUint aLevel

"Error protection level number. This argument is ignored if unequal error protection is not in use."

TReal aLossRate

"Packet loss rate, in number of packets lost per second. Set to 0.0 if packet losses are not expected."

TTimeIntervalMicroSeconds32 aLossBurstLength

"Expected average packet loss burst length. Set to zero if the information is not available."


SetChannelBitErrorRate(TUint,TReal,TReal)

IMPORT_C void SetChannelBitErrorRate(TUint aLevel, TReal aErrorRate, TReal aStdDeviation);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the expected or prevailing channel conditions for an unequal error protection level, in terms of expected bit error rate. The video encoder can use this information to optimize the generated bitstream.

Parameters

TUint aLevel

"Error protection level number. This argument is ignored if unequal error protection is not in use."

TReal aErrorRate

"Expected bit error rate, as a fraction of the total bits transmitted. Set to 0.0 if bit errors are not expected."

TReal aStdDeviation

"Expected bit error rate standard deviation."


SetSegmentTargetSize(TUint,TUint,TUint)

IMPORT_C void SetSegmentTargetSize(TUint aLayer, TUint aSizeBytes, TUint aSizeMacroblocks);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the target size of each coded video segment. The segment target size can be specified in terms of number of bytes per segment, number of macroblocks per segment, or both.

Parameters

TUint aLayer

"Layer number. Layers are numbered [0…n-1], where n is the number of layers available. Use zero if layered bit-rate scalability is not used."

TUint aSizeBytes

"Segment target size in bytes. Set to zero to use unlimited segment size. The segment size in bytes should include all data that is typically stored or transmitted for each segment in the format currently in use. This includes all related headers."

TUint aSizeMacroblocks

"Segment target size in number of macroblocks per segment. Set to zero to use unlimited segment size."


SetRateControlOptions(TUint,const TRateControlOptions &)

IMPORT_C void SetRateControlOptions(TUint aLayer, const TRateControlOptions &aOptions);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the bit-rate control options for a layer. If layered bit-rate scalability is not used, the options are set for the whole bitstream.

Parameters

TUint aLayer

"Layer number. Layers are numbered [0…n-1], where n is the number of layers available. Use zero if layered bit-rate scalability is not used."

const TRateControlOptions &aOptions

"Bit-rate control options."


SetInLayerScalabilityL(TUint,TUint,TInLayerScalabilityType,const TArray< TUint > &,const TArray< TUint > &)

IMPORT_C void SetInLayerScalabilityL(TUint aLayer, TUint aNumSteps, TInLayerScalabilityType aScalabilityType, const TArray< TUint > &aBitrateShare, const TArray< TUint > &aPictureShare);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets in-layer scalability options for a layer. In-layer bit-rate scalability refers to techniques where a specific part of a single-layer coded stream can be decoded correctly without decoding the leftover part. For example, B-pictures can be used for this. By default in-layer scalability is not used.

Parameters

TUint aLayer

"Layer number. Layers are numbered [0…n-1], where n is the number of layers available. Use zero if layered bit-rate scalability is not used."

TUint aNumSteps

"The number of in-layer scalability steps to use. Set to one to disable in-layer scalability."

TInLayerScalabilityType aScalabilityType

"The scalability type to use. See the definition of TInLayerScalabilityType for more information."

const TArray< TUint > &aBitrateShare

"Bit-rate share for each scalability step. The bit-rate shares are defined as fractions of total layer bit-rate, with the share for one layer being aBitrateShare[i]/sum(aBitrateShare). For example, to use 2/3 of the total bitrate for the first layer and the remaining 1/3 for the second, the array contents would be {2,1}."

const TArray< TUint > &aPictureShare

"Picture rate share for each scalability step. The picture rate shares are defined similarly to the bit-rate shares. For example, a client wishing to use two B-pictures between each pair of reference pictures should set the array contents to {1,2}."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - In-layer scalability is not supported.KErrArgument - Some of the arguments are out of range. For example, it is not possible to use the specified in-layer scalability setup due to other constraints (such as the maximum picture order delay)."


SetLayerPromotionPointPeriod(TUint,TUint)

IMPORT_C void SetLayerPromotionPointPeriod(TUint aLayer, TUint aPeriod);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the period for layer promotions points for a scalability layer. A layer promotion point is a picture where it is possible to start encoding this enhancement layer if only the lower layers were encoded earlier.

Parameters

TUint aLayer

"Layer number."

TUint aPeriod

"Layer promotion point period. A value of one signals that each picture should be a layer promotion point, value two that there is one picture between each promotion point etc."


CodingStandardSpecificSettingsOutputLC()

IMPORT_C HBufC8* CodingStandardSpecificSettingsOutputLC();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns coding-standard specific settings output from the encoder. The information can contain, for example, some bitstream headers that can change based on settings modified while encoding is in progress.

Return value

HBufC8 *

"Coding-standard specific output. The data format is coding-standard specific and defined separately. The buffer is pushed to the cleanup stack, and the caller is responsible for deallocating it."

Leave codes

"The

method will leave if an error occurs."


ImplementationSpecificSettingsOutputLC()

IMPORT_C HBufC8* ImplementationSpecificSettingsOutputLC();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns implementation-specific settings output from the encoder. The information can contain, for example, some bitstream headers that can change based on settings modified while encoding is in progress.

Return value

HBufC8 *

"Implementation-specific initialization output. The data format is implementation-specific and defined separately by the encoder supplier. The buffer is pushed to the cleanup stack, and the caller is responsible for deallocating it."

Leave codes

"The

method will leave if an error occurs."


WritePictureL(TVideoPicture *)

IMPORT_C void WritePictureL(TVideoPicture *aPicture);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Writes an uncompressed input picture. The picture must remain valid and unmodified until it is returned with the MdvroReturnPicture() callback. This method must not be called if direct capture is used.

Parameters

TVideoPicture *aPicture

"The picture to write."

Leave codes

"The

method will leave if an error occurs."


SendSupplementalInfoL(const TDesC8 &)

IMPORT_C void SendSupplementalInfoL(const TDesC8 &aData);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Requests the encoder to sends supplemental information in the bitstream. The information data format is coding-standard dependent. Only one supplemental information send request can be active at a time. This variant encodes the information to the next possible picture.

Parameters

const TDesC8 &aData

"Supplemental information data to send. The buffer can be reused immediately after the method returns."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - Supplemental information is not supported"


SendSupplementalInfoL(const TDesC8 &,const TTimeIntervalMicroSeconds &)

IMPORT_C void SendSupplementalInfoL(const TDesC8 &aData, const TTimeIntervalMicroSeconds &aTimestamp);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Requests the encoder to send supplemental information in the bitstream. The information data format is coding-standard dependent. Only one supplemental information send request can be active at a time. This variant encodes the information to the picture whose presentation timestamp is equal to or greater than and closest to the value of aTimestamp.

Parameters

const TDesC8 &aData

"Supplemental information data to send. The buffer can be reused immediately after the method returns."

const TTimeIntervalMicroSeconds &aTimestamp

"Timestamp for the picture in which the supplemental information should be included. If the timestamp is in the past, the supplemental information will not be sent."

Leave codes

"The

method will leave if an error occurs. Typical error codes used: KErrNotSupported - Supplemental information is not supported"


CancelSupplementalInfo()

IMPORT_C void CancelSupplementalInfo();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Cancels the current supplemental information send request. The memory buffer reserved for supplemental information data can be reused or deallocated after the method returns.


InputEnd()

IMPORT_C void InputEnd();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Notifies the system that the end of input data has been reached. No more input data can be written through the API. The encoder and pre-processor can use this signal to ensure that the remaining data gets processed, without waiting for new data. After the remaining data has been processed, the client gets notified by the MdvroStreamEnd() callback.

This method is mainly useful for file-to-file conversions and other non-realtime processing. For real-time recording all pictures are processed or discarded according to their timestamps.


Start()

IMPORT_C void Start();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Starts recording video. This includes capturing pictures from the camera (if direct capture is used), pre-processing and encoding. Recording will proceed until it is stopped or paused. Initally recording is stopped.


Stop()

IMPORT_C void Stop();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Stops recording video. No new pictures will be captured, pre-processed, or encoded. If input pictures are written while recording is stopped, they will be returned immediately.


Pause()

IMPORT_C void Pause();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Pauses video recording. Recording can be resumed using CMMFDevVideoRecord::Resume().

While video is paused, new pictures are not captured, and input pictures written using CMMFDevVideoRecord::WritePictureL(TVideoPicture *) are discarded. Timestamps are not incremented - the encoder assumes that the clock source is paused as well, and input picture timestamps are adjusted accordingly. Pause is typically used in video recording applications to pause recording, conversational applications should use CMMFDevVideoRecord::Freeze() instead.

Note: The client has to ensure that the clock source is paused properly. If the paused picture should be shown longer than normal, the client should either adjust input picture timestamps, or start recording (when using direct capture) some time after restarting the clock source.


Resume()

IMPORT_C void Resume();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Resumes video recording after a pause.


Freeze()

IMPORT_C void Freeze();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Freezes the input picture. Freezing is similar to a pause, except that timestamps are incremented normally during a freeze. Normal encoding can be continued using CMMFDevVideoRecord::ReleaseFreeze().

Freeze is typically used in video telephony applications to stop sending new pictures. In that situation the audio encoding can still continue normally, and thus the clock source timestamps are incremented normally. When the freeze is released, the encoder assumes that input picture timestamps have been incremented normally. If direct capture is used, the picture timestamps are updated as if encoding had been going on throughout the freeze.


ReleaseFreeze()

IMPORT_C void ReleaseFreeze();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Releases a frozen input picture. Video capturing and encoding continues normally.


RecordingPosition()

IMPORT_C TTimeIntervalMicroSeconds RecordingPosition();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns the current recording position. The position is the capture timestamp from the latest input picture, or the capture timestamp for the latest picture captured from the camera when direct capture is used.

Return value

TTimeIntervalMicroSeconds

"The current recording position."


GetOutputBufferStatus(TUint &,TUint &)

IMPORT_C void GetOutputBufferStatus(TUint &aNumFreeBuffers, TUint &aTotalFreeBytes);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Gets the current output buffer status. The information includes the number of free output buffers and the total size of free buffers in bytes.

Parameters

TUint &aNumFreeBuffers

"Target for the number of free output buffers."

TUint &aTotalFreeBytes

"Target for the total free buffer size in bytes."


GetPictureCounters(TPictureCounters &)

IMPORT_C void GetPictureCounters(TPictureCounters &aCounters);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Reads various counters related to processed video pictures. See the definition of CMMFDevVideoRecord::TPictureCounters for a description of the counters. The counters are reset when CMMFDevVideoRecord::Initialize() or this method is called, and thus they only include pictures processed since the last call.

Parameters

CMMFDevVideoRecord::TPictureCounters &aCounters

"The counter structure to fill."


GetFrameStabilisationOutput(THwDeviceId,TRect &)

IMPORT_C void GetFrameStabilisationOutput(THwDeviceId aHwDevice, TRect &aRect);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Reads the frame stabilisation output picture position. This information can be used for positioning the viewfinder. The position returned is the stabilisation result for the most recent input picture.

Parameters

THwDeviceId aHwDevice

"The hardware device to query. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

TRect &aRect

"The position of the stabilisation output picture inside the input picture. If frame stabilisation is not used, the rectangle is set to cover the entire input picture."


NumDataBuffers()

IMPORT_C TUint NumDataBuffers();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns the number of output buffers currently containing valid output data.

Return value

TUint

"The number of output buffers with valid output data."


NextBufferL()

IMPORT_C TVideoOutputBuffer* NextBufferL();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Retrieves the next output buffer, in coding order. The buffer must be returned using CMMFDevVideoRecord::ReturnBuffer(TVideoOutputBuffer *) when it is no longer used. The maximum amount of buffers that the caller can keep in its use is controlled by the iMinNumOutputBuffers and iMinTotalOutputBufferSize fields in the TEncoderBufferOptions settings.

Return value

TVideoOutputBuffer *

"The next output buffer, in coding order. If no new buffers are available, the return value is NULL."

Leave codes

"The

method will leave if an error occurs."


ReturnBuffer(TVideoOutputBuffer *)

IMPORT_C void ReturnBuffer(TVideoOutputBuffer *aBuffer);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Returns a used output buffer back to the encoder. The buffer can no longer be used by the client.

Parameters

TVideoOutputBuffer *aBuffer

"The buffer to return."


PictureLoss()

IMPORT_C void PictureLoss();

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Indicates a picture loss to the encoder, without specifying the lost picture. The encoder can react to this by transmitting an intra-picture.


PictureLoss(const TArray< TPictureId > &)

IMPORT_C void PictureLoss(const TArray< TPictureId > &aPictures);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Indicates to the encoder the pictures that have been lost. The encoder can react to this by transmitting an intra-picture.

Parameters

const TArray< TPictureId > &aPictures

"Picture identifiers for the lost pictures. See [6] for a definition of TPictureId."


SliceLoss(TUint,TUint,const TPictureId &)

IMPORT_C void SliceLoss(TUint aFirstMacroblock, TUint aNumMacroblocks, const TPictureId &aPicture);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Indicates a loss of consecutive macroblocks in raster scan order to the encoder.

Parameters

TUint aFirstMacroblock

"The first lost macroblock. The macroblocks are numbered such that the macroblock in the upper left corner of the picture is considered macroblock number 1 and the number for each macroblock increases from left to right and then from top to bottom in raster-scan order."

TUint aNumMacroblocks

"The number of lost macroblocks that are consecutive in raster scan order."

const TPictureId &aPicture

"The picture number for the picture where the macroblocks were lost. If the picture is not known, aPicture.iIdType is set to ENone."


ReferencePictureSelection(const TDesC8 &)

IMPORT_C void ReferencePictureSelection(const TDesC8 &aSelectionData);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sends a reference picture selection request to the encoder. The request is delivered as a coding-standard specific binary message. Reference picture selection can be used to select a previous correctly transmitted picture to use as a reference in case later pictures have been lost.

Parameters

const TDesC8 &aSelectionData

"The reference picture selection request message. The message format is coding-standard specific, and defined separately."


NumComplexityLevels(THwDeviceId)

IMPORT_C TUint NumComplexityLevels(THwDeviceId aHwDevice);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Retrieves the number of complexity control levels available for a hardware device. Devices can support processing the same input data with different computational complexity levels. The complexity level can affect, for example, the motion vector search range used in an encoder.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

Return value

TUint

"The number of complexity control levels available, one if multiple levels are not supported."


SetComplexityLevel(THwDeviceId,TUint)

IMPORT_C void SetComplexityLevel(THwDeviceId aHwDevice, TUint aLevel);

Pre-Condition

"This method can only be called after the API has been initialized with Initialize()."

Description

Sets the complexity level to use for video processing in a hardware device. The level can be changed at any time.

Parameters

THwDeviceId aHwDevice

"The hardware device to configure. The value is returned from CMMFDevVideoRecord::SelectEncoderL(TUid) or CMMFDevVideoRecord::SelectPreProcessorL(TUid) when the device is selected."

TUint aLevel

"The computational complexity level to use. Level zero (0) is the most complex one, with the highest quality. Higher level numbers require less processing and may have lower quality."


CustomInterface(THwDeviceId,TUid)

IMPORT_C TAny* CustomInterface(THwDeviceId aHwDevice, TUid aInterface);

Description

Retrieves a custom interface to the specified hardware device.

Parameters

THwDeviceId aHwDevice

"The hardware device from which the custom interface shall be requested. The value is returned from SelectDecoderL() or SelectPostProcessorL() when the device is selected."

TUid aInterface

"Interface UID, defined with the custom interface."

Return value

TAny *

"Pointer to the interface implementation, or NULL if the device does not implement the interface requested. The return value must be cast to the correct type by the user."


MdvrpNewBuffer(TVideoOutputBuffer *)

private: virtual void MdvrpNewBuffer(TVideoOutputBuffer *aBuffer);

Description

Delivers a new coded data unit to the client. The CDevVideoRecord implementation will maintain a list of buffers and implement CMMFDevVideoRecord::NumDataBuffers() and CMMFDevVideoRecord::NextBufferL() based on those. The buffers will be returned back to the device using CMMFDevVideoRecord::ReturnBuffer(TVideoOutputBuffer *).

Parameters

TVideoOutputBuffer *aBuffer

"The buffer containing the data to send."


MdvrpReturnPicture(TVideoPicture *)

private: virtual void MdvrpReturnPicture(TVideoPicture *aPicture);

Description

Returns a used input picture back to the client. Called by the encoder hardware device after the picture has been encoded.

Parameters

TVideoPicture *aPicture

"The picture to return."


MdvrpSupplementalInfoSent()

private: virtual void MdvrpSupplementalInfoSent();

Description

Sends a notification to the client that the current supplemental info send request has completed.


MdvrpFatalError(CMMFVideoHwDevice *,TInt)

private: virtual void MdvrpFatalError(CMMFVideoHwDevice *aDevice, TInt aError);

Description

Reports a fatal error to the client. The device must automatically stop processing video data when such errors occur, and may not do further processing before it has been deleted and re-created.

Parameters

CMMFVideoHwDevice *aDevice

"The device that reports the error."

TInt aError

"The error code."


MdvrpInitializeComplete(CMMFVideoHwDevice *,TInt)

private: virtual void MdvrpInitializeComplete(CMMFVideoHwDevice *aDevice, TInt aError);

Description

Reports that an asynchronous CMMFDevVideoRecord::Initialize() method has completed. The device is now ready for recording.

Parameters

CMMFVideoHwDevice *aDevice

"The device that was initialized."

TInt aError

"Initialization result error code, KErrNone if initialization was successful."


MdvrpStreamEnd()

private: virtual void MdvrpStreamEnd();

Description

Reports that the input video data end has been reached and all pictures have been processed. Called by each hardware device after their CMMFDevVideoRecord::InputEnd() methods have been called and all data has been processed. The proxy implementation will notify the client about stream end when all hardware devices have called this method.

[Top]


Member classes


Class TPictureCounters

class TPictureCounters;

Description

Class to define the picture counters available through GetPictureCounters.

Members

Defined in CMMFDevVideoRecord::TPictureCounters:

Construction and destruction


TPictureCounters()

inline TPictureCounters();

Description

Default constructor. Zeros all members.

Member data


iPicturesSkippedBufferOverflow

TUint iPicturesSkippedBufferOverflow;

Description

The number of pictures skipped due to lack of output buffers.


iPicturesSkippedProcPower

TUint iPicturesSkippedProcPower;

Description

The number of pictures skipped due to lack of processing power.


iPicturesSkippedRateControl

TUint iPicturesSkippedRateControl;

Description

The number of pictures skipped for bit-rate control purposes.


iPicturesProcessed

TUint iPicturesProcessed;

Description

The number of processed (i.e. pre-processed and encoded) input pictures.


iInputPictures

TUint iInputPictures;

Description

The total number of input pictures. When using direct capture, this is the total number of pictures captured, otherwise it is the total number of input pictures written by the client.