blob: 764b6b423dc4658db6964f4ef6ef5de4998fcd81 [file] [log] [blame]
/*
* 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 <john.ye@intel.com>
* Author: Wind Yuan <feng.yuan@intel.com>
*/
#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