kennybluezy

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy  发布于  2016-07-20 11:45:40
采纳率 0%
16个问答
4180

海思芯片定时器精度

 
各位好,我现在想通过select实现定时发送数据到解码器解码。结果发现精度好像不能达到需要的精度,比如对60fps的视频,理论上16ms需要发送一帧数据。所以select中定时器精度设为16000us,但实际测试时我在主循环中放置一个select,然后仅通过gettimeofday获取当前时间,发现每次获取到的时间相差约30ms,说明精度达不到16ms。
然后看了下内核,HZ配置为100,意味着定时器精度约为10ms。改成1000后,倒是能够提高精度。但部分驱动工作不正常,比如USB鼠标工作不正常。并且不确定修改后是否会降低系统效率。
所以这里想确定下如何实现精度为1ms的定时器?或者如何定时发送数据到解码器,以播放30帧或者60帧等间隔差距并不是10ms的视频文件?
我来回答
回答6个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-20 11:49:22
认可0
如果要严格的30fps或60fps

可以利用VDEC的playback模式 + VO设置为30fps或60fps来实现

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-07-20 12:01:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34363&ptid=12022]zhuangweiye 发表于 2016-7-20 11:49[/url]
如果要严格的30fps或60fps

可以利用VDEC的playback模式 + VO设置为30fps或60fps来实现[/quote]

非常感谢您的回复。现在是VO我固定设置为60HZ,比如1080P60,想实现不同速率的视频源的播放。在
[url]http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=11225&highlight=%BD%E2%C2%EB[/url]看到相关信息,好像也是您回复的,说是
“就是按需要的时间给VDEC喂码流, 而不是把N帧码流塞给VDEC,然后通过控制显示帧率来控制
显示60fps还是30fps应该和解码显示的帧率无关”
所以产生了通过select定时发送数据到VDEC的想法,但实现时发现还是快放或慢放的感觉,测试select或其他定时器精度达不到1ms,故分析原因可能是HZ设定为100导致的。
然后您说的VDEC的playback模式倒还没做过,因为我用的是3531,您在那篇帖子里倒说过使用 HI_MPI_VDEC_SetDisplayMode(),但3531好像没有这个API。然后playback模式也没找到相关的API,不知能否再详细说明下。

再次感谢您的回复,我发布的几个帖子都得到了您的指点。再次感谢!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-20 12:34:51
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34365&ptid=12022]kennybluezy 发表于 2016-7-20 12:01[/url]
非常感谢您的回复。现在是VO我固定设置为60HZ,比如1080P60,想实现不同速率的视频源的播放。在
http:// ...[/quote]

3531 那是没有这个接口

关于时间的问题,视频回放每帧不需要那么精确, 10ms足够了

一个小技巧: 只要不使用两帧间隔的时间, 而使用每帧和起始帧的时间间隔来处理就可以保证回放的平均时间(或者帧率)是正确的

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-07-21 09:38:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34367&ptid=12022]zhuangweiye 发表于 2016-7-20 12:34[/url]
3531 那是没有这个接口

关于时间的问题,视频回放每帧不需要那么精确, 10ms足够了
[/quote]

再次感谢。您提到的“关于时间的问题,视频回放每帧不需要那么精确, 10ms足够了”能不能这么理解:比如我要播放60帧的视频文件,定时器理论上是定时16ms,但如果定时成20ms,对视频回放影响不大的。是这个意思吧?
然后“ 只要不使用两帧间隔的时间, 而使用每帧和起始帧的时间间隔来处理就可以保证回放的平均时间(或者帧率)是正确的”这种怎么实现呢? 比如第一帧是0,第二帧是16ms,第3帧是33ms。。。 这是在送入VDEC时设置PTS的时候设置吧?其他地方可以再设置?
再次感谢

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-21 10:27:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34462&ptid=12022]kennybluezy 发表于 2016-7-21 09:38[/url]
再次感谢。您提到的“关于时间的问题,视频回放每帧不需要那么精确, 10ms足够了”能不能这么理解:比如我 ...[/quote]

我的意思是送码流的时间点不用那么精确
比如30fps, 精确的话要求 0ms送一帧, 33ms送一帧, 66ms送一帧, 100ms 送一帧。。。
但是如果,0ms送一帧, 30ms送一帧, 60ms送一帧, 100ms送一帧。。。是OK的,人眼根本看不出有什么问题,更差点0ms送一帧, 20ms送一帧, 70ms送一帧, 100ms送一帧。。。也是OK的

这里是送VDEC的时间,图像要经过解码,vpss和VO才能显示出来,要想精确控制只能控制VO那里

另外:海思解码器是不会处理PTS,PTS会直接传到后面, 最后传给给VO使用

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-07-21 11:32:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34476&ptid=12022]zhuangweiye 发表于 2016-7-21 10:27[/url]
我的意思是送码流的时间点不用那么精确
比如30fps, 精确的话要求 0ms送一帧, 33ms送一帧, 66ms送一帧 ...[/quote]

OK。明白了,非常感谢您的热心帮助和耐心指导!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区