Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1522369
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类: LINUX

2007-09-04 17:28:28

北京理工大学 20981 陈罡
不找什么别的理由了,mplayer这个项目停滞了几天。一个是基本的mplayer已经可以播放了,
偶也一下子懈怠不少(偶是懒人,这个已经不止一次提到过了)。至于有的网友询问flac的
格式和aep的格式能否支持,我查了一下代码,如果zmplayer可以支持的话,这个chok应该
就可以支持。最近再考虑把tar.gz格式的压缩包可以直接解压并显示进度条的方法,呵呵,
有点跑题了,现在我把chok做成一个文件管理器的兴趣比一个简单的播放器前端兴趣更大些。
一下子看到有好多a1200上的mplayer前端冒出来,例如qezxplayer, zmplayer等等,我还是
很兴奋的,毕竟大家都在关注这个,呵呵。
 
考虑再三,觉得这个播放器还是要走下去的,只是怎么走还需要商量。毕竟只有偶一个人在
真正做一些开发的工作。
 
下一个版本的chok的new feature如下:
(1)解决背光问题,进入chok候会一直打开背光,方便视频观看,退出chok时会关闭背光。
(2)文件浏览部分,增加对png、jpeg的支持,可以打开图片,全屏观看,还可以缩放。
(3)关于视频参数设置,将改为播放过程中,在屏幕上弹出设置窗口的方式解决,而不再
是双击进入、单击退出的这种单一播放模式。
(4)如果有时间的话,增加对中文小说方面的支持,比如可以支持打开txt全屏浏览什么的。
(5)支持tar.gz或tgz的压缩包直接解压,可以把压缩包中的文件解压到指定目录,或者把
某个目录压缩成tar.gz的压缩包(呵呵,这问题已经基本解决了)。
 
这些只是基本想法,会进一步继续扩充的。呵呵。工作量还有很大。
 
对于部分朋友反映播放一段时间,屏幕变黑的问题,我想是由于背景灯光关闭的原因,现在
已经解决了。感谢“孤独剑客”为我提供的lcdsleep的源代码,完满地解决了这个问题。
大概的方法我给写一下,希望对后来者有用:

a1200背光的处理,简单的来说,有两个方法,各有利弊。
方法一,采用直接的ioctrl直接写入的方法,该方法可以实现打开背景灯(注意是打开)。
具体什么时候关就另当别论了,看用户各自手机里面的设置了。
 
其实就一行代码:
ioctl(fd, FBIOSETBKLIGHT, BKLIGHT_ON);
 
这里的fd是指打开的/dev/fb0设备文件的句柄,其它的就不用偶多说了。
头文件也都是常规的ioctrl的头文件和framebuffer相关的头文件。
这种方法实用,简单,可以直接从底层设备打开a1200的背光,缺点是mobilinux过一段时间
就会自动关掉背光,需要开一个线程,在后台每隔几秒钟就开一下背光,对设备资源是一种
浪费。
 
方法二,采用ezx架构里面关于电源管理的api,直接定义导出函数即可:
// (0~9=never sleep,10=sleep now,when wakeup like 0~9,>10=sleep second.)
extern "C" int PM_setupLcdSleepTime(int s);          //no.0
extern "C" int PM_setupUseroffSupport(int i);        //no.1
extern "C" int PM_setupFlipStatus(int stat);         //no.2
extern "C" int PM_setupIgnoreBpSignal(int boolean);  //no.3
extern "C" int PM_setupBklightBrightness(int b);     //no.4
extern "C" int PM_setupPowerSavingMode(int boolean); //no.5
 
这里都是ezx的电源管理相关的函数,链接的时候只要加入如下链接项即可:
-lezxappsdk -lipp-jp -lezxopenwindow -lipp-miscGen -lezxappbase \
-lqte-mt -lezxjpeg -lezxpm -lpthread
 
这些函数,顾名思义已经很清晰了,对偶们调整背光最有用的是:
extern "C" int PM_setupLcdSleepTime(int s);
这个函数,传入的s=0的时候,代表背光持久打开(这一点不需要怀疑,偶为了测试,
连续开了1个多小时的背光,验证这个函数是不是真的有效。)

传入s=10代表立即关闭背光,当然如果用户有触摸动作还会再打开背光的。
传入其它数值,则会修改系统默认的背光时间,比如s=20,那么手机就会每隔
20秒关闭一次背光(这里指idle 20秒以后,如果在这期间有触摸动作,则会重新计时)。
 
好了,冒个泡泡,继续工作。。。
阅读(3732) | 评论(7) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-29 12:15:55

屏幕常亮代码很好用,就是chok打开mplayer无法播flv而用命令行可以。A lot of video memory takes a while.