| | |
| | | #include <thread> |
| | | #include <atomic> |
| | | #include <mutex> |
| | | #include <unordered_map> |
| | | #include <memory> |
| | | #include "common/callback.hpp" |
| | | |
| | |
| | | public: |
| | | Wrapper(); |
| | | ~Wrapper (); |
| | | |
| | | private: |
| | | std::unique_ptr<ffwrapper::FormatIn> init_reader(const char* input); |
| | | void init_stream(); |
| | | void init_decoder(ffwrapper::FormatIn *in); |
| | | void init_rec(ffwrapper::FormatIn *in); |
| | | |
| | | void init_worker(ffwrapper::FormatIn *in); |
| | | void run_worker(std::shared_ptr<ffwrapper::CodedData> data, int64_t &id); |
| | | void deinit_worker(); |
| | | public: |
| | | int RunStream(const char* input); |
| | | private: |
| | | void run_stream_thread(); |
| | | |
| | | public: //recorder |
| | | void BuildRecorder(const char* id,const char *dir, const int mind, const int maxd); |
| | | int FireRecorder(const char* sid,const int64_t &id); |
| | | void GetInfoRecorder(std::string &recID, int &index, std::string &path); |
| | | |
| | | void ScalePicture(const int w, const int h, const int flags); |
| | | void UseGB28181(); |
| | | void UseCPU(); |
| | | void GB28181(); |
| | | void CPUDec(); |
| | | public: //decoder |
| | | void BuildDecoder(); |
| | | void GetPicDecoder(unsigned char **data, int *w, int *h, int64_t *id); |
| | | public: // push stream |
| | | void GetPacket(unsigned char **pktData, int *size, int *key); |
| | | |
| | | private: |
| | | // stream 参数 |
| | | std::string input_url_; |
| | | int scale_w_, scale_h_, scale_f_; |
| | | int gb_, cpu_; |
| | | bool use_decoder_; |
| | | |
| | | int gb_, cpu_; |
| | | // decoder 参数 |
| | | std::unique_ptr<std::thread> thread_; |
| | | std::atomic_bool stop_stream_; |
| | | |
| | | // 业务类 |
| | | // 推流类 |
| | | stream* stream_; |
| | | // 解码类 |
| | | decoder* decoder_; |
| | | // 录像类 |
| | | // 录像类,一直存在 |
| | | rec* rec_; |
| | | |
| | | // 录像请求缓存,等待runstream后添加 |
| | | std::function<void(ffwrapper::FormatIn*)> fn_rec_lazy_; |
| | | }; |
| | | |
| | | uint8_t *DecodeJPEG(const char *file, int *w, int *h); |