?? jpg2kmqestate.h
字號(hào):
#pragma once
class CJPG2KMQETransition;
class CJPG2KMQEState;
/*
這個(gè)類為單個(gè)的編碼上下文管理概率估計(jì)狀態(tài)的狀態(tài)。
當(dāng)然,表現(xiàn)是冗余的,因?yàn)樗幸蟮木褪荢igma的值,其在0-46范圍內(nèi),
以及MPS的值,s(0或1)。
然而,這種擴(kuò)展的表達(dá)方式避免了MP編碼器的不必要的反引用步驟,因此
能夠顯著的增加輸出。
m_pTransition指針保存的是CJPG2KMQEncoder的transition_table的入口地址。
這個(gè)表有92項(xiàng),其通過idx=2*sigma+s來索引。
如果在編碼一個(gè)MPS的時(shí)候發(fā)生重定標(biāo),根據(jù)state=state.transition->mps來
更新;如果在編碼一個(gè)LPS的時(shí)候發(fā)生重定標(biāo),根據(jù)state=state.transition->lps
來更新狀態(tài)。轉(zhuǎn)換標(biāo)是精心設(shè)計(jì)來保證所有的信息能通過這個(gè)簡單的操作準(zhǔn)確地得到
對(duì)應(yīng)。
而將MPS標(biāo)示在mps_p_bar最顯著位(例如符號(hào)位)是允許編碼器按照最普通的符號(hào)路徑
實(shí)現(xiàn);僅僅需要一個(gè)比較操作和非常少的其他的操作就可以達(dá)到。
*/
#define MQE_SPACER 3
#define MQE_CARRY_POS (16+MQE_SPACER+8)
#define MQE_CARRY_BIT ((long)(1<<MQE_CARRY_POS))
#define MQE_PARTIAL_POS (16+MQE_SPACER)
#define MQE_PARTIAL_CLEAR (~(((long)(-1))<<MQE_PARTIAL_POS))
#define MQE_MSBS_POS (MQE_PARTIAL_POS+1)
#define MQE_MSBS_CLEAR (~(((long)(-1))<<MQE_MSBS_POS))
#define MQE_A_MIN ((long)(1<<15))
class CJPG2KMQEState
{
public:
CJPG2KMQEState();
void InitEncoder(int Sigma, long s);
void InitDecoder(int Sigma, long s);
//Inline implementation appears later
/* `Sigma' is in the range 0 to 46 and `s' is the MPS identity. */
public: // Data
long m_p_bar_mps; // Holds `p_bar' * 2^8 + `s' (`s' is the MPS: 0 or 1)
CJPG2KMQETransition *m_pTransition;
};
class CJPG2KMQETransition
{
public:
CJPG2KMQEState m_mps;
CJPG2KMQEState m_lps;
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -