2009年12月19日 星期六

Recently

Sometime I feel like I need to slow down my pace and my mind and now the time it is. Either for quiet thinking, intending to watch more or thinking about changing something. As you can see, I am a lazy blogger and not a good writer. Passion is the momentum for anything you want to do and it's the best gift.

Here are something about my work recently. Write it down here for arrangement.
It's about 0xdroid project. I have done implementing Camera HAL for usb camera. For this, I need to have some concept about V4L2 in kernel. It's related to V4L2 Video In. Though camera is more complicated cause it can be greatly performance related when it comes to embedded device. For most product design, the camera sensor module is connected with the camera interface of the SOC. Thus in this manner, most cases there will be closed library provided by the SOC vendor for doing some effect control and performance related tasks.

When doing video recording with the camera, colorspace conversion for encoding and for preview on the screen to make the acceptable frame rate is really critical, especially when the resolution is high. Better situation will be more task can be handled by hardware. For taking picture, it would be better if the hardware can do scaling and jpeg encoding, etc. For previewing and video recording, it also would be cool if we don't need to do heavy colorspace conversion in host software side by hardware conversion(YUYV to YUV420(sp) or RGB) and Overlay support.

Overlay is cooperated with V4L2 video out part. Overlay verifying and could be used by Camera HAL or multimedia video playback is important.

More ahead. Though I need to let myself know what's the value and getting prepared.

Off topic here in this post, most importantly, Glad and excited that we have a third release, beagle-donut-0x3.

2009年9月3日 星期四

Using Overlay on beagleboard

Recently I am trying to make 0xdroid use YUV Overlay in OMAP3 on beagleboard to play video. The purpose is utilizing the overlay in DSS system to accelerate by getting rid of the effort of the composition of different layers on software side and colorspace conversion to RGB.

For achieving this, we should get a libopencorehw module for opencore in Android. The implementation of libopencorehw can use the video-out driver, a V4l2 provider to interface DSS, like in TI's omapzoom tree. Unfortunately this way stuck me for a while, either there has problem in video-out driver or in TI's liboverlay.

After figuring out for a while, we met up another way for this, making libopencorehw use DSS ioctl directly. So we rewrite libopencorehw as simple as it looks and here is the new libopencorehw in 0xdroid. This way is more lightweight and easier to me. Welcome to try.

2009年9月1日 星期二

立燈入手

昨天去Ikea敗了一個立燈,就來寫一篇入手心得文做紀錄吧!
這款立燈其實是阿六介紹的,之前就有想買立燈,聽到六哥的介紹後,隔天就衝去逛Ikea 了!
買回來之後,帶回我在新店的住處,開始組裝!組裝是很輕而易舉的。
當我組裝完最後上面的燈泡後,打開開關,心裡一陣激昂。真相如下




我只先開了 25w 省電燈泡上面那一顆, 當場整個不一樣,夠power,而且柔合。
接著再加開小顆40w那顆,整個房間並沒有再亮很多的感覺,但是如果對著小顆那顆看的話,會有熱的感覺,看書覺得沒問題。這兩顆燈泡的搭配,整個光的顏色感覺非常好。整支燈管白色系,也具有現代感。配上牆壁的白色還不賴。燈泡的選擇似乎是影響使用感覺的關鍵,燈罩的顏色和材質也許也有關係。整體感覺,讚的啦!

2009年8月3日 星期一

11年載

高中畢業後,轉眼間,已十一年。
繼驢仔的這篇文章後....
max2lilit的召集下,回到高中參與大合照活動,感覺真是又回到小孩子啊!
小時候個性含蓄,年幼無知的我,似乎沒有改變太多...
也許就是從一個生長在考試壓力下的小子,改成現在在工作上尋求快樂的小子!
這次回到那好久未見的中廊拍照,又勾起一些回憶與寞生,我就是從這裡出來的啊。
與同學回到那,心中就是快樂!
這次特別的是有卜老師的加入,更帶入一些高中的回憶,感覺有來拍畢業照的感覺!


