📄 jpege_vlc_kc.sc
字号:
// unpack to 32 bits and do zigzag. zigzag order is // 0, 1, 8, 16, 9, 2, 3, 10, // 17, 24, 32, 25, 18, 11, 4, 5, // 12, 19, 26, 33, 40, 48, 41, 34, // 27, 20, 13, 6, 7, 14, 21, 28, // 35, 42, 49, 56, 57, 50, 43, 36, // 29, 22, 15, 23, 30, 37, 44, 51, // 58, 59, 52, 45, 38, 31, 39, 46, // 53, 60, 61, 54, 47, 55, 62, 63 // and then calculate the runs & levels for the block & store them in stream "run_level" tmp0 = 0; num_non_zero = 0; run = 0; pack = 0x01000504; zz_0 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c0c8, tmp0); zz_2 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c0c8, tmp0); // ---- Handle dc coefficient ---- dc_coeff_encode(dc_huffman_table, bitstream, write_index, prev_block_data_strm, zz_0, half_word_hi_lo, cur_word, cur_word_position); zz_1 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c1c9, tmp0); zz_4 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c1c9, tmp0); calc_run_level(run_level, zz_1, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_2, run, run, num_non_zero, num_non_zero, pack); zz_3 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c16c24, tmp0); zz_9 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c16c24, tmp0); calc_run_level(run_level, zz_3, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_4, run, run, num_non_zero, num_non_zero, pack); zz_5 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c2c10, tmp0); zz_7 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c2c10, tmp0); calc_run_level(run_level, zz_5, run, run, num_non_zero, num_non_zero, pack); zz_6 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c3c11, tmp0); zz_13 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c3c11, tmp0); calc_run_level(run_level, zz_6, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_7, run, run, num_non_zero, num_non_zero, pack); zz_8 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c17c25, tmp0); zz_11 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c17c25, tmp0); calc_run_level(run_level, zz_8, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_9, run, run, num_non_zero, num_non_zero, pack); zz_10 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c32c40, tmp0); zz_20 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c32c40, tmp0); calc_run_level(run_level, zz_10, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_11, run, run, num_non_zero, num_non_zero, pack); zz_12 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c18c26, tmp0); zz_18 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c18c26, tmp0); calc_run_level(run_level, zz_12, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_13, run, run, num_non_zero, num_non_zero, pack); zz_14 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c4c12, tmp0); zz_16 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c4c12, tmp0); calc_run_level(run_level, zz_14, run, run, num_non_zero, num_non_zero, pack); zz_15 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c5c13, tmp0); zz_26 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c5c13, tmp0); calc_run_level(run_level, zz_15, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_16, run, run, num_non_zero, num_non_zero, pack); zz_17 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c19c27, tmp0); zz_24 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c19c27, tmp0); calc_run_level(run_level, zz_17, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_18, run, run, num_non_zero, num_non_zero, pack); zz_19 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c33c41, tmp0); zz_22 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c33c41, tmp0); calc_run_level(run_level, zz_19, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_20, run, run, num_non_zero, num_non_zero, pack); zz_21 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c48c56, tmp0); zz_35 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c48c56, tmp0); calc_run_level(run_level, zz_21, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_22, run, run, num_non_zero, num_non_zero, pack); zz_23 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c34c42, tmp0); zz_33 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c34c42, tmp0); calc_run_level(run_level, zz_23, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_24, run, run, num_non_zero, num_non_zero, pack); zz_25 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c20c28, tmp0); zz_31 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c20c28, tmp0); calc_run_level(run_level, zz_25, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_26, run, run, num_non_zero, num_non_zero, pack); zz_27 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c6c14, tmp0); zz_29 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c6c14, tmp0); calc_run_level(run_level, zz_27, run, run, num_non_zero, num_non_zero, pack); zz_28 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c7c15, tmp0); zz_42 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c7c15, tmp0); calc_run_level(run_level, zz_28, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_29, run, run, num_non_zero, num_non_zero, pack); zz_30 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c21c29, tmp0); zz_40 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c21c29, tmp0); calc_run_level(run_level, zz_30, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_31, run, run, num_non_zero, num_non_zero, pack); zz_32 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c35c43, tmp0); zz_38 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c35c43, tmp0); calc_run_level(run_level, zz_32, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_33, run, run, num_non_zero, num_non_zero, pack); zz_34 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c49c57, tmp0); zz_36 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c49c57, tmp0); calc_run_level(run_level, zz_34, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_35, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_36, run, run, num_non_zero, num_non_zero, pack); zz_37 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c50c58, tmp0); zz_48 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c50c58, tmp0); calc_run_level(run_level, zz_37, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_38, run, run, num_non_zero, num_non_zero, pack); zz_39 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c36c44, tmp0); zz_46 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c36c44, tmp0); calc_run_level(run_level, zz_39, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_40, run, run, num_non_zero, num_non_zero, pack); zz_41 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c22c30, tmp0); zz_44 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c22c30, tmp0); calc_run_level(run_level, zz_41, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_42, run, run, num_non_zero, num_non_zero, pack); zz_43 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c23c31, tmp0); zz_53 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c23c31, tmp0); calc_run_level(run_level, zz_43, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_44, run, run, num_non_zero, num_non_zero, pack); zz_45 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c37c45, tmp0); zz_51 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c37c45, tmp0); calc_run_level(run_level, zz_45, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_46, run, run, num_non_zero, num_non_zero, pack); zz_47 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c51c59, tmp0); zz_49 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c51c59, tmp0); calc_run_level(run_level, zz_47, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_48, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_49, run, run, num_non_zero, num_non_zero, pack); zz_50 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c52c60, tmp0); zz_57 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c52c60, tmp0); calc_run_level(run_level, zz_50, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_51, run, run, num_non_zero, num_non_zero, pack); zz_52 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c38c46, tmp0); zz_55 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c38c46, tmp0); calc_run_level(run_level, zz_52, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_53, run, run, num_non_zero, num_non_zero, pack); zz_54 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c39c47, tmp0); zz_60 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c39c47, tmp0); calc_run_level(run_level, zz_54, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_55, run, run, num_non_zero, num_non_zero, pack); zz_56 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c53c61, tmp0); zz_58 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c53c61, tmp0); calc_run_level(run_level, zz_56, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_57, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_58, run, run, num_non_zero, num_non_zero, pack); zz_59 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c54c62, tmp0); zz_62 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c54c62, tmp0); calc_run_level(run_level, zz_59, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_60, run, run, num_non_zero, num_non_zero, pack); zz_61 = spi_vshuffledi_hi (hi_lo_bytes, (vec int32x1)c55c63, tmp0); zz_63 = spi_vshuffledi_lo (hi_lo_bytes, (vec int32x1)c55c63, tmp0); calc_run_level(run_level, zz_61, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_62, run, run, num_non_zero, num_non_zero, pack); calc_run_level(run_level, zz_63, run, run, num_non_zero, num_non_zero, pack); // huffman encode the runs & levels huffman_encode ( zz_0, zz_63, run_level, num_non_zero, ac_huffman_table, bitstream, prev_block_data_strm, escape_code_length, escape_code_word, eob_code_length, eob_code_word, cur_word, cur_word_position, last_word, last_word_pos ); write_index = (last_word_pos & MASK_16BIT); } // Read the last word position of the previous block & store it in other stream spi_array_read (next_bitstream_offset_strm, store_index, 0); spi_array_write (prev_bitstream_offset_strm, store_index, 0); // Stuff the incomplete last byte with 1's last_word_bits = (last_word_pos >> 16) & 0x7; data = spi_vselect32(last_iter_in_row, (((vec uint32x1) 0xFF) >> last_word_bits), 0); num_bits = spi_vselect32(last_iter_in_row, (((vec uint32x1)0x8 - last_word_bits) & 0x7), 0); // Write the last word to lrf, if it's the last block in row write_bits (bitstream, last_word_pos, last_word_pos, last_word, last_word, data, num_bits, last_iter_in_row); write_index = (last_word_pos & MASK_16BIT); // Fill the incomplete word with FF's to make it word aligned last_word_bits = (last_word_pos >> 16) & 0x1f; last_word = last_word | (((vec uint32x1)0xFFFFFFFF) >> last_word_bits); spi_array_write(bitstream, spi_vshuffleu (0x00010203, last_word, 0), write_index); // Update the bitstream size write_index = spi_vselect32(spi_vand32(last_iter_in_row, spi_vlt32u((vec uint32x1)0, last_word_bits)), (write_index + (vec uint32x1)1), write_index); // Write the reset marker at the end of the row reset_marker = (vec uint32x1) 0xFFFFFFD0 | (spi_laneid() & 0x7); spi_array_write(bitstream, spi_vshuffleu (0x00010203, reset_marker, 0), write_index); // Update bitstream size write_index = spi_vselect32(last_iter_in_row, (write_index + (vec uint32x1)1), write_index); store_index = store_index + (write_index << 2); spi_array_write (next_bitstream_offset_strm, store_index, 0); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -