text: /**
   * ============================================================================
   *
   * Copyright (C) 2018-2020, Hisilicon Technologies Co., Ltd. All Rights Reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are met:
   *
   *   1 Redistributions of source code must retain the above copyright notice,
   *     this list of conditions and the following disclaimer.
   *
   *   2 Redistributions in binary form must reproduce the above copyright notice,
   *     this list of conditions and the following disclaimer in the documentation
   *     and/or other materials provided with the distribution.
   *
   *   3 Neither the names of the copyright holders nor the names of the
   *   contributors may be used to endorse or promote products derived from this
   *   software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   */
  #ifndef _CAMERA_H
  #define _CAMERA_H
  
  #include "utils.h"
  #define CAMERA_NUM     (2)
  
  //#define CAMERA(i) (g_CameraMgr.cap[i])
  
  struct CameraData {
      uint32_t width = 0;
      uint32_t height = 0;
      uint32_t alignWidth = 0;
      uint32_t alignHeight = 0;
      uint32_t size = 0;
      uint8_t* data;
  };
  
  class Camera {
  public:
      Camera(uint32_t id =0, uint32_t fps = 20, uint32_t width = 1280, uint32_t height = 720);
      ~Camera();
      Result Open(int channelID);
      Result Close(int channelID);
      Result Read(int channelID, ImageData& frame, QueueNode& image);
      bool IsOpened(int channelID);
      int GetCameraDataSize(int channelID);
      private:
      uint32_t id_;
      uint32_t fps_;
      uint32_t width_;
      uint32_t height_;
      uint32_t size_;
  
      Result SetProperty(int channelID);
      bool isAlign_;
      bool isOpened_[2];
  
      //ImageData outBuf_ ;
  };
  
  
  
  
  #endif
  