skye

skye

0个粉丝

1

问答

0

专栏

0

资料

skye  发布于  2020-08-12 11:29:46
采纳率 0%
1个问答
2183

VIDEO_FRAME_INFO_S结构填充问题

 

通过HI_MPI_VI_GetPipeFrame函数获取VI Pipe中的raw数据(sensor输出的raw数据由个数据组成),现在从中解析出另一个raw数据(同时分辨率也改变了),想将解析出来的数据通HI_MPI_VI_SendPipeRaw再写回到另一个Pipe中, 现在涉及到VIDEO_FRAME_INFO_S的填充问题,请问哪位大神能指点下怎么将我的raw数据填充到VIDEO_FRAME_INFO_S中。
感谢!

我来回答
回答2个
时间排序
认可量排序

XL

0个粉丝

0

问答

0

专栏

0

资料

XL 2020-08-26 10:14:55
认可0

顶一下

Hecarim

0个粉丝

0

问答

0

专栏

0

资料

Hecarim 2020-08-27 16:39:48
认可0

static int get_frame_from_vb(int w,int h)
{
HI_U32 u32Height=h;
HI_U32 u32Width=w;
HI_U32 u32LStride=w;
HI_U32 u32CStride=w;
HI_U32 u32LumaSize = (u32LStride * u32Height);

stBlockInfo.VbPool = 4;
stBlockInfo.u32Size = u32LumaSize*3/2;

//从缓冲池里取一块缓冲块
stBlockInfo.VbBlk = HI_MPI_VB_GetBlock(stBlockInfo.VbPool,stBlockInfo.u32Size,NULL);
if (VB_INVALID_HANDLE == stBlockInfo.VbBlk)
{
    printf("HI_MPI_VB_GetBlock failed\n");
    return HI_FAILURE;
}

stBlockInfo.u32PoolId = HI_MPI_VB_Handle2PoolId(stBlockInfo.VbBlk);   
if (VB_INVALID_POOLID == stBlockInfo.u32PoolId)
{
    printf("HI_MPI_VB_Handle2PoolId faile\n");
    return HI_FAILURE;
}

stBlockInfo.u32PhyAddr = HI_MPI_VB_Handle2PhysAddr(stBlockInfo.VbBlk);    
if (0 == stBlockInfo.u32PhyAddr)
{
    printf("HI_MPI_VB_Handle2PhysAddr failed\n");
    return HI_FAILURE;
} 


stBlockInfo.pVirAddr = HI_MPI_SYS_Mmap(stBlockInfo.u32PhyAddr,stBlockInfo.u32Size);
if (NULL == stBlockInfo.pVirAddr)
{
    printf("HI_MPI_SYS_Mmap failed\n");
    return HI_FAILURE;
} 

memset(&stFrameInfo, 0, sizeof(VIDEO_FRAME_INFO_S));

stFrameInfo.u32PoolId = stBlockInfo.u32PoolId;//缓冲池ID
stFrameInfo.stVFrame.u32Width = u32Width;
stFrameInfo.stVFrame.u32Height = u32Height;  
stFrameInfo.stVFrame.enField = VIDEO_FIELD_FRAME;//场帧模式
stFrameInfo.stVFrame.enPixelFormat = SAMPLE_PIXEL_FORMAT;//视频图像像素格式
stFrameInfo.stVFrame.enVideoFormat = VIDEO_FORMAT_LINEAR;//视频图像格式
stFrameInfo.stVFrame.enCompressMode = COMPRESS_MODE_NONE;//视频压缩模式 COMPRESS_MODE_SEG(chnl) COMPRESS_MODE_FRAME(grp)
stFrameInfo.stVFrame.enDynamicRange = DYNAMIC_RANGE_SDR8;//动态范围--       
stFrameInfo.stVFrame.u64PhyAddr[0] = stBlockInfo.u32PhyAddr;
stFrameInfo.stVFrame.u64PhyAddr[1] = stFrameInfo.stVFrame.u64PhyAddr[0] + u32LumaSize;
stFrameInfo.stVFrame.u64PhyAddr[2] = 0;
stFrameInfo.stVFrame.u64VirAddr[0] = stBlockInfo.pVirAddr;
stFrameInfo.stVFrame.u64VirAddr[1] = stFrameInfo.stVFrame.u64VirAddr[0] + u32LumaSize;
stFrameInfo.stVFrame.u64VirAddr[2] = 0;   
stFrameInfo.stVFrame.u32Stride[0] = u32LStride;
stFrameInfo.stVFrame.u32Stride[1] = u32CStride;
stFrameInfo.stVFrame.u32Stride[2] = 0;

return HI_SUCCESS;

}

参考一下就好了,释放的时候会出现bug的

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区