別具意義的同學會。嗯,繼續充實生命吧!
期待下一個10年? 特此紀念!

2009年6月10日 星期三

藍芽Speaker,請不要斷續

前一陣子,因為demo需要,和 Jserv去光華商場買了一件藍芽Speaker回來,也開始玩了Bluetooth的a2dp。但運氣不好的是,沒有把bluetooth device 整合好,bluetooth init和開啟時沒有把baud rate設對,以致於經由bluetooth輸出到Speaker時,聲音是斷斷續續,固定間隔的出來。這的確是讓我卡了一陣,雖然解法似乎很簡單。時間差了一點,就可demo出經由a2dp輸出到藍芽Speaker。這讓我感受到資訊整理的重要。

android1.5,已支援a2dp, 經由android的mediaserver 使用 libaudioflinger,再呼叫 liba2dp的function,把解好的聲音檔 (pcm格式) 丟給bluez,做sbc encode,丟到socket,而後送到bluetooth device上。 liba2dp.so為android在bluez裡建立的plugin,這條路是android所提供的。

另一條路,則是build 出bluez 原本給 alsa-lib使用的alsa plugins, libasound_module_ctl_bluetooth.so and libasound_module_pcm_bluetooth.so,
並將其放至/system/usr/lib/alsa-lib/ , here is a quick patch for this.

Some test steps and notes are as below (on Android 1.5, 00:17:53:09:2E:E0 is the device address):
vi /system/etc/asound.conf ,
pcm.bluetooth {
type bluetooth
device 00:17:53:09:2E:E0
profile "auto"
}

test steps:
1. hcitool scan
2. passkey-agent --default --path /org/bluez/hci0 0000 00:17:53:09:2E:E0 &
3. dbus-send --system --dest=org.bluez --type=method_call --print-reply /org/bluez/hci0 org.bluez.Adapter.
CreateBonding string:00:17:53:09:2E:E0
4. dbus-send --system --dest=org.bluez --type=method_call --print-reply /org/bluez/audio org.bluez.audio.Manager.CreateDevice string:00:17:53:09:2E:E0
5. alsa_aplay -Dplug:bluetooth /horse.wav

除了a2dp, 與Android UI的整合也花了一些功夫,overview的整理一下,SystemSever起來時,會啟動BluetoothDeviceService, BluetoothA2dpService這兩個service。bluetooth 的上層java部份(framework.jar),會透過一層JNI 呼叫 (libandroid_runtime.so),使用dbus與hcid溝通(之後bluez 4.x版為bluetoothd), 以及呼叫libbluedroid來控制硬體。

2009年4月24日 星期五

Use android emulator to play music

試著用android emulator 來播放音樂,

第一步,讓emualtor掛上一個sdcard image,
先使用android sdk裡的 mksdcard 來產生一個image。

$mksdcard 512M sdcard_for_android.so
$emulator -sdcard ./sdcard_for_android.so

接著就是把media file丟進sdcard space, for example
$adb push beat.ogg /sdcard

此時執行Music, 似乎還看不到丟進去的file...?
adb shell 進去,把 system_server 砍掉,讓它重跑。再進去Music,應可看到丟進去的音樂檔。
$ kill 'PID of system_server'

播放,似乎沒有聲音,重新run emulator,這時加入oss audio backend。
$emulator -sdcard ./sdcard_for_android.so -scale 0.5 -audio oss

執行Music,播放.... enjoy the music for a while....


android果然跟平常使用的環境不太一樣啊~~

2009年3月16日 星期一

Take it easy

看似突然,其實不然
按兵不動,一觸即發

早有所悟,擺脫束縛
一切已靜,重回自由

Even I left, I am still a member of the family. Be strong.
I got many friends and partners here.

解脫的感覺很好
咦? 外面的陽光 讚的啦!

2009年3月11日 星期三

Thinking mode

Turning point again. I should react to something as soon as possible and get prepared.

