在剛開始看hm的時候,對著7個工程,可能有人會感到困惑,該從**看起呢?當然了,對於已經有一定**量積累的人或者之前研究過h.264**如jm的人來說,從何入手應該不成問題。但我寫這篇出來,一方面是自己做個總結,備忘,另一方面也是希望能夠幫助剛剛入手hm的朋友。好了,不多廢話,還是進入正題吧。
4. tlibcommon 5. tlibdecoder 6. tlibencoder 7. tlibvideoio
最後,簡單介紹下hm**中關於變數、函式的命名規則,熟悉這些規則,有利於對**更好的理解。
(1)類的命名:
(2)變數的命名:
對於類的資料成員來說,一般以'm_'開頭,即'member';對於全域性變數來說,一般以'g_'開頭,即'global'。
對於一般的變數(包含上述兩種變數)來說,有如下命名規則:'p',該變數是指標型別,即'pointer',n個'p'則表明該指標為n級指標;'c',該變數是某個類的物件,即'class';'i',該變數是整型,即'int';'u',該變數是無符號型,即'unsigned';'h',該變數是字元型,這裡不用'c'來代表'char』應該是為了避免跟前面的'class'衝突了;'b',該變數是布林型別,即'bool』;'d',該變數是雙精度浮點數,即'double';'f',該變數是單精度浮點數,即'float';'a',該變數是類組,即'array';'e',該變數是列舉型別,即'enum';等等。值得一提的是,不是每個變數的命名都滿足這些規則,具體情況還是要具體分析的。但是,按照這些規則,80%以上的變數都能一眼看出它的特性來。
(3)函式的命名:
一般來說,對於乙個類的成員函式來說,如果該函式的訪問許可權是'protected',則在其函式名前加上'x';但是,在我看**過程中,有些'protected'的成員函式並沒按照這個規則來命名,所以,這一條規則僅供參考。能夠肯定的是,只要某個函式名字前有個'x',則該函式一定是某個類的protected成員函式。
說了這麼多,舉個具體例項來說明下吧:
在工程tlibencoder的標頭檔案tenccu.h中,定義了乙個類tenccu,有個資料成員m_ppcbestcu,根據前面的命名規則,它首先是個資料成員,是個二級指標,且是指向乙個類的,實際上,它是這麼宣告的,tcomdatacu**,tcomdatacu它就是乙個類,且該變數被宣告為二級指標,據此,符合上述命名規則。
還有乙個資料成員這麼宣告uchar m_uhtotaldepth; 無符號字元型,同樣也是符合命名規則的。
在該類中,有這麼乙個成員函式xcompresscu,以'x'開頭命名,在類中被宣告為'protected',符合命名規則。
還有許多諸如此類的例子,在實際看**的過程中,大家可以一條條去驗證,如果發現我裡面有哪些地方說的不對或者不夠全面的,歡迎批評指正
**(
H 265 之一 HM的使用
從今天開始,會陸續發表hevc學習過程中的一些總結,主要目的是與大家一起交流學習,由於水平有限,懇請大家能夠不吝賜教。由於這是第一次寫部落格,而且學習也是個循序漸進的過程,第一篇文章就簡單介紹下如何使用hevc的官方標準測試模型hm吧。其實如果之前學習過h.264的話,肯定也是用過jm的,hm的使用...
資料結構之二叉排序樹的原理及實現
二叉排序樹 binary sort tree 又叫做二叉查詢樹。性質 若它的左子樹不為空,則左子樹上所有的節點的值均小於根節點的值 若它的右子樹不為空,則右子樹上所有的節點的值均大於根節點的值 它的左 右子樹也分別為二叉排序樹 二叉樹的二叉鍊錶節點結構定義 typedef struct bitnod...
資料結構實驗之二叉樹一 樹的同構
time limit 1000ms memory limit 65536k 有疑問?點這裡 給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就...