| | |
| | | int br; |
| | | int gi; |
| | | int flag; |
| | | int fmt; |
| | | cvbridge *bridge; |
| | | } PicEncoder; |
| | | |
| | | void *CreateEncoder(const int w, const int h, const int fps, const int br, |
| | | const int scale_flag, const int gi, const int fmt, const char *file){ |
| | | |
| | | if (fmt < 0) return NULL; |
| | | const int scale_flag, const int gi){ |
| | | |
| | | PicEncoder *e = (PicEncoder*)malloc(sizeof(PicEncoder)); |
| | | e->enc = NULL; |
| | |
| | | e->br = br; |
| | | e->gi = gi; |
| | | e->flag = scale_flag; |
| | | e->fmt = fmt; |
| | | e->bridge = NULL; |
| | | |
| | | VideoProp prop_; |
| | |
| | | prop_.bit_rate_ = br; |
| | | gi < 0 ? prop_.gpu_acc_ = false : prop_.gpu_acc_ = true; |
| | | |
| | | std::string filename("./88.mp4"); |
| | | if (file) filename = file; |
| | | |
| | | FormatOut *enc = new FormatOut(prop_, filename.c_str()); |
| | | FormatOut *enc = new FormatOut(prop_, "./88.mp4"); |
| | | e->enc = enc; |
| | | |
| | | return e; |
| | |
| | | |
| | | if (e->bridge == NULL){ |
| | | e->bridge = new cvbridge( |
| | | w, h, e->fmt, |
| | | w, h, AV_PIX_FMT_BGR24, |
| | | e->w, e->h, ctx->pix_fmt, e->flag); |
| | | } |
| | | |
| | | AVFrame *bgr_frame = cvbridge::fillFrame(in, w, h, e->fmt); |
| | | AVFrame *bgr_frame = cvbridge::fillFrame(in, w, h, AV_PIX_FMT_BGR24); |
| | | AVFrame *frame = e->bridge->convert2Frame(bgr_frame); |
| | | av_frame_free(&bgr_frame); |
| | | |