| | |
| | | io_ctx_ = NULL; |
| | | } |
| | | if(ctx_){ |
| | | avformat_close_input(&ctx_); |
| | | avformat_free_context(ctx_); |
| | | if (!ctx_->oformat){ |
| | | avformat_free_context(ctx_); |
| | | }else{ |
| | | avformat_close_input(&ctx_); |
| | | } |
| | | ctx_ = NULL; |
| | | if(dec_ctx_){ |
| | | avcodec_close(dec_ctx_); |
| | |
| | | auto err = av_probe_input_buffer(ctx_->pb, &ctx_->iformat, NULL, NULL, 0, read_io_buff_size_); |
| | | if(err != 0){ |
| | | logIt("open with custom io prob input buffer error:%d\n", err); |
| | | logIt("failed:%s", getAVErrorDesc(err).c_str()); |
| | | logIt("custom io failed:%s", getAVErrorDesc(err).c_str()); |
| | | return -1; |
| | | } |
| | | |
| | |
| | | int ret = openWithCustomIO(handle_gb28181, handle_gb28181->readData, options); |
| | | if(ret < 0){ |
| | | logIt("do openWithCustomIO failed:%d",ret); |
| | | } |
| | | }else{ |
| | | ret = avformat_open_input(&ctx_, "", NULL, options); |
| | | } |
| | | |
| | | ret = avformat_open_input(&ctx_, "", NULL, options); |
| | | // if(ret < 0){ |
| | | // logIt("open %s failed:%s",filename, |
| | | // getAVErrorDesc(ret).c_str()); |