在BF561上实现h264编码的几种方案

本文探讨了ADSP-BF561平台上的H.264视频编码器实现方式,包括裸奔、半系统半裸奔、全系统及作为内核线程四种方案,并分析了它们的特点与性能。

快乐虾

http://blog.youkuaiyun.com/lights_joy/

lights@hb165.com

  

本文适用于

ADSP-BF561

优视BF561EVB开发板

uclinux-2008r1.5-rc3 (smp patch)

Visual DSP++ 5.0(update 5)

  

欢迎转载,但请保留作者信息

 欢迎到http://www.bfin-tools.org/bbs/viewthread.php?tid=28&extra=对本文进行讨论。

 

1.1    裸奔

由于VDSP在编译信号处理相关代码时效率较高,而且用户程序可以控制所有的资源,因而采用这种方法的运行效率最高。当然这种方法的缺点也是显而易见的,它的附加功能较难实现,比如网络功能等。

关于此法,网上有一篇流传甚广的文章《基于ADSP-BF561H.264视频编码器的实现》(作者:崔海燕,王卿),颇具参考价值。当然这篇文章并没有讨论cache的问题,这是其不足之处。

ADI有一个评估版在其网站上,这大概是裸奔的极致了。可以同时做4CIF@25fps或者1D1@22fps。当然这是在只开PPI中断的情况下得到的数据。

1.2    半系统,半裸奔

此法应用甚广,其基本思想是用A核跑uclinuxB核裸奔一个h264的编码器。A核的程序使用GNU Toolchain进行开发,B核的程序可以采用vdsp进行开发,由uclinux在运行时动态加载。

采用这种方法,既可以发挥uclinux系统的好处,又可以兼具VDSP的高效。其技术点主要在于双核之间的同步。

1.3    全系统

目前的uclinux已经具备smp的能力,因此可以只跑一个系统管理两个核,直接在此基础上采用GNU toolchain进行开发,但由于很难使用DMAL1L2 SRAM等资源,在先天上就对此算法有所限制。当然由于只需要使用gnu toolchain,其开发难度较低。

1.4    让编码成为内核的一部分

此法开发难度较高,其基本思想是让编码算法做为内核线程来运行,好处是基本可以使用裸奔时用到的所有优化方法,也可以使用所有的系统资源,且可以使用vdsp编译。采用这种方法,可以达到D1 @ 15fps,由此可见uclinux频繁的时钟中断(CONFIG_HZ = 250)对编码算法的影响。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值