Obtain an image of Webcamera from QEMU and add the Bitmap change display function.
/*
* Copyright (c) 2010 ISB.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "Symbian Foundation License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
*
* Initial Contributors:
* ISB - Initial contribution
*
* Contributors:
*
* Description:
*
*/
#ifndef WEBCAMERACONVERT_H__
#define WEBCAMERACONVERT_H__
#include <e32def.h>
#include <comm.h>
#ifndef WEBCAMERA_UVC_H_
#include "webcamera_uvc.h"
#endif
const TUint KWebcameraNeutralGrayValue = 220;
const TUint KWebcameraColorGradation = 256; // true color.
const TUint KWebcameraBitMask = 0x000000ff;
const TUint KWebcameraBitMask8 = 0x0000ff00;
const TUint KWebcameraBitMask16 = 0x00ff0000;
/**
Perform a Convert function Base.
*/
class DWebCameraConvertBase : public DBase
{
public:
/**
Constructor.
*/
DWebCameraConvertBase(TWebcameraUVC* aUvcFormat);
/**
Destructor.
*/
~DWebCameraConvertBase();
public: //virtual function.
/**
Convert FrameData to Bitmap.
@param aInBuf [in] FrameData before conversion.
aOutBuf [out] BimapData after conversion.
@return KErrNotSupported. Implement in sub-class, return unsupport in base-class.
*/
virtual TInt ConvertData(TUint8* aInBuf, TUint8* aOutBuf);
protected:
TWebcameraUVC* iUvcFormat;
};
/**
Perform a Convert function (Yuv -> Bitmap).
*/
class DWebCameraConvertYuv : public DWebCameraConvertBase
{
public:
/**
Create object.
@return Pointer of object.
*/
static DWebCameraConvertYuv* NewL();
/**
Constructor.
*/
DWebCameraConvertYuv(TWebcameraUVC* aUvcFormat);
/**
Destructor.
*/
~DWebCameraConvertYuv();
public: //from DWebCameraConvertBase
/**
Convert FrameData to Bitmap(YUV->Bitmap).
@param aInBuf [in] FrameData before conversion.
aOutBuf [out BitmapData after conversion.
@return KErrNone.
*/
TInt ConvertData(TUint8* aInBuf, TUint8* aOutBuf);
private:
/**
Secondary constructor.
*/
void ConstructL();
/**
Convert YUV to RGB.
@param aY [in] Signal of brightness.
aU [in] Signal of colour difference(Cb).
aV [in] Signal of colour difference(cr).
@return Pixel.
*/
TInt ConvertYuvToBitmap(TInt aY, TInt aU, TInt aV);
};
/**
Convert function
*/
class DWebCameraConvert : public DBase
{
public:
/**
Constructor.
*/
DWebCameraConvert(TWebcameraUVC* aUvcFormat);
/**
Destructor.
*/
~DWebCameraConvert();
/**
Decide video format, by video format from UVC class.
@param aInBuf [in] Data to convert.
aOutBuf [out] BitmapData after conversion.
aVideoData [in] Format data of Video.
@return KErrNone
*/
TInt ConvertData(TUint8* aInBuf, TUint8* aOutBuf);
private:
/**
Store the instance.
*/
DWebCameraConvertBase* iConvertObject;
};
#endif // ECAMWEBCAMERACONVERT_H