flush_arithmetic_encoder.m

来自「压缩包中的内容用matlab语言对算术码进行描述」· M 代码 · 共 30 行

M
30
字号
function [output_bits] = flush_arithmetic_encoder
global Low High UnderFlow_Bits
global K
MSB2 = bitget(Low, K-1);
OutputBit( MSB2 );
output_bits = 1;
UnderFlow_Bits = UnderFlow_Bits + 1;
while ( UnderFlow_Bits > 0 )
    OutputBit( ~MSB2 );
    output_bits = output_bits + 1;
    UnderFlow_Bits = UnderFlow_Bits - 1;
end
for i=1:16
    OutputBit( 0 );
end
return

function OutputBit( bit )
global out_bit_file 
out_bit_file.rack = bitset(out_bit_file.rack, out_bit_file.mask, bit);
out_bit_file.mask = out_bit_file.mask - 1;
if ( out_bit_file.mask == 0 ) 
    if ( fwrite( out_bit_file.file, out_bit_file.rack, 'uint8' ) ~= 1 )
        fprintf( 'Fatal error in OutputBit!\n' );
    else
        out_bit_file.rack = uint8(0);
        out_bit_file.mask = 8;
    end
end
return

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?