Samstag, 19. November 2011

Digital Audio : Rice code v1.2

//Digital Audio : Rice code v1.2 : EE4209/EE5809
//rice_code.c

#define N 128
#define MAX_CODE_SIZE 32
#include
#include


typedef struct rice_code_info
{
short int abs_residual; //
int m; // the m parameter used in this sample;
int sign; // 1 or -1;
int index; // original location in the sample
unsigned char rice_codedata[MAX_CODE_SIZE];
int code_size;

} RICE_CODE_INFO;


RICE_CODE_INFO r_info[N];

int m_param = 32;
int source_data[6] = {25, 34,42, 47,66,76};

void rice_encode(RICE_CODE_INFO r_info[], int sourc_data[], int m)
{
// qcode and rcode

int quotient ; // quotient
int remainder;
int i=0,j, k=0, log2M, v=1, and_1=0;
int p =0; // print out the rice code

log2M = (int)floor(log2(m));

printf("log2M is :%d\n ", log2M);

for (i=0; i<6; i++)
{

r_info[i].abs_residual = source_data[i];
r_info[i].sign=1;

quotient = r_info[i].abs_residual/m; // find quotient

remainder = r_info[i].abs_residual%m; // find remainder

if (r_info[i].sign == -1)
r_info[i].rice_codedata[0]='1'; // negative sign
else
r_info[i].rice_codedata[0]='0'; // positive sign


if (quotient ==0 )
{
printf("quotient is 0\n");

r_info[i].rice_codedata[1]='0';
}

else {
printf(" quotient =%d\n", quotient);

for (j =0; j<=quotient; j++) {
r_info[i].rice_codedata[j+1] = '1'; // quotient in unary code

}

} // else

r_info[i].rice_codedata[quotient+1]='0'; // to delimit the end of qcode

// q+r : r in truncated binary encoding : from q+1 to (q+1 +M )
// only M size is needed. The remaining bits are discarded.

/*
for (k=log2M; k <1 ; k--) {
//shift the remainder
// remainder >> log2M ;


if ( (v & remainder ) == 1)
r_info[i].rice_codedata[quotient+1+k] ='1';

else
r_info[i].rice_codedata[quotient+1+k] ='0';

remainder >>1 ;

} */

r_info[i].code_size = ( 1+quotient +1 ); // the size of the rice code : positive sign

//print out the rice code
for (p=0; p < r_info[i].code_size; p++)
printf("%c", r_info[i].rice_codedata[p]);
printf("\n");

}

}

int main( int argc, char* argv[] )
{
printf("Rice code\n");
rice_encode( r_info, source_data, m_param);

printf(" 25/32 = %d\n", 25/32);
printf(" 66/32 = %d\n", 66/32);

return 0;
}

--

Wan Chin :
陳雲:港共銷毀政府檔案,其蠢其笨,無藥可救。為何往昔的君王容許立憲?為何政府容許三權分立而互相監察?

為何當年的西德政府要努力搶救和粘貼好被東德政府銷毀之中的秘密檔案?目的是澄清責任,避免波及無辜,冤有頭、債有主,做到政權轉型之中的正義( transitional justice )。

項羽攻打秦朝,坑殺降卒二十萬,火燒秦皇阿房宮。法國革命黨處死法國皇帝及皇后,列寧下令將沙皇滿門抄斬,就是因為責任不清楚,要集體來償還。

政府銷毀檔案,將來人民的憤恨,就投射到整個舊政府身上,整體官員會遭受唾罵甚至血腥復仇。西德政府要挽救東德的檔案,就是要保護東德政府的無辜者,大家知道嗎?

故此,看見港共銷毀檔案,並且拒絕訂立《檔案法》,我高興都來不及哩。

審計署再揭 4個部門 未經授權銷毁檔案

[港中殖民政府]陳雲:銷毀檔案 倒台日港官遭血腥復仇

1984 鏗鏘集-城市設計在屯門
http://www.youtube.com/watch?v=kuR9JZZOdmM

[新聞] 港督彭定康參觀九巴沙田車廠 (1992年8月6日)
http://www.youtube.com/watch?v=LPqKharq6KY

黃子華棟篤笑 秋前算帳 收返
http://www.youtube.com/watch?v=4EUgdslDqsA


Keine Kommentare: