From be9c1d1f659b0ff31f656424c478e83a4f7c53b5 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期五, 20 九月 2019 11:44:19 +0800 Subject: [PATCH] update ffmpeg --- csrc/wrapper.cpp | 40 +++++++++++++++++++--------------------- 1 files changed, 19 insertions(+), 21 deletions(-) diff --git a/csrc/wrapper.cpp b/csrc/wrapper.cpp index 63bb661..9f0e4e7 100644 --- a/csrc/wrapper.cpp +++ b/csrc/wrapper.cpp @@ -44,6 +44,7 @@ ,scale_w_(0) ,scale_h_(0) ,scale_f_(SWS_POINT) + ,audio_(false) ,gb_(0) ,cpu_(0) ,thread_(nullptr) @@ -72,20 +73,6 @@ } } - void Wrapper::ScalePicture(const int w, const int h, const int flags){ - scale_w_ = w; - scale_f_ = flags; - scale_h_ = h; - } - - void Wrapper::GB28181(){ - gb_ = 1; - } - - void Wrapper::CPUDec(){ - cpu_ = 1; - } - std::unique_ptr<ffwrapper::FormatIn> Wrapper::init_reader(const char* input){ VideoProp prop; @@ -106,7 +93,7 @@ } if(flag == 0){ if(!in->findStreamInfo(NULL)){ - logIt("yolo can't find video stream\n"); + logIt("can't find video stream\n"); return nullptr; } @@ -131,15 +118,26 @@ return 0; } + void Wrapper::AudioSwitch(const bool a){ + audio_ = a; + if (stream_){ + stream_->AudioSwitch(a); + } + } + void Wrapper::init_worker(ffwrapper::FormatIn *in){ if (rec_->Loaded() && stream_ && decoder_) return; - stream_ = new stream(3 * 25); + stream_ = new stream(in, 3 * 25); + stream_->AudioSwitch(audio_); + decoder_ = new decoder(in, scale_w_, scale_h_, scale_f_); + rec_->Load(in); if(fn_rec_lazy_) fn_rec_lazy_(in); } - void Wrapper::run_worker(std::shared_ptr<ffwrapper::CodedData> data, int64_t &id){ + void Wrapper::run_worker(ffwrapper::FormatIn *in, std::shared_ptr<ffwrapper::CodedData> data, int64_t &id){ + if (stream_) stream_->SetPacket(data); if (decoder_) decoder_->SetFrame(data, id); if (rec_->Loaded()) rec_->SetPacket(data, id); @@ -172,7 +170,7 @@ break; } - run_worker(data, id); + run_worker(in.get(), data, id); id++; } @@ -180,14 +178,14 @@ } } - void Wrapper::BuildRecorder(const char* id, const char *output, const int mindur, const int maxdur){ + void Wrapper::BuildRecorder(const char* id, const char *output, const int mindur, const int maxdur, const bool audio){ if (rec_->Loaded()){ - rec_->NewRec(id, output, mindur, maxdur); + rec_->NewRec(id, output, mindur, maxdur, audio); }else{ std::string rid(id), dir(output); fn_rec_lazy_ = - [=](ffwrapper::FormatIn *in){rec_->NewRec(rid.c_str(), dir.c_str(), mindur, maxdur);}; + [=](ffwrapper::FormatIn *in){rec_->NewRec(rid.c_str(), dir.c_str(), mindur, maxdur, audio);}; } } -- Gitblit v1.8.0