thyme

thyme

0个粉丝

2

问答

0

专栏

0

资料

thyme  发布于  2018-02-05 13:34:20
采纳率 0%
2个问答
5555

HI_MPI_VO_SendFrame();参数问题

 
HI_MPI_VO_SendFrame();有一个参数是结构体类型VIDEO_FRAME_INFO_S,

typedef struct hiVIDEO_FRAME_INFO_S
{
        VIDEO_FRAME_S stVFrame;
        HI_U32 u32PoolId;
} VIDEO_FRAME_INFO_S;

typedef struct hiVIDEO_FRAME_S
{
        HI_U32 u32Width;
        HI_U32 u32Height;
        VIDEO_FIELD_E u32Field;
        PIXEL_FORMAT_E enPixelFormat;
        VIDEO_FORMAT_E enVideoFormat;
        COMPRESS_MODE_E enCompressMode;
        HI_U32 u32PhyAddr[3];
        HI_VOID *pVirAddr[3];
        HI_U32 u32Stride[3];
        HI_U32 u32HeaderPhyAddr[3];
        HI_VOID *pHeaderVirAddr[3];
        HI_U32 u32HeaderStride[3];
        HI_U16 u16OffsetTop; /* top offset of show area */
        HI_U16 u16OffsetBottom; /* bottom offset of show area */
        HI_U16 u16OffsetLeft; /* left offset of show area */
        HI_U16 u16OffsetRight; /* right offset of show area */
        HI_U64 u64pts;
        HI_U32 u32TimeRef;
        HI_U32 u32PrivateData;
} VIDEO_FRAME_S;
这其中的地址分物理地址、虚拟地址、头部物理地址、头部虚拟地址,而且地址都是3元素大小的数组,请问这些分别代表什么意思?谢谢!
我的目的是通过HI_MPI_VO_SendFrame();输出一张图片。
我来回答
回答4个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-05 14:52:58
认可0
要看是什么格式

比如PIXEL_FORMAT_YUV_SEMIPLANAR_420
那么数组[0]表示Y, [1]表示UV, [2]没有用

比如PIXEL_FORMAT_YUV_PLANAR_420
那么数组[0]表示Y, [1]表示U, [2]表示V


u32PhyAddr是指物理地址, 一般硬件模块用, 比如VI/VPSS, DMA
pVirAddr是指虚拟地址, 一般是程序中使用, 比如malloc分配的内存, 具体可以百度一下

举例:
HI_MPI_SYS_MmzAlloc(HI_U32 *pu32PhyAddr, HI_VOID **ppVirtAddr, const HI_CHAR *pstrMmb, const HI_CHAR *pstrZone, HI_U32 u32Len);
这个函数就是在MMZ上分配一块内存,同时返回物理地址和对应的虚拟地址, 应用程序中是无法访问物理地址, 只能通过虚拟地址copy数据


如果是要用HI_MPI_XXX_SendFrame()
意味着只能用下面的流程
HI_MPI_VB_CreatePool()
HI_MPI_VB_GetBlock()
HI_MPI_VB_Handle2PhysAddr()
HI_MPI_SYS_Mmap()
// copy data
HI_MPI_VB_Handle2PoolId()
HI_MPI_XXX_SendFrame()
HI_MPI_SYS_Munmap()
HI_MPI_VB_ReleaseBlock()

thyme

0个粉丝

2

问答

0

专栏

0

资料

thyme 2018-02-05 15:10:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84208&ptid=38850]zhuangweiye 发表于 2018-2-5 14:52[/url]
要看是什么格式

比如PIXEL_FORMAT_YUV_SEMIPLANAR_420
[/quote]

:)感谢您的帮助!
格式是SemiPlannar422。
现在清楚了许多,但是还是有些问题需要您再帮忙解释下:
Stride指的什么,还有Header部分又是指什么?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-05 15:28:08
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84214&ptid=38850]thyme 发表于 2018-2-5 15:10[/url]
感谢您的帮助!
格式是SemiPlannar422。
现在清楚了许多,但是还是有些问题需要您再帮忙解释下:
[/quote]

stride也有叫 pitch的

一般来说内存都是一维的, 当把一维的内存看成两维时就有stride

简单举个例子来说:

一根绳子(代表一维的内存), 当在桌子上把绳子按一定的长度折叠, 就能成一个面(代表两维), 那么这个折叠的长度就是stride

一般来说stride可以认为是如何在二维的情况下看一块内存, 同样的一块内存, 不同的stride代表不同的看法, 而内存还是那一块内存

Header部分没有研究过

thyme

0个粉丝

2

问答

0

专栏

0

资料

thyme 2018-02-05 15:31:00
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84219&ptid=38850]zhuangweiye 发表于 2018-2-5 15:28[/url]
stride也有叫 pitch的

一般来说内存都是一维的, 当把一维的内存看成两维时就有stride
[/quote]

极其形象,嗯,全明白了!:)感谢感谢!!!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区