diff --git a/plugins/channelrx/remotetcpsink/remotetcpsinksink.cpp b/plugins/channelrx/remotetcpsink/remotetcpsinksink.cpp index d69aebc9b..b4deb66ae 100644 --- a/plugins/channelrx/remotetcpsink/remotetcpsinksink.cpp +++ b/plugins/channelrx/remotetcpsink/remotetcpsinksink.cpp @@ -276,29 +276,49 @@ void RemoteTCPSinkSink::processOneSample(Complex &ci) if (m_settings.m_sampleBits == 8) { +#ifdef SDR_RX_SAMPLE_24BIT iqBuf[0] = (qint32) (ci.real() / 65536.0f); iqBuf[1] = (qint32) (ci.imag() / 65536.0f); +#else + iqBuf[0] = (qint32) (ci.real() / 256.0f); + iqBuf[1] = (qint32) (ci.imag() / 256.0f); +#endif iqBuf[0] = clamp8(iqBuf[0]); iqBuf[1] = clamp8(iqBuf[1]); } else if (m_settings.m_sampleBits == 16) { +#ifdef SDR_RX_SAMPLE_24BIT iqBuf[0] = (qint32) (ci.real() / 256.0f); iqBuf[1] = (qint32) (ci.imag() / 256.0f); +#else + iqBuf[0] = (qint32) ci.real(); + iqBuf[1] = (qint32) ci.imag(); +#endif iqBuf[0] = clamp16(iqBuf[0]); iqBuf[1] = clamp16(iqBuf[1]); } else if (m_settings.m_sampleBits == 24) { +#ifdef SDR_RX_SAMPLE_24BIT iqBuf[0] = (qint32) ci.real(); iqBuf[1] = (qint32) ci.imag(); +#else + iqBuf[0] = (qint32) (ci.real() * 256.0f); + iqBuf[1] = (qint32) (ci.imag() * 256.0f); +#endif iqBuf[0] = clamp24(iqBuf[0]); iqBuf[1] = clamp24(iqBuf[1]); } else { +#ifdef SDR_RX_SAMPLE_24BIT iqBuf[0] = (qint32) ci.real(); iqBuf[1] = (qint32) ci.imag(); +#else + iqBuf[0] = (qint32) (ci.real() * 256.0f); + iqBuf[1] = (qint32) (ci.imag() * 256.0f); +#endif } int bytes = 2 * m_settings.m_sampleBits / 8; m_bytesUncompressed += bytes; diff --git a/plugins/samplesource/remotetcpinput/remotetcpinputtcphandler.cpp b/plugins/samplesource/remotetcpinput/remotetcpinputtcphandler.cpp index a98afd39d..0ef0acc4d 100644 --- a/plugins/samplesource/remotetcpinput/remotetcpinputtcphandler.cpp +++ b/plugins/samplesource/remotetcpinput/remotetcpinputtcphandler.cpp @@ -896,6 +896,58 @@ FLAC__StreamDecoderWriteStatus RemoteTCPInputTCPHandler::flacWrite(const FLAC__S } m_uncompressedData.write(reinterpret_cast(m_converterBuffer), nbSamples*sizeof(Sample)); } + else if ((frame->header.bits_per_sample == 8) && (SDR_RX_SAMP_SZ == 16) && (frame->header.channels == 2)) + { + qint16 *out = (qint16 *)m_converterBuffer; + const qint32 *inI = buffer[0]; + const qint32 *inQ = buffer[1]; + + for (int i = 0; i < nbSamples; i++) + { + *out++ = *inI++ << 8; + *out++ = *inQ++ << 8; + } + m_uncompressedData.write(reinterpret_cast(m_converterBuffer), nbSamples*sizeof(Sample)); + } + else if ((frame->header.bits_per_sample == 16) && (SDR_RX_SAMP_SZ == 16) && (frame->header.channels == 2)) + { + qint16 *out = (qint16 *)m_converterBuffer; + const qint32 *inI = buffer[0]; + const qint32 *inQ = buffer[1]; + + for (int i = 0; i < nbSamples; i++) + { + *out++ = *inI++; + *out++ = *inQ++; + } + m_uncompressedData.write(reinterpret_cast(m_converterBuffer), nbSamples*sizeof(Sample)); + } + else if ((frame->header.bits_per_sample == 24) && (SDR_RX_SAMP_SZ == 16) && (frame->header.channels == 2)) + { + qint16 *out = (qint16 *)m_converterBuffer; + const qint32 *inI = buffer[0]; + const qint32 *inQ = buffer[1]; + + for (int i = 0; i < nbSamples; i++) + { + *out++ = *inI++ >> 8; + *out++ = *inQ++ >> 8; + } + m_uncompressedData.write(reinterpret_cast(m_converterBuffer), nbSamples*sizeof(Sample)); + } + else if ((frame->header.bits_per_sample == 32) && (SDR_RX_SAMP_SZ == 16) && (frame->header.channels == 2)) + { + qint16 *out = (qint16 *)m_converterBuffer; + const qint32 *inI = buffer[0]; + const qint32 *inQ = buffer[1]; + + for (int i = 0; i < nbSamples; i++) + { + *out++ = *inI++ >> 8; + *out++ = *inQ++ >> 8; + } + m_uncompressedData.write(reinterpret_cast(m_converterBuffer), nbSamples*sizeof(Sample)); + } else { qDebug() << "RemoteTCPInputTCPHandler::flacWrite: Unsupported format"; @@ -1848,7 +1900,7 @@ void RemoteTCPInputTCPHandler::processCommands() float latitude = RemoteTCPProtocol::extractFloat((const quint8 *) &pos[0]); float longitude = RemoteTCPProtocol::extractFloat((const quint8 *) &pos[4]); float altitude = RemoteTCPProtocol::extractFloat((const quint8 *) &pos[8]); - qDebug() << "RemoteTCPInputTCPHandler::processCommands: Position " << latitude << longitude << altitude; + //qDebug() << "RemoteTCPInputTCPHandler::processCommands: Position " << latitude << longitude << altitude; if (m_messageQueueToInput) { m_messageQueueToInput->push(RemoteTCPInput::MsgReportPosition::create(latitude, longitude, altitude)); } @@ -1869,7 +1921,7 @@ void RemoteTCPInputTCPHandler::processCommands() float isotropic = RemoteTCPProtocol::extractUInt32((const quint8 *) &dir[0]); float azimuth = RemoteTCPProtocol::extractFloat((const quint8 *) &dir[4]); float elevation = RemoteTCPProtocol::extractFloat((const quint8 *) &dir[8]); - qDebug() << "RemoteTCPInputTCPHandler::processCommands: Direction " << isotropic << azimuth << elevation; + //qDebug() << "RemoteTCPInputTCPHandler::processCommands: Direction " << isotropic << azimuth << elevation; if (m_messageQueueToInput) { m_messageQueueToInput->push(RemoteTCPInput::MsgReportDirection::create(isotropic, azimuth, elevation)); }