1#!/usr/bin/env python 2 3import os 4import sys 5import shutil 6 7download_fail_times = 0 8pvmp3_path = sys.path[0] 9 10download_path = os.path.join(pvmp3_path, "source") 11final_src_path = os.path.join(pvmp3_path, "src") 12 13pvmp3_source = ['pvmp3_normalize.c', 14 'pvmp3_alias_reduction.c', 15 'pvmp3_crc.c', 16 'pvmp3_decode_header.c', 17 'pvmp3_decode_huff_cw.c', 18 'pvmp3_getbits.c', 19 'pvmp3_dequantize_sample.c', 20 'pvmp3_framedecoder.c', 21 'pvmp3_get_main_data_size.c', 22 'pvmp3_get_side_info.c', 23 'pvmp3_get_scale_factors.c', 24 'pvmp3_mpeg2_get_scale_data.c', 25 'pvmp3_mpeg2_get_scale_factors.c', 26 'pvmp3_mpeg2_stereo_proc.c', 27 'pvmp3_huffman_decoding.c', 28 'pvmp3_huffman_parsing.c', 29 'pvmp3_tables.c', 30 'pvmp3_imdct_synth.c', 31 'pvmp3_mdct_6.c', 32 'pvmp3_dct_6.c', 33 'pvmp3_poly_phase_synthesis.c', 34 'pvmp3_equalizer.c', 35 'pvmp3_seek_synch.c', 36 'pvmp3_stereo_proc.c', 37 'pvmp3_reorder.c', 38 'pvmp3_polyphase_filter_window.c', 39 'pvmp3_mdct_18.c', 40 'pvmp3_dct_9.c', 41 'pvmp3_dct_16.c'] 42 43print('download pvmp3 source file') 44if not os.path.exists(final_src_path): 45 while True: 46 if not os.path.exists(download_path): 47 #download_cmd = "git clone https://github.com/aosp-mirror/platform_external_opencore.git -b android-2.2.3_r2.1 " + str(download_path) 48 download_cmd = "git clone https://gitee.com/mirrors_aosp-mirror/platform_external_opencore.git -b android-2.2.3_r2.1 \"" + str(download_path) + "\"" 49 print(download_cmd) 50 os.system(download_cmd) 51 if os.path.exists(download_path): 52 print("Download pvmp3 source success!\n") 53 break 54 else: 55 download_fail_times = download_fail_times + 1 56 57 if download_fail_times >= 3: 58 print("Download pvmp3 fail!\n") 59 break 60 break 61 62 src = os.path.join(pvmp3_path, 'source/codecs_v2/audio/mp3/dec/src') 63 dst = os.path.join(pvmp3_path, "src") 64 print(src) 65 print(dst) 66 shutil.copytree(src, dst) 67 68 os.remove(os.path.join(pvmp3_path, 'src/pvmp3_decoder.cpp')) 69 70 src = os.path.join(pvmp3_path, 'source/codecs_v2/audio/mp3/dec/include') 71 dst = os.path.join(pvmp3_path, 'include') 72 #shutil.rmtree(dst) 73 print(src) 74 print(dst) 75 shutil.copytree(src, dst) 76 77 n = 0 78 filelist = os.listdir(final_src_path) 79 for i in filelist: 80 oldname = os.path.join(final_src_path, filelist[n]) 81 82 suffix = oldname.split('.')[-1] 83 if suffix == 'h' or suffix == 'cpp': 84 code ='' 85 with open(oldname, 'r') as f: 86 code = f.read() 87 code = code.replace('double(', '(double)(') 88 code = code.replace('int32(', '(int32)(') 89 code = code.replace('huffcodetab ht[HUFF_TBL];', 'struct huffcodetab ht[HUFF_TBL];') 90 code = code.replace('huffcodetab *pHuff;', 'struct huffcodetab *pHuff;') 91 code = code.replace('__inline', 'static inline') 92 code = code.replace('inline int16 saturate16', 'static int16 saturate16') 93 code = code.replace('new_slen[4];', 'new_slen[4] = {0,0,0,0};') 94 with open(oldname, 'w') as f: 95 f.write(code) 96 if suffix == 'cpp': 97 newname = oldname[:-4] + '.c' 98 os.rename(oldname, newname) 99 print(oldname,'->', newname) 100 n = n + 1 101 shutil.copyfile('oscl_base.h', 'include/oscl_base.h') 102 shutil.copyfile('oscl_mem.h', 'include/oscl_mem.h') 103 shutil.rmtree(download_path) 104 105print('Download pvmp3 source file success!') 106 107 108