C++纯虚类与工厂的应用

一、纯虚类

hardware/amlogic/camera/inc/CameraHal.h

class CameraAdapter: public FrameNotifier, public virtual RefBase
{
  //add by tank@tcl.com                                                                                                                       
 virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode) = 0;
 virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl) = 0;
 virtual int v4l2GetControl(int control) = 0;
 virtual int v4l2SetControl(int control, int value) = 0; 
 int mInterpolationSize;
 //end tank@tcl.com 
}
hardware/amlogic/camera/inc/BaseCameraAdapter.h
class BaseCameraAdapter : public CameraAdapter
{
  //add by tank@tcl.com
  virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode) = 0;
  virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl) = 0;
  virtual int v4l2GetControl(int control) = 0;
  virtual int v4l2SetControl(int control, int value) = 0;
  //end tank@tcl.com
}
二、继承类

hardware/amlogic/camera/vircam/inc/V4LCamAdpt.h

class V4LCamAdpt : public BaseCameraAdapter
{
  //add by tank@tcl.com
  virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode);
  virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl);
  virtual int v4l2GetControl(int control);
  virtual int v4l2SetControl(int control, int value);
   //end tank@tcl.com
}
hardware/amlogic/camera/inc/V4LCameraAdapter/V4LCameraAdapter.h
class V4LCameraAdapter : public BaseCameraAdapter
{
  //add by tank@tcl.com                                                                                                                         
  virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode);
  virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl);
  virtual int v4l2GetControl(int control);
  virtual int v4l2SetControl(int control, int value);
  //end tank@tcl.com
}

三、使用

1.分别是虚拟和实际

hardware/amlogic/camera/CameraHal.cpp

status_t CameraHal::initialize(CameraProperties::Properties* properties)
{
  mCameraAdapter = CameraAdapter_Factory(sensor_index);
}
hardware/amlogic/camera/vircam/VirtualCamHal.cpp
status_t VirtualCamHal::initialize(CameraProperties::Properties* properties)
{
  mCameraAdapter = CameraAdapter_Factory(sensor_index);
}
2.工厂模式的定义

hardware/amlogic/camera/V4LCameraAdapter/V4LCameraAdapter.cpp

extern "C" CameraAdapter* CameraAdapter_Factory(size_t sensor_index)
{
  if( sensor_index == (size_t)(iCamerasNum)){
    adapter = new V4LCamAdpt(sensor_index);
  }else{
    adapter = new V4LCameraAdapter(sensor_index);
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值