📄 dst_arith_coder_common.c
字号:
/*****************************************************************************/
/* Copyright 1998, Hewlett-Packard Company */
/* All rights reserved */
/* File: "dst_arith_coder_common.c" */
/* Description: Common initialization code for arithmetic coding environment */
/* Author: David Taubman */
/* Affiliation: Hewlett-Packard and */
/* The University of New South Wales, Australia */
/* Version: VM5.1 */
/* Last Revised: 15 August, 1999 */
/*****************************************************************************/
/*****************************************************************************/
/* Modified by David Taubman to allow more efficient implementation of the */
/* MQ coder. Copyright 1999 by Hewlett-Packard Company with all rights */
/* reserved for the modified parts. */
/*****************************************************************************/
#include <assert.h>
#include <ifc.h>
#include "dst_arith_coder_common.h"
#include "mq46w.h"
dst_context_state dst_arith_state_to_delta[2*47];
dst_context_state dst_arith_trans_mps[2*47];
dst_context_state dst_arith_trans_lps[2*47];
/*****************************************************************************/
/* STATIC initialize_state_to_delta */
/*****************************************************************************/
static void
initialize_state_to_delta(void)
{
int n;
for (n=0; n < 47; n++)
{
dst_arith_state_to_delta[2*n] =
(dst_context_state) lszE[n];
dst_arith_state_to_delta[2*n+1] =
((dst_context_state) lszE[n]) | (1<<DST_ARITH_MPS_POS);
}
}
/*****************************************************************************/
/* STATIC initialize_trans_mps */
/*****************************************************************************/
static void
initialize_trans_mps(void)
{
int n;
for (n=0; n < 47; n++)
{
dst_arith_trans_mps[2*n] =
(dst_context_state) 2*nmps[n];
dst_arith_trans_mps[2*n+1] =
(dst_context_state) (2*nmps[n]+1);
}
}
/*****************************************************************************/
/* STATIC initialize_trans_lps */
/*****************************************************************************/
static void
initialize_trans_lps(void)
{
int n;
for (n=0; n < 47; n++)
if (swtch[n])
{
dst_arith_trans_lps[2*n] =
(dst_context_state)(2*nlps[n]+1);
dst_arith_trans_lps[2*n+1] =
(dst_context_state)(2*nlps[n]+0);
}
else
{
dst_arith_trans_lps[2*n] =
(dst_context_state)(2*nlps[n]+0);
dst_arith_trans_lps[2*n+1] =
(dst_context_state)(2*nlps[n]+1);
}
}
/*****************************************************************************/
/* EXTERN dst_arith_coder__initialize_global_luts */
/*****************************************************************************/
void
dst_arith_coder__initialize_global_luts(void)
{
initialize_state_to_delta();
initialize_trans_mps();
initialize_trans_lps();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -