Changed codec_startEncode() and codec_startDecode() input parameter from an audio source/sink to an audio path
This commit is contained in:
parent
60b771b375
commit
adf88611f4
|
|
@ -21,7 +21,7 @@
|
||||||
#ifndef AUDIO_CODEC_H
|
#ifndef AUDIO_CODEC_H
|
||||||
#define AUDIO_CODEC_H
|
#define AUDIO_CODEC_H
|
||||||
|
|
||||||
#include <interfaces/audio.h>
|
#include <audio_path.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
@ -48,10 +48,10 @@ void codec_terminate();
|
||||||
* Only an encoding or decoding operation at a time is possible: in case there
|
* Only an encoding or decoding operation at a time is possible: in case there
|
||||||
* is already an operation in progress, this function returns false.
|
* is already an operation in progress, this function returns false.
|
||||||
*
|
*
|
||||||
* @param source: audio source for encoding.
|
* @param path: audio path for encoding source.
|
||||||
* @return true on success, false on failure.
|
* @return true on success, false on failure.
|
||||||
*/
|
*/
|
||||||
bool codec_startEncode(const enum AudioSource source);
|
bool codec_startEncode(const pathId path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start dencoding of audio data sending the uncompressed samples to a given
|
* Start dencoding of audio data sending the uncompressed samples to a given
|
||||||
|
|
@ -59,10 +59,10 @@ bool codec_startEncode(const enum AudioSource source);
|
||||||
* Only an encoding or decoding operation at a time is possible: in case there
|
* Only an encoding or decoding operation at a time is possible: in case there
|
||||||
* is already an operation in progress, this function returns false.
|
* is already an operation in progress, this function returns false.
|
||||||
*
|
*
|
||||||
* @param destination: destination for decoded audio.
|
* @param path: audio path for decoded audio.
|
||||||
* @return true on success, false on failure.
|
* @return true on success, false on failure.
|
||||||
*/
|
*/
|
||||||
bool codec_startDecode(const enum AudioSink destination);
|
bool codec_startDecode(const pathId path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop an ongoing encoding or decoding operation.
|
* Stop an ongoing encoding or decoding operation.
|
||||||
|
|
|
||||||
|
|
@ -106,17 +106,25 @@ void codec_terminate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool codec_startEncode(const enum AudioSource source)
|
bool codec_startEncode(const pathId path)
|
||||||
{
|
{
|
||||||
if(running) return false;
|
if(running)
|
||||||
if(audioBuf == NULL) return false;
|
return false;
|
||||||
|
|
||||||
|
if(audioBuf == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Bad incoming path
|
||||||
|
if(audioPath_getStatus(path) != PATH_OPEN)
|
||||||
|
return false;
|
||||||
|
|
||||||
running = true;
|
running = true;
|
||||||
|
|
||||||
audioStream = inputStream_start(source, PRIO_TX, audioBuf, 320,
|
pathInfo_t pathInfo = audioPath_getInfo(path);
|
||||||
BUF_CIRC_DOUBLE, 8000);
|
audioStream = inputStream_start(pathInfo.source, pathInfo.prio, audioBuf,
|
||||||
|
320, BUF_CIRC_DOUBLE, 8000);
|
||||||
|
|
||||||
if(audioStream == -1)
|
if(audioStream < 0)
|
||||||
{
|
{
|
||||||
running = false;
|
running = false;
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -131,16 +139,24 @@ bool codec_startEncode(const enum AudioSource source)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool codec_startDecode(const enum AudioSink destination)
|
bool codec_startDecode(const pathId path)
|
||||||
{
|
{
|
||||||
if(running) return false;
|
if(running)
|
||||||
if(audioBuf == NULL) return false;
|
return false;
|
||||||
|
|
||||||
|
if(audioBuf == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Bad incoming path
|
||||||
|
if(audioPath_getStatus(path) != PATH_OPEN)
|
||||||
|
return false;
|
||||||
|
|
||||||
running = true;
|
running = true;
|
||||||
|
|
||||||
memset(audioBuf, 0x00, 320 * sizeof(stream_sample_t));
|
memset(audioBuf, 0x00, 320 * sizeof(stream_sample_t));
|
||||||
audioStream = outputStream_start(destination, PRIO_RX, audioBuf, 320,
|
pathInfo_t pathInfo = audioPath_getInfo(path);
|
||||||
BUF_CIRC_DOUBLE, 8000);
|
audioStream = outputStream_start(pathInfo.sink, pathInfo.prio, audioBuf,
|
||||||
|
320, BUF_CIRC_DOUBLE, 8000);
|
||||||
|
|
||||||
if(audioStream == -1)
|
if(audioStream == -1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -581,8 +581,8 @@ void vp_tick()
|
||||||
{
|
{
|
||||||
vpStartTime = 0;
|
vpStartTime = 0;
|
||||||
voicePromptActive = true;
|
voicePromptActive = true;
|
||||||
codec_startDecode(SINK_SPK);
|
|
||||||
enableSpkOutput();
|
enableSpkOutput();
|
||||||
|
codec_startDecode(vpAudioPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voicePromptActive == false)
|
if (voicePromptActive == false)
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,7 @@ void OpMode_M17::rxState(rtxStatus_t *const status)
|
||||||
demodulator.invertPhase(invertRxPhase);
|
demodulator.invertPhase(invertRxPhase);
|
||||||
|
|
||||||
rxAudioPath = audioPath_request(SOURCE_MCU, SINK_SPK, PRIO_RX);
|
rxAudioPath = audioPath_request(SOURCE_MCU, SINK_SPK, PRIO_RX);
|
||||||
codec_startDecode(SINK_SPK);
|
codec_startDecode(rxAudioPath);
|
||||||
|
|
||||||
radio_enableRx();
|
radio_enableRx();
|
||||||
|
|
||||||
|
|
@ -235,7 +235,7 @@ void OpMode_M17::txState(rtxStatus_t *const status)
|
||||||
encoder.encodeLsf(lsf, m17Frame);
|
encoder.encodeLsf(lsf, m17Frame);
|
||||||
|
|
||||||
txAudioPath = audioPath_request(SOURCE_MIC, SINK_MCU, PRIO_TX);
|
txAudioPath = audioPath_request(SOURCE_MIC, SINK_MCU, PRIO_TX);
|
||||||
codec_startEncode(SOURCE_MIC);
|
codec_startEncode(txAudioPath);
|
||||||
radio_enableTx();
|
radio_enableTx();
|
||||||
|
|
||||||
modulator.invertPhase(invertTxPhase);
|
modulator.invertPhase(invertTxPhase);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue