| /* |
| * main_dev_manager.h - main device manager |
| * |
| * Copyright (c) 2015 Intel Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * Author: John Ye <[email protected]> |
| * Author: Wind Yuan <[email protected]> |
| */ |
| |
| #ifndef XCAMSRC_MAIN_DEV_MANAGER_H |
| #define XCAMSRC_MAIN_DEV_MANAGER_H |
| |
| #ifdef HAVE_CONFIG_H |
| # include <config.h> |
| #endif |
| #include <base/xcam_common.h> |
| #include <linux/videodev2.h> |
| #include <stdint.h> |
| #include <unistd.h> |
| |
| #include <gst/video/video.h> |
| #include <gst/gst.h> |
| |
| #include <queue> |
| |
| #include <xcam_mutex.h> |
| #include <video_buffer.h> |
| #include <v4l2_buffer_proxy.h> |
| #include <v4l2_device.h> |
| #include <device_manager.h> |
| #if HAVE_IA_AIQ |
| #include <isp/atomisp_device.h> |
| #include <isp/isp_controller.h> |
| #include <isp/isp_image_processor.h> |
| #include <isp/x3a_analyzer_aiq.h> |
| #endif |
| #if HAVE_LIBCL |
| #include <ocl/cl_3a_image_processor.h> |
| #include <ocl/cl_post_image_processor.h> |
| #endif |
| #include <x3a_analyzer_simple.h> |
| |
| namespace GstXCam { |
| |
| class MainDeviceManager; |
| |
| class MainDeviceManager |
| : public XCam::DeviceManager |
| { |
| public: |
| MainDeviceManager (); |
| ~MainDeviceManager (); |
| |
| XCam::SmartPtr<XCam::VideoBuffer> dequeue_buffer (); |
| void pause_dequeue (); |
| void resume_dequeue (); |
| |
| #if HAVE_LIBCL |
| public: |
| void set_cl_image_processor (XCam::SmartPtr<XCam::CL3aImageProcessor> &processor) { |
| _cl_image_processor = processor; |
| } |
| |
| XCam::SmartPtr<XCam::CL3aImageProcessor> &get_cl_image_processor () { |
| return _cl_image_processor; |
| } |
| |
| void set_cl_post_image_processor (XCam::SmartPtr<XCam::CLPostImageProcessor> &processor) { |
| _cl_post_image_processor = processor; |
| } |
| |
| XCam::SmartPtr<XCam::CLPostImageProcessor> &get_cl_post_image_processor () { |
| return _cl_post_image_processor; |
| } |
| #endif |
| |
| protected: |
| virtual void handle_message (const XCam::SmartPtr<XCam::XCamMessage> &msg); |
| virtual void handle_buffer (const XCam::SmartPtr<XCam::VideoBuffer> &buf); |
| |
| private: |
| XCam::SafeList<XCam::VideoBuffer> _ready_buffers; |
| #if HAVE_LIBCL |
| XCam::SmartPtr<XCam::CL3aImageProcessor> _cl_image_processor; |
| XCam::SmartPtr<XCam::CLPostImageProcessor> _cl_post_image_processor; |
| #endif |
| }; |
| |
| }; |
| |
| #endif //XCAMSRC_MAIN_DEV_MANAGER_H |