彼岸战士

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士  发布于  2013-08-29 16:18:57
采纳率 0%
34个问答
7810

海思3531解码器里面有做延时吗?

 
我把live接受的数据直接放入了解码器解码,一开始延时比较小,但是过了一个小时,延时可能会有4s钟。我是直接来了数据就送给解码器的,这样每来一帧都会覆盖掉前一帧的数据,是不是海思芯片在解码的地方做了缓存,把数据保存下来了,否则不可能有延时,但视频还是连续的吧?请教各位大神。
我来回答
回答7个
时间排序
认可量排序

david

41个粉丝

368

问答

253

专栏

229

资料

david 2013-09-02 10:14:30
认可0
里面有缓存的,如果当前送入的数据不满一帧 会缓存起来,等新的数据来了,再判断是不是到一帧了。

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士 2013-09-02 10:31:13
认可0
问题一:也就是说缓存的大小只有一帧那么大?
问题二:我现在是这样做的,写了两个线程,一个是live里面的用来接受ipc的视频流,然后写入一个链表,接到一个VDEC_STREAM_S就存入链表,接受的快慢应该和ipc里设置的帧率有关吧???
问题三:另外一个线程就是从链表里读数据,然后送入解码器HI_MPI_VDEC_SendStream,把已经读取的这个节点的VDEC_STREAM_S删除,但是在这个线程里的送入解码器的时间怎么和另一个线程同步呢?设置一个标志位吗?两个线程通过同一个开关来同步吗?
问题四:这个思路是不是有问题呀,我觉得不太严谨?

david

41个粉丝

368

问答

253

专栏

229

资料

david 2013-09-02 16:41:50
认可0
问题一,关于到底多大缓存 这个我也不知道 因为海思的这块提供的都是库,不过肯定是有缓存的。也没有去深究过。可以肯定的是不止一帧。
问题二,链表的效率高么?链表本身的存储结构有可能就不是连续的。
问题三 和四:

typedef struct
{
   char *InPtr;  //指向sTreamBuffer内存的某个地址
   char *OutPtr; //指向sTreamBuffer
   char *sTreamBuffer; //分配地址
   int DataLen;  //sTreamBuffer已经保存接收了多少数据
}StreamFiFo;

第一步init这个Fifo.

第二步 WriteFifo  判断 写判断inptr是不是快到末尾。如果没有往fifo里面填,快到了,填入能填的,然后把inptr移动到fifo的开始。同事更新Datalen这个是你目前FIFO里面一共有的数据。

   ReadFiFo  判断OutPtr 同wirteFifo思路。

david

41个粉丝

368

问答

253

专栏

229

资料

david 2013-09-02 16:44:24
认可0
当然这个FIFO大小根据的需要调整。

hilinux

0个粉丝

17

问答

0

专栏

0

资料

hilinux 2013-09-21 16:21:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=4174&ptid=2169]彼岸战士 发表于 2013-9-2 10:31[/url]
问题一:也就是说缓存的大小只有一帧那么大?
问题二:我现在是这样做的,写了两个线程,一个是live里面的 ...[/quote]

问题一:你使用的是帧式解码还是流式解码,帧式解码没有缓存,但是要保证改帧是完整的一帧,否则会出错,流失解码有几帧的数据缓存,因为流式解码需要有参考帧来定位帧信息。
问题二:和帧率有关系
问题三:既然是多线程就需要有线程保护机制了,加个线程锁,同时写链表时也需要有个控制,总不能没有解码时,链表无限制增大吧?另外解码的线程也需要判断时候有数据可以用。

baily

0个粉丝

1

问答

0

专栏

0

资料

baily 2016-01-27 17:11:18
认可0
我试过把发送端ipc停止发送几秒钟再开始发送,解码端就会出现延时相应的秒数,这是不是跟时间戳有关系哪?

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan 2017-08-01 19:28:13
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=25003&ptid=2169]baily 发表于 2016-1-27 17:11[/url]
我试过把发送端ipc停止发送几秒钟再开始发送,解码端就会出现延时相应的秒数,这是不是跟时间戳有关系哪?[/quote]

相同的问题,当把发送端停止几秒后再发送,解码端就会有很大延时。解码器的配置是按帧发送。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区