video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-09-29 e878e92811a2dbfb6b4d3f7b2c357435f56e28db
csrc/wrapper.cpp
@@ -38,7 +38,7 @@
namespace cffmpeg_wrap{
    using namespace buz;
    Wrapper::Wrapper(const bool logit, const char *logfile)
    Wrapper::Wrapper()
    :input_url_("")
    ,scale_w_(0)
    ,scale_h_(0)
@@ -52,11 +52,29 @@
    ,stream_(nullptr)
    ,decoder_(nullptr)
    ,rec_(new rec)
    ,logit_(false)
    {
        makeTheWorld();
        if (logit){
            logif::CreateLogger(logfile, true);
        }
    }
    Wrapper::Wrapper(const char *logfile)
    :input_url_("")
    ,scale_w_(0)
    ,scale_h_(0)
    ,scale_f_(SWS_POINT)
    ,audio_(false)
    ,gb_(0)
    ,cpu_(0)
    ,run_dec_(false)
    ,thread_(nullptr)
    ,stop_stream_(false)
    ,stream_(nullptr)
    ,decoder_(nullptr)
    ,rec_(new rec)
    ,logit_(true)
    {
        makeTheWorld();
        logif::CreateLogger(logfile, true);
    }
@@ -74,7 +92,8 @@
        {
            logIt("WRAPPER EXCEPTION: ", e.what());
        }
        logif::DestroyLogger();
        if (logit_)
            logif::DestroyLogger();
    }
    std::unique_ptr<ffwrapper::FormatIn> Wrapper::init_reader(const char* input){
@@ -132,7 +151,7 @@
    void Wrapper::init_worker(ffwrapper::FormatIn *in){
        if (rec_->Loaded() && stream_ && decoder_) return;
        stream_ = new stream(in, 3 * 25);
        stream_ = new stream(in, 3 * in->getFPS());
        // stream_->AudioSwitch(audio_);
        decoder_ = new decoder(in, scale_w_, scale_h_, scale_f_);
@@ -173,7 +192,7 @@
            
            int wTime = 1000000.0 / in->getFPS() ;
            wTime >>= 1;
            logIt("INPUT FPS: %d", wTime);
            logIt("WAIT TIME PER FRAME: %d", wTime);
            init_worker(in.get());
@@ -186,6 +205,10 @@
                    break;
                }
                if (in->notVideoAudio(&data->getAVPacket())){
                    continue;
                }
                if (!gb_ && id < 0){
                    id++;
                    continue;