在與team members 聊完後,我需要思考與整理,幸運地還有機會搭上末班捷運,卻因莫名的疏忽,搭錯線,而我已沒有車可以回頭,於是我從古亭站,搭上黃線到景安站,再從景安站走回公司。是的,也許我真的是在思考,這種疏忽並不常發生。從景安站走向新店,路上並沒有什麼吸引到我的注意,除了情趣用品店有幾家,以及薑母鴨以外(稍微地轉移我的注意力)。情趣用品對我來說並不常看到。

也許這就好像,我有個目標,假設是A地(公司),我有路徑B可以到達,也有路徑C可以到達,還有其他路徑我沒辦法走,或是我不知道,但我就是因緣際會地走了路徑C。我並不是因為任何原因而選擇了C路徑,或是只是因為我喜歡C罩杯,(這跟本文一點一點關係也沒有,也許只是稍微回到了高中時期 的寫作風格)。 shit!

走那條路比較好,我無從得知,也許這條路上突然地會讓我遇到正妹,但我想重要的是清楚自己的目標,以及知道我正用我認為對的方法往目標前進。話說回來,其實目標也許有時難以用某樣東西比喻。但目標確認才是能夠使人更能在路上往前進的動力,或是說選擇或轉換了某條路之後,應該要有所期待。

很幸運地,最後回到了公司,比我想像中的還快抵達,還好我能夠走過秀朗大橋,它有小路能讓人和腳踏車通過,不然也許我想我可能會跑在機車道上,那會像是威爾史密思在演全民公敵。


這是個機會,高興的部份。也許我對它還很陌生 :)

2009年2月11日 星期三

一株花草

這株花草(我還不知道叫什麼),今天把它從公司拿回家種到我家的盆栽裡。



原本它是擺在公司的,但我跟溫蒂(Wendy)要了過來!
難得感受一下了種植花草的樂趣! 陽台似乎可成為我心中的巴里島,哈!
的確讓我從工作繁瑣中跳脫出來

期望它可繼續茁壯長大

2009年1月30日 星期五

Leaving Neihu

Ya, We are leaving Neihu. It seems the companies I ever stayed change the location often to me.
Neihu is a good place. Don't know what will be in the new place, Sindian.
So after Chinese New Year, I am going to the new office.

Since now on, I can't call my friends to have a drink or have a lunch at any time.
Neihu, three years there, Bye!

2009年1月21日 星期三

資訊爆炸,該如何面對

資訊時代堀起,資訊量,資訊來源愈來愈多。

要是我想的話,光是看mail,我可以花上大半天數小時的時間。加上看blog,social,每天真的浪費許多時間並且分心,而導致該做的事情進度不如預期。

試想,我該如何應付,改善我的資訊吸收方式。

- 我必須清楚我的角色,我的重心,我的目標。 選擇感興趣的目標,在某處專精。

- 選擇並學習善用工具,幫助資訊過濾和呈現方式。

- 能夠跳脫。先過濾後再來選擇性吸收。

- 加快對資訊的反應。

- 習慣英文

這些可能都需要藉由加強自己的專業來更有效的達成。

另一個方式,關掉電腦!遠離一段時間(zoom out),think and talk with people!

2009年1月17日 星期六

態度

好久沒這樣輸球了,5比0領先被逆轉輸球!
我可以接受5比5輸球,或乾脆被克蛋輸球,但我不能接受5比0領先被對方逆轉。
也是因為我的隊友是我的好朋友,我才會這樣不爽!

也許我也可以接受在這樣的情況下,履次進攻不進,我自己也沒把最後一分投進。
但我不能接受在5比零的情況下,"防守"開始鬆懈!
這樣子的輸球,讓我頓時所有疲累感盡失。

好吧,這樣的情況下,防守開始放鬆,這樣的輸球是沒有藉口的!
對我來說,打球雖不是職業(我知道自己幾兩重),但還是要拿出態度來打!
我知道這是可以做到的事情!心裡認為可以做到的事情卻沒做到!
總之,我要記取教訓,吸取經驗,我有不好和還沒拿出來的地方,我不想再發生這樣的事情。
Game is game, a play is a play!


與熊哥、老鷹於水源公園的一晚