Toybrick

标题: 关于mpp编码rgb格式的问题。 [打印本页]

作者: luxiaofei    时间: 2019-12-29 14:28
标题: 关于mpp编码rgb格式的问题。
本帖最后由 luxiaofei 于 2019-12-29 14:29 编辑

是这样的,我用mpp编码opencv的mat
初始化的关键代码:
  1.     mpp_enc_data.fmt = MPP_FMT_YUV420P;
  2.     if (mpp_enc_data.fmt <= MPP_FMT_YUV420SP_VU)
  3.         mpp_enc_data.frame_size = mpp_enc_data.hor_stride * mpp_enc_data.ver_stride * 3 / 2;
  4.     else if (mpp_enc_data.fmt <= MPP_FMT_YUV422_UYVY) {
  5.         // NOTE: yuyv and uyvy need to double stride
  6.         mpp_enc_data.hor_stride *= 2;
  7.         mpp_enc_data.frame_size = mpp_enc_data.hor_stride * mpp_enc_data.ver_stride;
  8.     } else
  9.         mpp_enc_data.frame_size = mpp_enc_data.hor_stride * mpp_enc_data.ver_stride * 4;
复制代码
调用mpp的代码:(其中image2是mat格式的)

  1.         unsigned char *buf = mpp_buffer_get_ptr(mpp_enc_data.frm_buf);

  2.         cvtColor(image2, dstimage,CV_RGB2YUV_I420);
  3.         memcpy(buf, dstimage.data,Image_Width*Image_High*3/2*sizeof(unsigned char));

  4.         ret = mpp_frame_init(&frame);
  5.         mpp_frame_set_width(frame, mpp_enc_data.width);
  6.         mpp_frame_set_height(frame, mpp_enc_data.height);
  7.         mpp_frame_set_hor_stride(frame, mpp_enc_data.hor_stride);
  8.         mpp_frame_set_ver_stride(frame, mpp_enc_data.ver_stride);
  9.         mpp_frame_set_fmt(frame, mpp_enc_data.fmt);
  10.         mpp_frame_set_buffer(frame, mpp_enc_data.frm_buf);

  11.         ret = mpp_enc_data.mpi->encode_put_frame(mpp_enc_data.ctx, frame);
  12.         ret = mpp_enc_data.mpi->encode_get_packet(mpp_enc_data.ctx, &packet);
复制代码
相当于先把opencv的mat转成yuv格式的,再编码,是可以的。

但是在初始化时,我把流格式设置为MPP_FMT_RGB888,不使用cvtcolor函数,直接拷贝内存,
  1.         //cvtColor(image2, dstimage,CV_RGB2YUV_I420);
  2.         memcpy(buf, image2.data,Image_Width*Image_High*4*sizeof(unsigned char));
复制代码
编码出来的就是花屏,
问一下版主和大家有没有什么经验



作者: luxiaofei    时间: 2019-12-30 15:18
顶一下,大家有用过rgb格式的编码吗
作者: piccolo    时间: 2019-12-30 15:36
我也尝试过编码rgb888的数据,出来是花屏的。没办法只能用rga先转成yuv





欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3