From 6151028a8e0e63ed6967faa7c23ff56b076879df Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期五, 05 四月 2019 11:22:03 +0800
Subject: [PATCH] 解决GB28181推多路流问题

---
 QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
index af7f598..f1386f5 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
@@ -5,6 +5,7 @@
 #include <zconf.h>
 #include <opencv2/opencv.hpp>
 #include "FFmpegDecoderJPG.h"
+#include <cstring>
 
 void BASICGB28181::initFFmpeg() {
     av_register_all();
@@ -278,6 +279,20 @@
 
 //        BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image);
             p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(p_this->frame));
+            if(p_this->m_image.empty()) {
+                ERR("camID:" << p_this->m_camIdx << " frameW:" << p_this->frame->width << "frame.data.len" << strlen(p_this->frame->data[0]));
+                continue;
+            }
+//            else {
+//                static int count =0;
+//                count ++;
+//                if(count > 100){
+//                    ERR("camID:" << p_this->m_camIdx << " cols:" << p_this->m_image.cols <<\
+//        " rows:" << p_this->m_image.rows << " channels:" << p_this->m_image.channels());
+//                    count = 0;
+//                }
+//
+//            }
 //            灏唅甯т繚瀛樹负蹇収
             if (p_this->m_SnapshotNotSaveRet && (p_this->pkt.flags & AV_PKT_FLAG_KEY)) {
                 try {
@@ -317,6 +332,7 @@
 #endif
             //瑙﹀彂涓婂眰淇″彿
             gSignalLock.emitSigal(p_this->m_camIdx + "DecoderImageOK");
+//            DBG("emitSigal: " << p_this->m_camIdx);
 //#ifdef TestCode
 //        DBG("emitSigal(\"DecoderImageOK\") after");
 //#endif
@@ -536,7 +552,7 @@
     m_frameIndex++;
     m_packetsVec.push_back({m_frameIndex, newPacket});
     if (newPacket.flags & AV_PKT_FLAG_KEY) {
-        DBG("newPacket.flags & AV_PKT_FLAG_KEY   ");
+//        DBG("newPacket.flags & AV_PKT_FLAG_KEY   ");
         m_last_I_FrameId = m_frameIndex;
     }
 }

--
Gitblit v1.8.0