From d04ddf9eee23e4058461d4f86e88e5e22a06c7fb Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期五, 08 三月 2019 15:13:47 +0800
Subject: [PATCH] 局部变量转换为成员变量

---
 QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp |   61 +++++++++++++++---------------
 1 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
index c353675..c701ddb 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
@@ -146,37 +146,39 @@
     p_this->m_running = true;
     av_register_all();
     avformat_network_init();
-    AVFormatContext *ic = avformat_alloc_context();
+    p_this->ic = avformat_alloc_context();
 
-    unsigned char *iobuffer = (unsigned char *) av_malloc(p_this->m_buf_size);
-    AVIOContext *avio = avio_alloc_context(iobuffer, p_this->m_buf_size, 0, p_this, p_this->read_data, NULL, NULL);
-    ic->pb = avio;
+    p_this->iobuffer = (unsigned char *) av_malloc(p_this->m_buf_size);
+    p_this->avio = avio_alloc_context(p_this->iobuffer, p_this->m_buf_size, 0, p_this, p_this->read_data, NULL, NULL);
+    p_this->ic->pb = p_this->avio;
 
-    int err = av_probe_input_buffer(ic->pb, &ic->iformat, nullptr, nullptr, 0, p_this->m_buf_size);
-    int err1 = avformat_open_input(&ic, "", NULL, NULL);
-    int err2 = avformat_find_stream_info(ic, nullptr);
+    int err = av_probe_input_buffer(p_this->ic->pb, &p_this->ic->iformat, nullptr, nullptr, 0, p_this->m_buf_size);
+    int err1 = avformat_open_input(&p_this->ic, "", NULL, NULL);
+//    int err2 = avformat_find_stream_info(ic, nullptr);
+    int err2 = avformat_find_stream_info(p_this->ic, NULL);
     int vi = -1;
-    for (int i = 0; i < ic->nb_streams; ++i) {
-        if (ic->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+    for (int i = 0; i < p_this->ic->nb_streams; ++i) {
+        if (p_this->ic->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
             vi = i;
             break;
         }
     }
-    AVStream *stream = ic->streams[vi];
-    p_this->video_st = stream;
-    AVCodecContext *ctx = avcodec_alloc_context3(nullptr);
-    int err3 = avcodec_parameters_to_context(ctx, stream->codecpar);
+    p_this->stream = p_this->ic->streams[vi];
+    p_this->video_st = p_this->stream;
+    p_this->ctx = avcodec_alloc_context3(nullptr);
+    int err3 = avcodec_parameters_to_context(p_this->ctx, p_this->stream->codecpar);
 
-    AVCodec *codec = avcodec_find_decoder(ctx->codec_id);
+    p_this->codec = avcodec_find_decoder(p_this->ctx->codec_id);
     //鏄惁鍚敤GPU
     if (p_this->m_gpuIdx >= 0) {
-        if (codec != NULL) {
+        if (p_this->codec != NULL) {
             char cuvidName[40] = {0};
-            sprintf(cuvidName, "%s_cuvid", codec->name);
-            if (!strcmp(codec->name, "h264") || !strcmp(codec->name, "h265") || !strcmp(codec->name, "hevc")) {
-                AVCodec *codec_cuvid = avcodec_find_decoder_by_name(cuvidName);
-                if (codec_cuvid != NULL) {
-                    codec = codec_cuvid;
+            sprintf(cuvidName, "%s_cuvid", p_this->codec->name);
+            if (!strcmp(p_this->codec->name, "h264") || !strcmp(p_this->codec->name, "h265") ||
+                !strcmp(p_this->codec->name, "hevc")) {
+                p_this->codec_cuvid = avcodec_find_decoder_by_name(cuvidName);
+                if (p_this->codec_cuvid != NULL) {
+                    p_this->codec = p_this->codec_cuvid;
                 } else {
 //                    return false;
                     ERR("codec_cuvid is NULL");
@@ -184,12 +186,11 @@
             }
         }
     }
-    int err4 = avcodec_open2(ctx, codec, nullptr);
+    int err4 = avcodec_open2(p_this->ctx, p_this->codec, nullptr);
 
-    AVPacket pkt;
-    av_init_packet(&pkt);
+    av_init_packet(&p_this->pkt);
 
-    AVFrame *frame = av_frame_alloc();
+    p_this->frame = av_frame_alloc();
     unsigned int usleepTime = (1000 / p_this->m_fps) - 12;
     usleepTime *= 1000;
     DBG(" before while <<usleepTime is " << usleepTime);
@@ -197,13 +198,13 @@
 #ifdef TestCode
         ClockTimer Test("while time");
 #endif
-        int err5 = av_read_frame(ic, &pkt);
+        int err5 = av_read_frame(p_this->ic, &p_this->pkt);
         //# todo save package
         p_this->frame_number++;
 
-        int err6 = avcodec_send_packet(ctx, &pkt);
+        int err6 = avcodec_send_packet(p_this->ctx, &p_this->pkt);
 //        av_packet_unref(&pkt);
-        int err7 = avcodec_receive_frame(ctx, frame);
+        int err7 = avcodec_receive_frame(p_this->ctx, p_this->frame);
         if ((err7 == AVERROR(EAGAIN)) || (err5 < 0) || (err6 < 0)) {
             ERR(" error << err7:" << err7 << "  err5: " << err5 << " err6: " << err6);
             usleep(40000);
@@ -211,11 +212,11 @@
         }
         //DBG("GotPicture "<<m_camId<<":"<<frame_number);
         //鏀惧湪姝ゅ鏄洜涓轰箣鍓嶆斁鍦ㄥ墠闈�,鏀跺埌鐨勫抚涓嶅畬鎴�
-        p_this->SaveToPacketVector(pkt);
+        p_this->SaveToPacketVector(p_this->pkt);
         p_this->CheckSave();
 
 //        BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image);
-        p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(frame));
+        p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(p_this->frame));
 
 #ifdef TestCode
         {
@@ -271,7 +272,7 @@
 
     }
     DBG(" after while ");
-    av_frame_free(&frame);
+    av_frame_free(&p_this->frame);
 }
 
 bool BASICGB28181::FFmpegDecoderJPG::startThd(const std::string &camIdx, const int &fps, const int &gpuIdx) {

--
Gitblit v1.8.0