⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpege_vlc_kc.sc

📁 motion Jpeg 在SPI DSP平台优化好的代码
💻 SC
📖 第 1 页 / 共 3 页
字号:
        // 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 + -