video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-10-28 f2fb5eb58ae50bb35f2d0ae2673a596adc06cb00
csrc/ffmpeg/format/FormatIn.cpp
@@ -38,19 +38,13 @@
   FormatIn::~FormatIn()
   {
      if(io_ctx_){
         if(read_io_buff_){
            read_io_buff_ = NULL;
         }
         avio_context_free(&io_ctx_);
         io_ctx_ = NULL;
      }
      if(ctx_){
         if (!ctx_->oformat){
            avformat_free_context(ctx_);
         }else{
         if (!(ctx_->flags & AVFMT_FLAG_CUSTOM_IO)){
            avformat_close_input(&ctx_);
         }else{
            avformat_free_context(ctx_);
         }
         ctx_ = NULL;
         if(dec_ctx_){
            avcodec_close(dec_ctx_);
@@ -58,18 +52,23 @@
         }
         
      }
      if (handle_gb28181){
         delete handle_gb28181;
      }
      if(read_io_buff_){
         av_free(read_io_buff_);
         read_io_buff_ = NULL;
      }
      if(io_ctx_){
         avio_context_free(&io_ctx_);
         io_ctx_ = NULL;
      }
   }
////////////////////////////////////////////////////////////////////////
   int FormatIn::openWithCustomIO(void *opaque, read_packet fn, AVDictionary **options/*=NULL*/){
      ctx_ = avformat_alloc_context();
      if(!ctx_){
         logIt("open with custom io create format error\n");
         return -1;
      }
      read_io_buff_ = (uint8_t*)av_malloc(read_io_buff_size_);
      if(!read_io_buff_){
         logIt("open with custom io alloc read io buff error\n");
@@ -81,6 +80,13 @@
         logIt("open with custom io create custom avio error\n");
         return -1;
      }
      ctx_ = avformat_alloc_context();
      if(!ctx_){
         logIt("open with custom io create format error\n");
         return -1;
      }
      ctx_->pb = io_ctx_;
      auto err = av_probe_input_buffer(ctx_->pb, &ctx_->iformat, NULL, NULL, 0, 0);