2011年9月10日 星期六

YUV

YUV是編譯true-color顏色空間(color space)的種類,Y'UV, YUV, YCbCrYPbPr等專有名詞都可以稱為YUV,彼此有重疊。「Y」表示明亮度(Luminance、Luma),「U」和「V」則是色度濃度(Chrominance、 Chroma),Y'UV, YUV, YCbCr, YPbPr 常常有些混用的情況,其中 YUV 和 Y'UV 通常用來描述類比訊號,而相反的 YCbCr 與 YPbPr 則是用來描述數位的影像訊號,例如在一些壓縮格式內 MPEG、JPEG 中,但在現今,YUV 通常已經在電腦系統上廣泛使用。YUV Formats分成兩個格式:
  • 緊縮格式(packed formats):將Y、U、V值儲存成Macro Pixels陣列,和RGB的存放方式類似。
  • 平面格式(planar formats):將Y、U、V的三個份量分別存放在不同的矩陣中。
緊縮格式(packed format)中的YUV是混合在一起的,對於YUV4:4:4格式而言,用緊縮格式很合適的,因此就有了UYVY、YUYV等。平面格式(planar formats)是指每Y份量,U份量和V份量都是以獨立的平面組織的,也就是說所有的U份量必須在Y份量後面,而V份量在所有的U份量後面,此一格式適 用於採樣(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。




Ref
維基百科 - 
http://webcache.googleusercontent.com/search?q=cache:HZAhPc2OK0MJ:zh.wikipedia.org/zh-hant/YUV+yuy2&cd=1&hl=zh-TW&ct=clnk&client=firefox-a

2011年9月3日 星期六

[C&C++ NOTE] Dynamic-Link Libraries

Regular DLL with MFC statically linked

它的意思簡單的說建立一個DLL檔, 而它會使用到MFC且是使用 statically linked 的方式,
它的使用是不需要環境(OS)中有 MFC[優點],
因為此DLL所使用到的MFC程式碼都被含入到DLL中, 使DLL的大小較大[缺點]

最大的好處是可以被任何win32 的程式使用. 不管程式是否使用MFC.


Regular DLL using  shared MFC DLL

跟上面那項相反, 它不會加入MFC到DLL檔當中,
但這種DLL檔也是可以被任何 win32 程式使用, 不管程式是否使用 MFC,
但是在環境中必須有MFC存在.




MFC Extension DLL(using  shared MFC DLL)

在此DLL檔當中需要使用到MFC的類別做為基礎類別時,
就需建立此種DLL檔, 但MFC必須是要在DLL使用的環境中可以取得.

除了在DLL檔會衍生MFC類別的需要選擇此選項以外
還有若在此DLL檔會從呼叫它的function 中取到MFC的物件指標
那也是必項將DLL檔建立為MFC Extension DLL

在MFC 延伸DLL內存取MFC的類別會動態的連結MFC的共用版本DLL,
所以當你使用MDC延伸DLL時, MFC的共用版本必須存在.

由於MFC的共用版本的基本特性, 靜態連結到MFC的程式不能使用MFC Extension DLL

2011年8月21日 星期日

[C&C++ NOTE] 類別

處理物件時要使用直接成員存取運算子 (.),處理指向物件的指標則要使用間接成員存取運算子(->). 而 this  是一個指標, 因此使用間接成員存取運算子(->)。

當處理結構時,運算子(->) 的運作就像指向類別物件的指標。此時使用 this 指標表示 this 指標的確存在,而且的確在運作,但其實此範例是不必使用 this 的。若將 compare()函式的 return 敘述改寫為
return this->Volume() > xBox.Volume() // 之前
return Volume() > xBox.Volume()
參考任何未經裝飾的成員名稱時,將自動假設有指向此物件的 this 指標。


 
  

2011年8月20日 星期六

花蓮行


在大前天的晚上我看到臉書上的留言就實在沒辦法不出來面對, 以前研究所的同學一直說我不要嘴炮說要來花蓮, 結果一直不來. 當然我看到這種留言一定要給予回應, 但一回應就沒辦法再講理由了, 所以馬上決定隔天直接殺到花蓮, 隨便整理了一些行李就在晚上2200點多衝去買票, 當然早上10點的火車中午就到花蓮囉~

        一到花蓮前來迎接我的是杜老爺, 實在太棒了 馬上就和他去充滿回憶的香人去吃中餐, 我直接就點了煎餃和牛丼飯來大快朵怡, 我們在吃完後就去阿杜的宿舍放一下行李然後開始聊這一年實驗室發生的八卦丫, 真的太多八卦了 也實在讓我大吃一驚的是女王跟花花的事情, 在花花這一年當中與女王之間的曖昧實在太多了 而且有非常多的證劇都可以看得出來兩人跟本就是已經在一起了嘛

        這次阿杜真的是太給力了 從頭到尾就是一直招待我 找了一些好吃的店跟我來分享 第一天的晚上阿杜先找實驗室的學弟妹們跟智和我去吃北觀, 當然在過程當中邊吃邊聊的實在是很開心 好像又回到我還在花蓮唸書的時間, 第二天我們又去吃了一家阿杜推廌的合菜 叫做~~~忘了耶 哈哈 說真的這家餐廳也是很有花蓮的風格 在裡面也是非常多人 不訂位的話應該是沒有位子的 我們在這裡吃的也是很盡興 只能說真的很不錯 菜色 味道 服務都算是一流的 只是對我這個味覺有問題的人說味道真的有點不夠力 但這樣看來連我都覺的特別好吃的話是不是應該更要相信我呢, 反正這三天多虧有了阿杜跟小光 讓我過了一個很好的花蓮行.

2011年8月15日 星期一

yuan 上班的第一天~

今天是到職日, 感覺主管和同事都還滿好相處的,

沒有太多事情, 只是在過程中有一些問題都不太知道怎麼解決,

只好請教同事 接下來一定要再認真一些 否則很多問題都沒辦法解決了

接下來有空一定要開始把 VC++和 MFC 看熟丫 否則一定會出問題的

再充實自己丫~~






2011年8月10日 星期三

一個 Win32 程式








Windows 95  程式設計指南(Windows 95  A Developer’s Guide

當系統執行這個程式時,會為它產生㆒個新的行程(process),這個行程不多不少㆞擁有 4GB 虛擬位址空間。

之後,行程位址空間㆗便擁有了這個行程的執行檔動態聯結函式庫所要用到的程式碼和資料。系統會為這個行程產生㆒個主執行緒(primary  thread)。

當㆒個新的行程誕生,系統同時也會為它產生㆒個新執行緒(稱為行程的主執行緒)。系統首先會初始化這個執行緒,主要目的是告知程式碼在行程位址空間㆗開始執行的位址。通常,主執行緒會被告知以  C-Runtime startup code 做為開始。
C-Runtime  startup  code  承擔著 C-Runtime 系統元件初始化的工作,使你在程式㆗使用的任何函式(像是 malloc signal)得以正確運作,。C-Runtime startup code  被初始化後,程式便可開始執行。程式進入點是 WinMain  函式,型式如㆘:

int WINAPI WinMain (HINSTANCE hinstExe, HINSTANCE hinstExePrev,
                        LPSTR lpszCmdLine, int nCmdshow)


C-Runtime startup code  會呼叫你的 WinMain 函式,並傳入㆖述㆕個參數。從我們(程式員)的觀點來看,這就是程式開始執行的㆞方。如果你的  WinMain  函式如㆘:
int WINAPI WinMain (HINSTANCE hinstExe, HINSTANCE hinstExePrev,
                        LPSTR lpszCmdLine, int nCmdshow) {
   return(0);
}
此函式沒有做任何動作,也沒有產生任何視窗,㆒開始執行就結束了。當 WinMain 函式結束,行程的主執行緒便會返回到 C-Runtime startup code,開始做善後清理的工作(也就是釋放㆒些資料及記憶體),接著 C-Runtime  startup  code  會呼叫 Win32 ExitProcess函式,終止主執行緒。於是行程結束,而此行程的 4GB 位址空間內的程式碼和資料將完全被破壞。



㆒個行程就是㆒個執行個體(instance)。舉個例,你可以寫㆒個程式,檔名叫做 MyApp.EXE。假如你執行它七次,系統會為它建立七個行程,每㆒個行程有自己獨立的 4GB 虛擬位址空間,其程式碼、資料、以及它所用到的動態聯結函式庫(DLLs),都將被載入到每㆒行程的虛擬位址空間㆗


2011年8月9日 星期二

father's day


Today is happy father’s day; anyone says he want to eat beef roll in Costco warehouses. I hope today will be just the beginning.