RV1126解码(5) read_vdec_thread线程

read_vdec_thread线程的用处

        read_vdec_thread线程主要是获取每一帧VDEC解码数据,并打印出来每一帧数据的具体信息。

代码:

//用于从 VDEC 解码器获取每一帧解码后的图像数据
void *read_vdec_thread(void *args)
{
  pthread_detach(pthread_self());
  MEDIA_BUFFER mb = NULL;
  int ret;

  while (1)
  {

    // 获取每一帧VDEC解码数据
    mb = RK_MPI_SYS_GetMediaBuffer(RK_ID_VDEC, 0, -1);
    if (!mb)
    {
      printf("RK_MPI_SYS_GetMediaBuffer get vdec null buffer....\n");
      return NULL;
    }

    MB_IMAGE_INFO_S stImageInfo = {0};
    ret = RK_MPI_MB_GetImageInfo(mb, &stImageInfo); // 从指定的图像缓冲区MEDIA_BUFFER中获取图像信息
    if (ret)
    {
      printf("Get image info failed! ret = %d\n", ret);
      RK_MPI_MB_ReleaseBuffer(mb);
      return NULL;
    }

    // 打印图像信息
    printf("Get Frame:ptr:%p, fd:%d, size:%zu, mode:%d, channel:%d, "
           "timestamp:%lld, ImgInfo:<wxh %dx%d, fmt 0x%x>\n",
           RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetFD(mb), RK_MPI_MB_GetSize(mb),
           RK_MPI_MB_GetModeID(mb), RK_MPI_MB_GetChannelID(mb),
           RK_MPI_MB_GetTimestamp(mb), stImageInfo.u32Width,
           stImageInfo.u32Height, stImageInfo.enImgType);

    //释放mb
    RK_MPI_MB_ReleaseBuffer(mb);

    return NULL;
  }
}

线程执行流程图: 

        read_vdec_thread线程主要是获取每一帧VDEC解码数据,并打印出来每一帧数据的具体信息。这里需要用到的API是RK_MPI_SYS_GetMediaBuffer获取每一帧VDEC的数据,并调用RK_MPI_MB_GetImageInfo打印出我们每一帧数据的具体信息。

RK_MPI_SYS_GetMediaBuffer:


MEDIA_BUFFER mb = NULL;
mb = RK_MPI_SYS_GetMediaBuffer(RK_ID_VDEC, 0, -1);

  RK_MPI_MB_GetImageInfo的解释如下:

MEDIA_BUFFER mb = NULL;
mb = RK_MPI_SYS_GetMediaBuffer(RK_ID_VDEC, 0, -1);

MB_IMAGE_INFO_S stImageInfo = {0}; //初始化图像格式
ret = RK_MPI_MB_GetImageInfo(mb, &stImageInfo); 

最后面把数据打印出来就可了 。这个线程的工作就完了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值