video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2022-04-26 ab3d17cd44625a762fc10f0f1fd8f2c46b980aff
csrc/ffmpeg/format/FormatIn.cpp
@@ -35,7 +35,9 @@
   ,io_ctx_(NULL)
   ,read_io_buff_(NULL)
   ,read_io_buff_size_(32768)
#ifdef GB28181
   ,handle_gb28181(NULL)
#endif
   ,fps_(25.0)
   {}
@@ -49,7 +51,9 @@
   ,io_ctx_(NULL)
   ,read_io_buff_(NULL)
   ,read_io_buff_size_(32768)
#ifdef GB28181
   ,handle_gb28181(NULL)
#endif
   ,fps_(25.0)
   {
      prop_ = new VideoProp;
@@ -72,9 +76,11 @@
         ctx_ = NULL;
      }
#ifdef GB28181
      if (handle_gb28181){
         delete handle_gb28181;
      }
#endif
      if(io_ctx_){
         av_freep(&io_ctx_->buffer);
@@ -115,6 +121,7 @@
      return 0;
   }
#ifdef GB28181
   int FormatIn::openGb28181(const char *filename, AVDictionary **options){
       std::string fn = filename;
@@ -142,7 +149,7 @@
      return ret;
   }
#endif
/////////////////////////////////////////////////////////////////////////
   int FormatIn::open(const char *filename, AVDictionary **options){
@@ -182,6 +189,8 @@
                   fps_ = av_q2d(in->avg_frame_rate);
               }
            logIt("in stream video fps %f, time_base: %d : %d, size: %dx%d", fps_, in->time_base.num, in->time_base.den, in->codecpar->width, in->codecpar->height);
         }
         if (type == AVMEDIA_TYPE_AUDIO){
            auto in = ctx_->streams[i];
@@ -200,7 +209,7 @@
      return ctx_->streams[vs_idx_]->codecpar->codec_id == AV_CODEC_ID_HEVC;
   }
   const bool FormatIn::isAVC1()const{
   const bool FormatIn::IsAVC1()const{
      if (IsHEVC()) return false;
      char p[100] = {0};
@@ -357,7 +366,6 @@
   int FormatIn::readPacket(AVPacket *pkt_out){
      auto flag = av_read_frame(ctx_, pkt_out);
      return flag;
   }
@@ -368,7 +376,7 @@
      av_packet_rescale_ts(pkt, in->time_base, in->codec->time_base);
        int ret = avcodec_send_packet(dec_ctx_, pkt);
        if(ret < 0){
           logIt("avcodec_send_packet error : %s", getAVErrorDesc(ret).c_str());
           logIt("pkt size %d avcodec_send_packet error : %s", pkt->size, getAVErrorDesc(ret).c_str());
           return -1;
        }
        while (ret >= 0) {