Jason9

Jason9

1个粉丝

15

问答

0

专栏

0

资料

Jason9  发布于  2017-02-16 21:28:50
采纳率 0%
15个问答
3954

Hi3521码流缓冲区的数据结构

 
Hi3521的sample应用程序中,设置了输入图像缓冲区和码流缓冲区,有了解这两种缓冲区的数据结构的吗?
按理说,这种缓冲区应该满足先进先出(FIFO)特性,一般用循环队列解决,但是这种缓冲区应该是申请的动态内存吧?动态内存怎么设计成循环队列结构的呢?
我来回答
回答4个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-02-17 08:33:55
认可0

sample动态分配的内存只是用来copy码流数据的,即在用户态把码流copy好了,然后调用海思API(HI_MPI_VENC_SendStream), 基本上就是调用某个ioctl把数据copy到内核态的buffer中,这个buffer就是在create时设定大小的,位于MMZ上的buffer(具体位置可以在log里面看到,硬件使用的内存一般需要连续的物理地址),对于解码不过就是反向数据操作而已。

Jason9

1个粉丝

15

问答

0

专栏

0

资料

Jason9 2017-02-17 21:34:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45184&ptid=14203]zhuangweiye 发表于 2017-2-17 08:33[/url]
sample动态分配的内存只是用来copy码流数据的,即在用户态把码流copy好了,然后调用海思API(HI_MPI_VENC ...[/quote]

首先谢谢大哥指教!
我今天看了下源代码,发现确实只有一个视频处理线程(一口气完成了视频输入、预处理、编码工作,然后创建了一个“取流保存”线程SAMPLE_COMM_VENC_GetVencStreamProc()),视频输入通道和预处理通道绑定的,编码通道和预处理通道绑定的。
但是,在这个取流保存线程从码流缓冲区重复进行【1.申请动态内存->2.取一帧码流到该动态内存->3.将这一帧码流写进文件->4.释放帧,释放动态内存】的过程中,有关键的一步是第2步:取一帧码流到刚申请的动态内存。
我想问的是,取一帧码流应该是从码流缓冲区取吧,怎么牵扯到的内核态用户态的 我不理解?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-02-20 10:01:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45243&ptid=14203]Jason9 发表于 2017-2-17 21:34[/url]
首先谢谢大哥指教!
我今天看了下源代码,发现确实只有一个视频处理线程(一口气完成了视频输入、预处理 ...[/quote]

海思编码器是硬件编码器, 在程序上看是用驱动体现出来的( 码流buffer在MMZ上), 这些都是在内核空间, 也就是说硬件编完码的码流都在内核空间的buffer中, sample是无法直接访问的

sample是应用程序是在用户空间的, sample里面的HI_MPI_VENC_GetStream()其实就是和驱动的接口,用于把内核空间的码流copy到用户空间

Jason9

1个粉丝

15

问答

0

专栏

0

资料

Jason9 2017-02-20 13:56:41
认可0
哦哦,Got it! 谢谢了前辈!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区