فهرست منبع

change driver_h264_enc, for change rate.

yuchuli 2 ماه پیش
والد
کامیت
3306d2f54e
2فایلهای تغییر یافته به همراه22 افزوده شده و 0 حذف شده
  1. 4 0
      src/driver/driver_cloud_grpc_client_h264/grpcclient.cpp
  2. 18 0
      src/driver/driver_h264_enc/main.cpp

+ 4 - 0
src/driver/driver_cloud_grpc_client_h264/grpcclient.cpp

@@ -127,6 +127,7 @@ void grpcclient::run()
 
     std::string target_str = gstrserverip+":";
     target_str = target_str + gstrserverport ;//std::to_string()
+    std::cout<<" server : "<<target_str<<std::endl;
     auto cargs = grpc::ChannelArguments();
     cargs.SetMaxReceiveMessageSize(1024 * 1024 * 1024); // 1 GB
     cargs.SetMaxSendMessageSize(1024 * 1024 * 1024);
@@ -277,6 +278,9 @@ void grpcclient::dec_yaml(const char * stryamlpath)
     {
         gstrserverip = config["server"].as<std::string>();
     }
+
+    std::cout<<" server ip: "<<gstrserverip<<std::endl;
+
     if(config["port"])
     {
         gstrserverport = config["port"].as<std::string>();

+ 18 - 0
src/driver/driver_h264_enc/main.cpp

@@ -127,6 +127,7 @@ void ThreadEnc()
     char * strbufnv12 = new char[30000000];
     int ret;
 
+RESTART:
 #ifndef USE_QSV
     av_register_all();
 
@@ -246,6 +247,9 @@ void ThreadEnc()
               frame->width  = c->width;
               frame->height = c->height;
 
+
+
+
               ret = av_frame_get_buffer(frame, 0);
               if (ret < 0) {
                   fprintf(stderr, "Could not allocate the video frame data\n");
@@ -265,6 +269,18 @@ void ThreadEnc()
         }
         else
         {
+            static int ntest = 0;  //test  change framerate.
+ //           ntest++;
+            int64_t new_bitrate = 4000000;
+            if(ntest == 300)
+            {
+                // 关闭原编码器
+                avcodec_close(c);
+                gnframerate = new_bitrate;
+                goto RESTART;
+            }
+
+
             gMutexLock.lock();
             memcpy(strbuf,gstrbuffer,gnwidth*gnheight*3/2);
             gbNewData = false;
@@ -284,6 +300,8 @@ void ThreadEnc()
 
             frame->pts = i;i++;
 
+
+            std::cout<<" bitrate: "<<c->bit_rate<<std::endl;
             /* encode the image */
             QTime xTime;
             xTime.start();