| | |
| | | ,dec_ctx_(NULL) |
| | | ,vs_idx_(-1) |
| | | ,as_idx_(-1) |
| | | ,prop_(NULL) |
| | | ,hw_accl_(hw) |
| | | ,io_ctx_(NULL) |
| | | ,read_io_buff_(NULL) |
| | |
| | | ,fps_(25.0) |
| | | {} |
| | | |
| | | FormatIn::FormatIn(const VideoProp &prop, bool hw/*=true*/) |
| | | :ctx_(NULL) |
| | | ,dec_ctx_(NULL) |
| | | ,vs_idx_(-1) |
| | | ,as_idx_(-1) |
| | | ,prop_(NULL) |
| | | ,hw_accl_(hw) |
| | | ,io_ctx_(NULL) |
| | | ,read_io_buff_(NULL) |
| | | ,read_io_buff_size_(32768) |
| | | ,handle_gb28181(NULL) |
| | | ,fps_(25.0) |
| | | { |
| | | prop_ = new VideoProp; |
| | | *prop_ = prop; |
| | | } |
| | | |
| | | FormatIn::~FormatIn() |
| | | { |
| | | logIt("free format in"); |
| | | if (prop_) delete prop_; |
| | | |
| | | if(dec_ctx_){ |
| | | avcodec_close(dec_ctx_); |
| | | avcodec_free_context(&dec_ctx_); |
| | |
| | | |
| | | if(io_ctx_){ |
| | | av_freep(&io_ctx_->buffer); |
| | | avio_context_free(&io_ctx_); |
| | | av_freep(&io_ctx_); |
| | | io_ctx_ = NULL; |
| | | } |
| | | |
| | |
| | | }else if(in->avg_frame_rate.num >=1 && in->avg_frame_rate.den >= 1){ |
| | | fps_ = av_q2d(in->avg_frame_rate); |
| | | } |
| | | logIt("in stream video fps %f, time_base: %d : %d", fps_, in->time_base.num, in->time_base.den); |
| | | 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]; |
| | |
| | | for (int i = 0; i < 2; ++i) |
| | | { |
| | | if(hw_accl_){ |
| | | idle_gpu = gpu::getGPUPrior(300, 1024, 0); |
| | | idle_gpu = gpu::getGPUPrior(350, 896, 0); |
| | | // idle_gpu = gpu::getGPU(300); |
| | | if (prop_->gpu_index_ > -1){ |
| | | idle_gpu = prop_->gpu_index_; |
| | | } |
| | | if(idle_gpu < 0){ |
| | | logIt("NO GPU RESOURCE TO DECODE"); |
| | | hw_accl_ = false; |