mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
added sample rate conversion
This commit is contained in:
parent
2e88b542cf
commit
e21f9b6296
1 changed files with 9 additions and 7 deletions
16
modem.py
16
modem.py
|
@ -35,8 +35,8 @@ class RF():
|
||||||
# --------------------------------------------GET SUPPORTED SAMPLE RATES FROM SOUND DEVICE
|
# --------------------------------------------GET SUPPORTED SAMPLE RATES FROM SOUND DEVICE
|
||||||
#static.AUDIO_SAMPLE_RATE_RX = int(self.p.get_device_info_by_index(static.AUDIO_INPUT_DEVICE)['defaultSampleRate'])
|
#static.AUDIO_SAMPLE_RATE_RX = int(self.p.get_device_info_by_index(static.AUDIO_INPUT_DEVICE)['defaultSampleRate'])
|
||||||
#static.AUDIO_SAMPLE_RATE_TX = int(self.p.get_device_info_by_index(static.AUDIO_OUTPUT_DEVICE)['defaultSampleRate'])
|
#static.AUDIO_SAMPLE_RATE_TX = int(self.p.get_device_info_by_index(static.AUDIO_OUTPUT_DEVICE)['defaultSampleRate'])
|
||||||
static.AUDIO_SAMPLE_RATE_TX = 8000
|
static.AUDIO_SAMPLE_RATE_TX = 48000
|
||||||
static.AUDIO_SAMPLE_RATE_RX = 8000
|
static.AUDIO_SAMPLE_RATE_RX = 48000
|
||||||
# --------------------------------------------OPEN AUDIO CHANNEL RX
|
# --------------------------------------------OPEN AUDIO CHANNEL RX
|
||||||
self.stream_rx = self.p.open(format=pyaudio.paInt16,
|
self.stream_rx = self.p.open(format=pyaudio.paInt16,
|
||||||
channels=static.AUDIO_CHANNELS,
|
channels=static.AUDIO_CHANNELS,
|
||||||
|
@ -60,8 +60,8 @@ class RF():
|
||||||
FREEDV_DECODER_THREAD_10 = threading.Thread(target=self.receive, args=[10], name="FREEDV_DECODER_THREAD_10")
|
FREEDV_DECODER_THREAD_10 = threading.Thread(target=self.receive, args=[10], name="FREEDV_DECODER_THREAD_10")
|
||||||
FREEDV_DECODER_THREAD_10.start()
|
FREEDV_DECODER_THREAD_10.start()
|
||||||
|
|
||||||
FREEDV_DECODER_THREAD_11 = threading.Thread(target=self.receive, args=[11], name="FREEDV_DECODER_THREAD_11")
|
#FREEDV_DECODER_THREAD_11 = threading.Thread(target=self.receive, args=[11], name="FREEDV_DECODER_THREAD_11")
|
||||||
FREEDV_DECODER_THREAD_11.start()
|
#FREEDV_DECODER_THREAD_11.start()
|
||||||
|
|
||||||
FREEDV_DECODER_THREAD_12 = threading.Thread(target=self.receive, args=[12], name="FREEDV_DECODER_THREAD_12")
|
FREEDV_DECODER_THREAD_12 = threading.Thread(target=self.receive, args=[12], name="FREEDV_DECODER_THREAD_12")
|
||||||
FREEDV_DECODER_THREAD_12.start()
|
FREEDV_DECODER_THREAD_12.start()
|
||||||
|
@ -114,7 +114,8 @@ class RF():
|
||||||
if len(self.streambuffer) > 0:
|
if len(self.streambuffer) > 0:
|
||||||
# print(self.streambuffer)
|
# print(self.streambuffer)
|
||||||
self.audio_writing_to_stream = True
|
self.audio_writing_to_stream = True
|
||||||
self.stream_tx.write(self.streambuffer)
|
audio = audioop.ratecv(self.streambuffer,2,1,static.MODEM_SAMPLE_RATE, static.AUDIO_SAMPLE_RATE_TX, None)
|
||||||
|
self.stream_tx.write(audio[0])
|
||||||
self.streambuffer = bytes()
|
self.streambuffer = bytes()
|
||||||
#static.CHANNEL_STATE = state_before_transmit
|
#static.CHANNEL_STATE = state_before_transmit
|
||||||
self.audio_writing_to_stream = False
|
self.audio_writing_to_stream = False
|
||||||
|
@ -360,10 +361,11 @@ class RF():
|
||||||
static.FREEDV_DATA_PAYLOAD_PER_FRAME = bytes_per_frame - 2
|
static.FREEDV_DATA_PAYLOAD_PER_FRAME = bytes_per_frame - 2
|
||||||
|
|
||||||
nin = self.c_lib.freedv_nin(freedv)
|
nin = self.c_lib.freedv_nin(freedv)
|
||||||
#nin = int(nin*(static.AUDIO_SAMPLE_RATE_RX/static.MODEM_SAMPLE_RATE))
|
nin = int(nin*(static.AUDIO_SAMPLE_RATE_RX/static.MODEM_SAMPLE_RATE))
|
||||||
|
|
||||||
data_in = self.stream_rx.read(nin, exception_on_overflow=False)
|
data_in = self.stream_rx.read(nin, exception_on_overflow=False)
|
||||||
|
data_in = audioop.ratecv(data_in,2,1,static.AUDIO_SAMPLE_RATE_RX, static.MODEM_SAMPLE_RATE, None)
|
||||||
|
data_in = data_in[0]
|
||||||
static.AUDIO_RMS = audioop.rms(data_in, 2)
|
static.AUDIO_RMS = audioop.rms(data_in, 2)
|
||||||
# self.c_lib.freedv_rawdatarx.argtype = [ctypes.POINTER(ctypes.c_ubyte), data_bytes_out, data_in] # check if really neccessary
|
# self.c_lib.freedv_rawdatarx.argtype = [ctypes.POINTER(ctypes.c_ubyte), data_bytes_out, data_in] # check if really neccessary
|
||||||
nbytes = self.c_lib.freedv_rawdatarx(freedv, bytes_out, data_in) # demodulate audio
|
nbytes = self.c_lib.freedv_rawdatarx(freedv, bytes_out, data_in) # demodulate audio
|
||||||
|
|
Loading…
Reference in a new issue