mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-16 08:42:28 +00:00
test/sbc: allow stand alone use of encoder/decoder
This commit is contained in:
parent
41a4a18d9c
commit
ba114a9841
@ -200,59 +200,60 @@ def write_wav_file(fout, sample):
|
||||
fout.writeframes(value_str)
|
||||
|
||||
|
||||
# usage = '''
|
||||
# Usage: ./sbc_decoder.py input.sbc
|
||||
# '''
|
||||
if __name__ == "__main__":
|
||||
usage = '''
|
||||
Usage: ./sbc_decoder.py input.sbc
|
||||
'''
|
||||
|
||||
# if (len(sys.argv) < 2):
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
# try:
|
||||
# infile = sys.argv[1]
|
||||
# if not infile.endswith('.sbc'):
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
if (len(sys.argv) < 2):
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
try:
|
||||
infile = sys.argv[1]
|
||||
if not infile.endswith('.sbc'):
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
|
||||
# wavfile = infile.replace('.sbc', '-decoded.wav')
|
||||
wavfile = infile.replace('.sbc', '-decoded.wav')
|
||||
|
||||
# with open (infile, 'rb') as fin:
|
||||
# try:
|
||||
# frame_count = 0
|
||||
# while True:
|
||||
# sbc_frame = SBCFrame(0,0,0,0,0)
|
||||
# if frame_count % 200 == 0:
|
||||
# print "== Frame %d ==" % (frame_count)
|
||||
# err = sbc_unpack_frame(fin, sbc_frame)
|
||||
# if err:
|
||||
# print "error, frame_count: ", frame_count
|
||||
with open (infile, 'rb') as fin:
|
||||
try:
|
||||
frame_count = 0
|
||||
while True:
|
||||
sbc_frame = SBCFrame(0,0,0,0,0)
|
||||
if frame_count % 200 == 0:
|
||||
print "== Frame %d ==" % (frame_count)
|
||||
err = sbc_unpack_frame(fin, sbc_frame)
|
||||
if err:
|
||||
print "error, frame_count: ", frame_count
|
||||
break
|
||||
|
||||
sbc_decode(sbc_frame)
|
||||
# print sbc_frame.pcm
|
||||
|
||||
if frame_count == 0:
|
||||
fout = wave.open(wavfile, 'w')
|
||||
fout.setnchannels(sbc_frame.nr_channels)
|
||||
fout.setsampwidth(2)
|
||||
fout.setframerate(sampling_frequency[sbc_frame.sampling_frequency])
|
||||
fout.setnframes(0)
|
||||
fout.setcomptype = 'NONE'
|
||||
|
||||
write_wav_file(fout, sbc_frame.pcm)
|
||||
frame_count += 1
|
||||
|
||||
# if frame_count == 8:
|
||||
# fout.close()
|
||||
# break
|
||||
|
||||
# sbc_decode(sbc_frame)
|
||||
# # print sbc_frame.pcm
|
||||
except TypeError:
|
||||
fout.close()
|
||||
print "DONE, SBC file %s decoded into WAV file %s ", (infile, wavfile)
|
||||
exit(0)
|
||||
|
||||
# if frame_count == 0:
|
||||
# fout = wave.open(wavfile, 'w')
|
||||
# fout.setnchannels(sbc_frame.nr_channels)
|
||||
# fout.setsampwidth(2)
|
||||
# fout.setframerate(sampling_frequency[sbc_frame.sampling_frequency])
|
||||
# fout.setnframes(0)
|
||||
# fout.setcomptype = 'NONE'
|
||||
|
||||
# write_wav_file(fout, sbc_frame.pcm)
|
||||
# frame_count += 1
|
||||
|
||||
# # if frame_count == 8:
|
||||
# # fout.close()
|
||||
# # break
|
||||
|
||||
# except TypeError:
|
||||
# fout.close()
|
||||
# print "DONE, SBC file %s decoded into WAV file %s ", (infile, wavfile)
|
||||
# exit(0)
|
||||
|
||||
# except IOError as e:
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
except IOError as e:
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
||||
|
@ -49,9 +49,9 @@ def sbc_analyse(frame, ch, blk, C, debug):
|
||||
if debug:
|
||||
#print "EX:", frame.EX
|
||||
print "X:", X
|
||||
print "Z:"
|
||||
print "Y:", Y
|
||||
print "W:", W
|
||||
# print "Z:"
|
||||
# print "Y:", Y
|
||||
# print "W:", W
|
||||
print "S:", S
|
||||
|
||||
for sb in range(M):
|
||||
@ -163,60 +163,63 @@ def sbc_quantization(frame):
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
usage = '''
|
||||
Usage: ./sbc_encoder.py input.wav block_size nr_subbands bitpool
|
||||
'''
|
||||
nr_blocks = 0
|
||||
nr_subbands = 0
|
||||
|
||||
# usage = '''
|
||||
# Usage: ./sbc_encoder.py input.wav block_size nr_subbands bitpool
|
||||
# '''
|
||||
# nr_blocks = 0
|
||||
# nr_subbands = 0
|
||||
if (len(sys.argv) < 5):
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
try:
|
||||
infile = sys.argv[1]
|
||||
if not infile.endswith('.wav'):
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
nr_blocks = int(sys.argv[2])
|
||||
nr_subbands = int(sys.argv[3])
|
||||
bitpool = int(sys.argv[4])
|
||||
sbcfile = infile.replace('.wav', '-encoded.sbc')
|
||||
|
||||
# if (len(sys.argv) < 5):
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
# try:
|
||||
# infile = sys.argv[1]
|
||||
# if not infile.endswith('.wav'):
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
# nr_blocks = int(sys.argv[2])
|
||||
# nr_subbands = int(sys.argv[3])
|
||||
# bitpool = int(sys.argv[4])
|
||||
# sbcfile = infile.replace('.wav', '-encoded.sbc')
|
||||
fin = wave.open(infile, 'rb')
|
||||
|
||||
# fin = wave.open(infile, 'rb')
|
||||
wav_nr_channels = fin.getnchannels()
|
||||
wav_sample_rate = fin.getframerate()
|
||||
wav_nr_frames = fin.getnframes()
|
||||
sbc_sampling_frequency = sbc_sampling_frequency_index(wav_sample_rate)
|
||||
|
||||
# wav_nr_channels = fin.getnchannels()
|
||||
# wav_sample_rate = fin.getframerate()
|
||||
# wav_nr_frames = fin.getnframes()
|
||||
# sbc_sampling_frequency = sbc_sampling_frequency_index(wav_sample_rate)
|
||||
sbc_frame_count = 0
|
||||
audio_frame_count = 0
|
||||
|
||||
# sbc_frame_count = 0
|
||||
# audio_frame_count = 0
|
||||
|
||||
# while audio_frame_count < wav_nr_frames:
|
||||
while audio_frame_count < wav_nr_frames:
|
||||
# if sbc_frame_count % 200 == 0:
|
||||
# print "== Frame %d ==" % (sbc_frame_count)
|
||||
print "== Frame %d ==" % (sbc_frame_count)
|
||||
|
||||
# sbc_encoder_frame = SBCFrame(nr_blocks, nr_subbands, wav_nr_channels, sbc_sampling_frequency, bitpool)
|
||||
sbc_encoder_frame = SBCFrame(nr_blocks, nr_subbands, wav_nr_channels, sbc_sampling_frequency, bitpool)
|
||||
|
||||
# wav_nr_audio_frames = sbc_encoder_frame.nr_blocks * sbc_encoder_frame.nr_subbands
|
||||
# fetch_samples_for_next_sbc_frame(fin, wav_nr_audio_frames, sbc_encoder_frame)
|
||||
# sbc_encode(sbc_encoder_frame)
|
||||
wav_nr_audio_frames = sbc_encoder_frame.nr_blocks * sbc_encoder_frame.nr_subbands
|
||||
fetch_samples_for_next_sbc_frame(fin, wav_nr_audio_frames, sbc_encoder_frame)
|
||||
sbc_encode(sbc_encoder_frame, 1)
|
||||
|
||||
# # stream = frame_to_bitstream(frame)
|
||||
# audio_frame_count += wav_nr_audio_frames
|
||||
# sbc_frame_count += 1
|
||||
# stream = frame_to_bitstream(frame)
|
||||
audio_frame_count += wav_nr_audio_frames
|
||||
sbc_frame_count += 1
|
||||
|
||||
# # except TypeError:
|
||||
# # fin.close()
|
||||
# # print "DONE, WAV file %s encoded into SBC file %s ", (infile, sbcfile)
|
||||
if sbc_frame_count == 87:
|
||||
break;
|
||||
|
||||
# #channels, num_audio_frames, wav_nr_channels, wav_sample_rate = read_waw_file(wavfile)
|
||||
# except TypeError:
|
||||
# fin.close()
|
||||
# print "DONE, WAV file %s encoded into SBC file %s ", (infile, sbcfile)
|
||||
|
||||
#channels, num_audio_frames, wav_nr_channels, wav_sample_rate = read_waw_file(wavfile)
|
||||
|
||||
|
||||
# except IOError as e:
|
||||
# print(usage)
|
||||
# sys.exit(1)
|
||||
except IOError as e:
|
||||
print(usage)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
||||
|
@ -149,7 +149,6 @@ try:
|
||||
sbc_decoder_frame.nr_channels,
|
||||
sbc_decoder_frame.sampling_frequency,
|
||||
sbc_decoder_frame.bitpool)
|
||||
|
||||
sbc_encoder_frame.pcm = np.array(sbc_decoder_frame.pcm)
|
||||
# TODO: join field
|
||||
# TODO: clear memory
|
||||
@ -158,8 +157,9 @@ try:
|
||||
# sbc_quantization(sbc_encoder_frame)
|
||||
|
||||
# print "encoder pcm ", sbc_encoder_frame.pcm
|
||||
sbc_encode(sbc_encoder_frame,frame_count >86)
|
||||
|
||||
# if frame_count > 86:
|
||||
print sbc_decoder_frame.sb_sample[0][0]
|
||||
sbc_encode(sbc_encoder_frame,frame_count >= 0)
|
||||
# test
|
||||
err = check_equal(sbc_encoder_frame, sbc_decoder_frame, frame_count)
|
||||
if err:
|
||||
|
Loading…
x
Reference in New Issue
Block a user