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)
|
fout.writeframes(value_str)
|
||||||
|
|
||||||
|
|
||||||
# usage = '''
|
if __name__ == "__main__":
|
||||||
# Usage: ./sbc_decoder.py input.sbc
|
usage = '''
|
||||||
# '''
|
Usage: ./sbc_decoder.py input.sbc
|
||||||
|
'''
|
||||||
|
|
||||||
# if (len(sys.argv) < 2):
|
if (len(sys.argv) < 2):
|
||||||
# print(usage)
|
print(usage)
|
||||||
# sys.exit(1)
|
sys.exit(1)
|
||||||
# try:
|
try:
|
||||||
# infile = sys.argv[1]
|
infile = sys.argv[1]
|
||||||
# if not infile.endswith('.sbc'):
|
if not infile.endswith('.sbc'):
|
||||||
# print(usage)
|
print(usage)
|
||||||
# sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# wavfile = infile.replace('.sbc', '-decoded.wav')
|
wavfile = infile.replace('.sbc', '-decoded.wav')
|
||||||
|
|
||||||
# with open (infile, 'rb') as fin:
|
with open (infile, 'rb') as fin:
|
||||||
# try:
|
try:
|
||||||
# frame_count = 0
|
frame_count = 0
|
||||||
# while True:
|
while True:
|
||||||
# sbc_frame = SBCFrame(0,0,0,0,0)
|
sbc_frame = SBCFrame(0,0,0,0,0)
|
||||||
# if frame_count % 200 == 0:
|
if frame_count % 200 == 0:
|
||||||
# print "== Frame %d ==" % (frame_count)
|
print "== Frame %d ==" % (frame_count)
|
||||||
# err = sbc_unpack_frame(fin, sbc_frame)
|
err = sbc_unpack_frame(fin, sbc_frame)
|
||||||
# if err:
|
if err:
|
||||||
# print "error, frame_count: ", frame_count
|
print "error, frame_count: ", frame_count
|
||||||
# break
|
break
|
||||||
|
|
||||||
# sbc_decode(sbc_frame)
|
sbc_decode(sbc_frame)
|
||||||
# # print sbc_frame.pcm
|
# print sbc_frame.pcm
|
||||||
|
|
||||||
# if frame_count == 0:
|
if frame_count == 0:
|
||||||
# fout = wave.open(wavfile, 'w')
|
fout = wave.open(wavfile, 'w')
|
||||||
# fout.setnchannels(sbc_frame.nr_channels)
|
fout.setnchannels(sbc_frame.nr_channels)
|
||||||
# fout.setsampwidth(2)
|
fout.setsampwidth(2)
|
||||||
# fout.setframerate(sampling_frequency[sbc_frame.sampling_frequency])
|
fout.setframerate(sampling_frequency[sbc_frame.sampling_frequency])
|
||||||
# fout.setnframes(0)
|
fout.setnframes(0)
|
||||||
# fout.setcomptype = 'NONE'
|
fout.setcomptype = 'NONE'
|
||||||
|
|
||||||
# write_wav_file(fout, sbc_frame.pcm)
|
write_wav_file(fout, sbc_frame.pcm)
|
||||||
# frame_count += 1
|
frame_count += 1
|
||||||
|
|
||||||
# # if frame_count == 8:
|
# if frame_count == 8:
|
||||||
# # fout.close()
|
# fout.close()
|
||||||
# # break
|
# break
|
||||||
|
|
||||||
# except TypeError:
|
except TypeError:
|
||||||
# fout.close()
|
fout.close()
|
||||||
# print "DONE, SBC file %s decoded into WAV file %s ", (infile, wavfile)
|
print "DONE, SBC file %s decoded into WAV file %s ", (infile, wavfile)
|
||||||
# exit(0)
|
exit(0)
|
||||||
|
|
||||||
# except IOError as e:
|
except IOError as e:
|
||||||
# print(usage)
|
print(usage)
|
||||||
# sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,9 +49,9 @@ def sbc_analyse(frame, ch, blk, C, debug):
|
|||||||
if debug:
|
if debug:
|
||||||
#print "EX:", frame.EX
|
#print "EX:", frame.EX
|
||||||
print "X:", X
|
print "X:", X
|
||||||
print "Z:"
|
# print "Z:"
|
||||||
print "Y:", Y
|
# print "Y:", Y
|
||||||
print "W:", W
|
# print "W:", W
|
||||||
print "S:", S
|
print "S:", S
|
||||||
|
|
||||||
for sb in range(M):
|
for sb in range(M):
|
||||||
@ -163,60 +163,63 @@ def sbc_quantization(frame):
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
usage = '''
|
||||||
|
Usage: ./sbc_encoder.py input.wav block_size nr_subbands bitpool
|
||||||
|
'''
|
||||||
|
nr_blocks = 0
|
||||||
|
nr_subbands = 0
|
||||||
|
|
||||||
# usage = '''
|
if (len(sys.argv) < 5):
|
||||||
# Usage: ./sbc_encoder.py input.wav block_size nr_subbands bitpool
|
print(usage)
|
||||||
# '''
|
sys.exit(1)
|
||||||
# nr_blocks = 0
|
try:
|
||||||
# nr_subbands = 0
|
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):
|
fin = wave.open(infile, 'rb')
|
||||||
# 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')
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# while audio_frame_count < wav_nr_frames:
|
|
||||||
# if sbc_frame_count % 200 == 0:
|
|
||||||
# print "== Frame %d ==" % (sbc_frame_count)
|
|
||||||
|
|
||||||
# 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
|
wav_nr_channels = fin.getnchannels()
|
||||||
# fetch_samples_for_next_sbc_frame(fin, wav_nr_audio_frames, sbc_encoder_frame)
|
wav_sample_rate = fin.getframerate()
|
||||||
# sbc_encode(sbc_encoder_frame)
|
wav_nr_frames = fin.getnframes()
|
||||||
|
sbc_sampling_frequency = sbc_sampling_frequency_index(wav_sample_rate)
|
||||||
|
|
||||||
|
sbc_frame_count = 0
|
||||||
|
audio_frame_count = 0
|
||||||
|
|
||||||
|
while audio_frame_count < wav_nr_frames:
|
||||||
|
# if sbc_frame_count % 200 == 0:
|
||||||
|
print "== Frame %d ==" % (sbc_frame_count)
|
||||||
|
|
||||||
|
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, 1)
|
||||||
|
|
||||||
|
# stream = frame_to_bitstream(frame)
|
||||||
|
audio_frame_count += wav_nr_audio_frames
|
||||||
|
sbc_frame_count += 1
|
||||||
|
|
||||||
|
if sbc_frame_count == 87:
|
||||||
|
break;
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
|
||||||
# # stream = frame_to_bitstream(frame)
|
|
||||||
# audio_frame_count += wav_nr_audio_frames
|
except IOError as e:
|
||||||
# sbc_frame_count += 1
|
print(usage)
|
||||||
|
sys.exit(1)
|
||||||
# # 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)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,7 +149,6 @@ try:
|
|||||||
sbc_decoder_frame.nr_channels,
|
sbc_decoder_frame.nr_channels,
|
||||||
sbc_decoder_frame.sampling_frequency,
|
sbc_decoder_frame.sampling_frequency,
|
||||||
sbc_decoder_frame.bitpool)
|
sbc_decoder_frame.bitpool)
|
||||||
|
|
||||||
sbc_encoder_frame.pcm = np.array(sbc_decoder_frame.pcm)
|
sbc_encoder_frame.pcm = np.array(sbc_decoder_frame.pcm)
|
||||||
# TODO: join field
|
# TODO: join field
|
||||||
# TODO: clear memory
|
# TODO: clear memory
|
||||||
@ -158,8 +157,9 @@ try:
|
|||||||
# sbc_quantization(sbc_encoder_frame)
|
# sbc_quantization(sbc_encoder_frame)
|
||||||
|
|
||||||
# print "encoder pcm ", sbc_encoder_frame.pcm
|
# 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
|
# test
|
||||||
err = check_equal(sbc_encoder_frame, sbc_decoder_frame, frame_count)
|
err = check_equal(sbc_encoder_frame, sbc_decoder_frame, frame_count)
|
||||||
if err:
|
if err:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user