From d0b8204e3939e1e2d841a90ea254bc4b91309ab5 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期日, 19 一月 2020 13:32:13 +0800 Subject: [PATCH] update ffmepg gpu balance --- csrc/wrapper.cpp | 34 +++++++++++++++++++++++++++++----- 1 files changed, 29 insertions(+), 5 deletions(-) diff --git a/csrc/wrapper.cpp b/csrc/wrapper.cpp index 9706071..3e34b2c 100644 --- a/csrc/wrapper.cpp +++ b/csrc/wrapper.cpp @@ -105,16 +105,19 @@ prop.gpu_acc_ = !cpu_; std::unique_ptr<FormatIn> in(new FormatIn(prop.gpuAccl())); - AVDictionary *avdic = prop.optsFormat(); int flag = -1; if (gb_){ flag = in->openGb28181(input, NULL); }else{ - flag = in->open(input, &avdic); + AVDictionary *avdic = prop.optsFormat(); + if(avdic){ + flag = in->open(input, &avdic); + av_dict_free(&avdic); + }else{ + flag = in->open(input, NULL); + } } - if(avdic){ - av_dict_free(&avdic); - } + if(flag == 0){ if(!in->findStreamInfo(NULL)){ logIt("can't find video stream\n"); @@ -403,5 +406,26 @@ return flag; } + + int GetGb28181Pic(const char *rtspUrl, char *retData, int *retDataLen){ + int ret = 0; + std::string fn = rtspUrl; + + auto handle_gb28181 = new GB28181API; + if(handle_gb28181->addCamera(fn) == -1){ + delete(handle_gb28181); + logIt("do addCamera Error\n"); + return -1; + } + + int retLen = handle_gb28181->capturePic(handle_gb28181, retData, retDataLen); + if(retLen == 0){ + logIt("do capturePic failed:%d"); + ret = -1; + } + + handle_gb28181->deleteCamera(); + return ret; + } } -- Gitblit v1.8.0