class MCameraBuffer;
Description
Class used for passing camera picture data between camera and client in the V2 observer. Used for viewfinder, image capture
and video capture.
The class offers APIs for the client to access the data as a descriptor, a bitmap or a handle to a kernel chunk. Depending
on the format previously requested by the client, one or more of the API choices may be inappropriate e.g. an image will not
be avaiable as a bitmap in the FBS unless the client has specifically requested it.
The buffer may contain multiple frames.
Members
Defined in MCameraBuffer
:
BitmapL()
, ChunkL()
, ChunkOffsetL()
, DataL()
, FrameSize()
, NumFrames()
, Release()
, iElapsedTime
, iIndexOfFirstFrameInBuffer
virtual TInt NumFrames()=0;
Description
Returns the number of frames of image data contained within the buffer. This would be 1 for a image capture, and match the
requested count for video capture. For other methods in this class that take a aFrameIndex param, 0 <= aFrameIndex < NumFrames()
Return value
TInt
|
The number of frames of image data in the buffer.
|
|
virtual TDesC8 *DataL(TInt aFrameIndex)=0;
Description
Returns a pointer to a descriptor containing a frame of camera data. The format will have been previously specified by a CCamera
class method.
Parameters
TInt aFrameIndex |
The index of the required frame. For a still image this should be 0.
|
|
Return value
TDesC8 *
|
A pointer to a descriptor containing a frame of image data.
|
|
Leave codes
KErrArgument |
if aIndex is out of range and
|
KErrNotSupported |
if the camera data is actually bitmaps in the FBS.
|
|
virtual CFbsBitmap &BitmapL(TInt aFrameIndex)=0;
Description
Returns a reference to a FBS bitmap containing a frame of image data.
Parameters
TInt aFrameIndex |
The index of the required frame. For a still image this should be 0.
|
|
Return value
CFbsBitmap & |
A reference to a FBS bitmap containing a frame of picture data.
|
|
Leave codes
KErrArgument |
if aIndex is out of range and
|
KErrNotSupported |
if the picture data is not a FBS bitmap.
|
|
virtual RChunk &ChunkL()=0;
Description
Returns a handle for the chunk that contains the camera data. The RChunk
is exposed so that it can potentially be shared between multiple processes. The ptr returned by DataL(aFrameIndex) is effectively
derived from this RChunk
(where both are supported simulataneously). The equivalent ptr would be: TPtrC8* ptr; ptr.Set(ChunkL()
.Base() + ChunkOffset(aFrameIndex), FrameSize(aFrameIndex));
Return value
RChunk &
|
A reference to a handle to the chunk that contains the buffer of picture data.
|
|
Leave codes
KErrNotSupported |
if the chunk is not available.
|
|
virtual TInt ChunkOffsetL(TInt aFrameIndex)=0;
Description
Returns the offset into the chunk that contains the frame specified by aFrameIndex. The client would add this offset to the
ptr returned by ChunkL()
.Base() to get the address of the start of the frame data.
Parameters
Return value
TInt
|
The offset into the chunk for the start of the frame.
|
|
Leave codes
KErrNotSupported |
if the chunk is not available
|
KErrArgument |
if aIndex is out of range.
|
|
virtual TInt FrameSize(TInt aFrameIndex)=0;
Description
Returns the size of the data in bytes that comprises the frame specified by aIndex.
Parameters
TInt aFrameIndex |
The index of the required frame. For a still image this should be 0.
|
|
Return value
TInt
|
Returns the size of the data in bytes that comprises the frame.
|
|
Leave codes
KErrArgument |
if aIndex is out of range.
|
|
virtual void Release()=0;
Description
Releases the buffer. Once the client has processed the picture data it should use this method to signal to CCamera
that the buffer can be re-used.
TInt iIndexOfFirstFrameInBuffer;
Description
Sequential frame number of the first frame in the buffer, counting from when CCamera::StartVideoCapture()
was called and including frames dropped due to lack of buffers. Always zero for still images.
TTimeIntervalMicroSeconds iElapsedTime;
Description
Time
elapsed from when CCamera::StartVideoCapture()
was called until the first frame in the buffer was captured. Always zero for still images.