/* * Copyright (c) 2019 Rockchip 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. * */ #ifndef _TNR_STATS_STREAM_H_ #define _TNR_STATS_STREAM_H_ #include #include "Stream.h" #include "xcam_thread.h" #include "xcam_mutex.h" #include "NrStatsStream.h" using namespace XCam; namespace RkCam { class TnrProcThread; class TnrStatsStream : public RKStream, public PollCallback { public: explicit TnrStatsStream (SmartPtr dev, int type); virtual ~TnrStatsStream (); void start (); void stop (); void set_device (CamHwIsp20* camHw, SmartPtr dev); //bool thread_proc (); virtual SmartPtr new_video_buffer(SmartPtr buf, SmartPtr dev); //void cache_sp_buffer (SmartPtr buf); //void return_sp_buffer (); //void notify_motion_param(rk_aiq_amd_params_t amd_param); //void connect_nr_stream (SmartPtr stream); // from PollCallback virtual XCamReturn poll_buffer_ready (SmartPtr &buf, int type) { return XCAM_RETURN_ERROR_FAILED; } virtual XCamReturn poll_buffer_failed (int64_t timestamp, const char *msg) { return XCAM_RETURN_ERROR_FAILED; } virtual XCamReturn poll_buffer_ready (SmartPtr &buf); virtual XCamReturn poll_buffer_ready (SmartPtr &buf, int dev_index) { return XCAM_RETURN_ERROR_FAILED; } virtual XCamReturn poll_event_ready (uint32_t sequence, int type) { return XCAM_RETURN_ERROR_FAILED; } virtual XCamReturn poll_event_failed (int64_t timestamp, const char *msg) { return XCAM_RETURN_ERROR_FAILED; } protected: bool init_tnrbuf (); void deinit_tnrbuf (); int get_fd_by_index (uint32_t index); private: CamHwIsp20* _camHw; SmartPtr _ispp_dev; uint32_t _idx_array[64]; int _fd_array[64]; int _buf_num; bool _fd_init_flag; std::map _idx_fd_map; //SmartPtr _proc_thread; //SmartPtr _nr_stream_unit; Mutex _list_mutex; }; class TnrProcThread : public Thread { public: TnrProcThread (TnrStatsStream *handle) : Thread ("TnrProcThread") , _handle (handle) {} protected: virtual bool loop () { return false;//_handle->thread_proc (); } private: TnrStatsStream *_handle; }; } #endif