| | |
| | | delete bridge_; bridge_ = NULL; |
| | | } |
| | | |
| | | map_rec_.clear(); |
| | | list_rec_pkt_.clear(); |
| | | |
| | | for(auto &i : list_pic_){ |
| | | free(i.data); |
| | | } |
| | | } |
| | | |
| | | void Wrapper::ScalePicture(const int w, const int h, const int flags){ |
| | |
| | | avpacket p = {k.data, k.id}; |
| | | i.second.rec->CachePacket(p); |
| | | } |
| | | logIt("start rec %d frames", list_rec_pkt_.size()); |
| | | logIt("START REC %d FRAMES", list_rec_pkt_.size()); |
| | | } |
| | | }else if (i.second.rec){ |
| | | i.second.rec->CachePacket(pkt); |
| | |
| | | } |
| | | |
| | | //////////////recorder |
| | | std::shared_ptr<Recorder> Wrapper::init_recorder(FormatIn *in, std::string id,std::string dir, const int mind, const int maxd){ |
| | | std::shared_ptr<Recorder> Wrapper::init_recorder(FormatIn *in, std::string id, std::string dir, const int mind, const int maxd){ |
| | | if(!in){ |
| | | logIt("Init wrapper first"); |
| | | return nullptr; |
| | | } |
| | | |
| | | auto rec = std::make_shared<Recorder>(in, id); |
| | | auto rec = std::make_shared<Recorder>(in, id.c_str()); |
| | | |
| | | rec->SetCallback([&](std::string &id, int &index, std::string &path){ |
| | | cache_rec_info(id, index, path); |
| | |
| | | void Wrapper::BuildRecorder(const char* id, const char *output, const int mindur, const int maxdur){ |
| | | std::string rid(id); |
| | | std::string dir(output); |
| | | |
| | | auto fn = [=](FormatIn *in){ |
| | | return init_recorder(in, rid, dir, mindur, maxdur); |
| | | }; |
| | |
| | | iter->second.rec->FireRecorder(id); |
| | | } |
| | | } |
| | | logIt("FIRE REC %s, FRAME ID: %d", sid, id); |
| | | } |
| | | |
| | | void Wrapper::cache_rec_info(std::string &id, int &index, std::string &path){ |
| | |
| | | struct record_file_info info; |
| | | info.file_frame_index = index; |
| | | info.file_path = path; |
| | | info.rec_id = id; |
| | | list_rec_.emplace_back(info); |
| | | list_rec_map_[path] = id; |
| | | logIt("list rec files count : %d", list_rec_.size()); |
| | | map_rec_.erase(id); |
| | | logIt("LIST REC FILES COUNT : %d", list_rec_.size()); |
| | | |
| | | } |
| | | |
| | | void Wrapper::GetInfoRecorder(int &index, std::string &path){ |
| | |
| | | index = info.file_frame_index; |
| | | path = info.file_path; |
| | | list_rec_.pop_front(); |
| | | |
| | | if (map_rec_.find(info.rec_id) != map_rec_.end()) |
| | | map_rec_.erase(info.rec_id); |
| | | // logIt("go get info index: %d, file: %s\n", index, path.c_str()); |
| | | } |
| | | |
| | |
| | | ret = iter->second; |
| | | list_rec_map_.erase(iter); |
| | | } |
| | | |
| | | |
| | | return ret; |
| | | } |
| | | ////////decoder |