| | |
| | | avcodec_close(dec_ctx_); |
| | | dec_ctx_ = NULL; |
| | | } |
| | | |
| | | } |
| | | if (handle_gb28181){ |
| | | delete handle_gb28181; |
| | |
| | | return true; |
| | | } |
| | | |
| | | const bool FormatIn::IsHEVC()const{ |
| | | return ctx_->streams[vs_idx_]->codecpar->codec_id == AV_CODEC_ID_HEVC; |
| | | } |
| | | |
| | | bool FormatIn::openCodec(AVDictionary **options){ |
| | | if (vs_idx_ == -1) return false; |
| | | |
| | |
| | | return NULL; |
| | | } |
| | | |
| | | std::vector<AVStream*> FormatIn::allStreams(){ |
| | | std::vector<AVStream*> vec; |
| | | auto v = getStream(AVMEDIA_TYPE_VIDEO); |
| | | if (v){ |
| | | vec.push_back(v); |
| | | } |
| | | auto a = getStream(AVMEDIA_TYPE_AUDIO); |
| | | if (a){ |
| | | vec.push_back(a); |
| | | } |
| | | return vec; |
| | | } |
| | | |
| | | AVCodecContext *FormatIn::getCodecContext(int type){ |
| | | return dec_ctx_; |
| | | } |
| | |
| | | |
| | | int FormatIn::readPacket(AVPacket *pkt_out){ |
| | | |
| | | return av_read_frame(ctx_, pkt_out); |
| | | auto flag = av_read_frame(ctx_, pkt_out); |
| | | |
| | | return flag; |
| | | } |
| | | |
| | | int FormatIn::decode(AVFrame* frame, AVPacket *pkt){ |