sbc_decoder.py (4771dcb8bbb128f1a2264324662f0c69d4e4d9eb) | sbc_decoder.py (1522543de84c04e141f181431af0e80f00b6b718) |
---|---|
1#!/usr/bin/env python 2import numpy as np 3import wave 4import struct 5import sys 6from sbc import * 7 8V = np.zeros(shape = (2, 10*2*8)) --- 30 unchanged lines hidden (view full) --- 39 40 frame.scale_factor = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 41 42 # print frame.audio_sample 43 44 for ch in range(frame.nr_channels): 45 for sb in range(frame.nr_subbands): 46 frame.scale_factor[ch][sb] = get_bits(fin, 4) | 1#!/usr/bin/env python 2import numpy as np 3import wave 4import struct 5import sys 6from sbc import * 7 8V = np.zeros(shape = (2, 10*2*8)) --- 30 unchanged lines hidden (view full) --- 39 40 frame.scale_factor = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 41 42 # print frame.audio_sample 43 44 for ch in range(frame.nr_channels): 45 for sb in range(frame.nr_subbands): 46 frame.scale_factor[ch][sb] = get_bits(fin, 4) |
47 |
|
47 crc = calculate_crc(frame) 48 if crc != frame.crc_check: 49 print frame 50 print "error, crc not equal: ", crc, frame.crc_check 51 exit(1) 52 53 frame.scalefactor = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 54 for ch in range(frame.nr_channels): --- 5 unchanged lines hidden (view full) --- 60 61 frame.audio_sample = np.ndarray(shape=(frame.nr_blocks, frame.nr_channels, frame.nr_subbands), dtype = np.uint16) 62 for blk in range(frame.nr_blocks): 63 for ch in range(frame.nr_channels): 64 for sb in range(frame.nr_subbands): 65 frame.audio_sample[blk][ch][sb] = get_bits(fin, frame.bits[ch][sb]) 66 # print "block %2d - audio sample: %s" % (blk, frame.audio_sample[blk][0]) 67 | 48 crc = calculate_crc(frame) 49 if crc != frame.crc_check: 50 print frame 51 print "error, crc not equal: ", crc, frame.crc_check 52 exit(1) 53 54 frame.scalefactor = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 55 for ch in range(frame.nr_channels): --- 5 unchanged lines hidden (view full) --- 61 62 frame.audio_sample = np.ndarray(shape=(frame.nr_blocks, frame.nr_channels, frame.nr_subbands), dtype = np.uint16) 63 for blk in range(frame.nr_blocks): 64 for ch in range(frame.nr_channels): 65 for sb in range(frame.nr_subbands): 66 frame.audio_sample[blk][ch][sb] = get_bits(fin, frame.bits[ch][sb]) 67 # print "block %2d - audio sample: %s" % (blk, frame.audio_sample[blk][0]) 68 |
68 # add padding | |
69 drop_remaining_bits() 70 return 0 71 72def sbc_reconstruct_subband_samples(frame): 73 frame.levels = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 74 frame.sb_sample = np.zeros(shape=(frame.nr_blocks, frame.nr_channels, frame.nr_subbands)) 75 76 for ch in range(frame.nr_channels): --- 54 unchanged lines hidden (view full) --- 131 U[i*M2+j] = V[ch][i*2*M2+j] 132 U[(i*2+1)*M+j] = V[ch][(i*4+3)*M+j] 133 134 for i in range(L): 135 D = proto_table[i] * (-M) 136 W[i] = U[i]*D 137 138 | 69 drop_remaining_bits() 70 return 0 71 72def sbc_reconstruct_subband_samples(frame): 73 frame.levels = np.zeros(shape=(frame.nr_channels, frame.nr_subbands), dtype = np.int32) 74 frame.sb_sample = np.zeros(shape=(frame.nr_blocks, frame.nr_channels, frame.nr_subbands)) 75 76 for ch in range(frame.nr_channels): --- 54 unchanged lines hidden (view full) --- 131 U[i*M2+j] = V[ch][i*2*M2+j] 132 U[(i*2+1)*M+j] = V[ch][(i*4+3)*M+j] 133 134 for i in range(L): 135 D = proto_table[i] * (-M) 136 W[i] = U[i]*D 137 138 |
139 offset = blk*M 140 |
|
139 for j in range(M): 140 for i in range(10): 141 frame.X[j] += W[j+M*i] | 141 for j in range(M): 142 for i in range(10): 143 frame.X[j] += W[j+M*i] |
142 143 frame.pcm = np.concatenate([frame.pcm, np.int16(frame.X)]) | 144 145 frame.pcm[ch][offset + j] = np.int16(frame.X[j]) |
144 145 146def sbc_synthesis(frame): 147 if frame.nr_subbands == 4: 148 proto_table = Proto_4_40 149 elif frame.nr_subbands == 8: 150 proto_table = Proto_8_80 151 else: --- 9 unchanged lines hidden (view full) --- 161 err = sbc_reconstruct_subband_samples(frame) 162 if err >= 0: 163 err = sbc_synthesis(frame) 164 return err 165 166 167def write_wav_file(fout, frame): 168 values = [] | 146 147 148def sbc_synthesis(frame): 149 if frame.nr_subbands == 4: 150 proto_table = Proto_4_40 151 elif frame.nr_subbands == 8: 152 proto_table = Proto_8_80 153 else: --- 9 unchanged lines hidden (view full) --- 163 err = sbc_reconstruct_subband_samples(frame) 164 if err >= 0: 165 err = sbc_synthesis(frame) 166 return err 167 168 169def write_wav_file(fout, frame): 170 values = [] |
169 for i in range(len(frame.pcm)): 170 try: 171 packed_value = struct.pack('h', frame.pcm[i]) 172 values.append(packed_value) 173 except struct.error: 174 print frame 175 print i, frame.pcm[i], frame.pcm 176 exit(1) | |
177 | 171 |
172 for i in range(frame.nr_subbands * frame.nr_blocks): 173 for ch in range(frame.nr_channels): 174 try: 175 packed_value = struct.pack('h', frame.pcm[ch][i]) 176 values.append(packed_value) 177 except struct.error: 178 print frame 179 print i, frame.pcm[ch][i], frame.pcm[ch] 180 exit(1) 181 |
|
178 value_str = ''.join(values) 179 fout.writeframes(value_str) 180 181 182if __name__ == "__main__": 183 usage = ''' 184 Usage: ./sbc_decoder.py input.sbc 185 ''' --- 61 unchanged lines hidden --- | 182 value_str = ''.join(values) 183 fout.writeframes(value_str) 184 185 186if __name__ == "__main__": 187 usage = ''' 188 Usage: ./sbc_decoder.py input.sbc 189 ''' --- 61 unchanged lines hidden --- |