kopia lustrzana https://github.com/f4exb/sdrangel
File Input and record: 16/24 bit DSP compatibility: bug fixes
rodzic
12a97b9644
commit
cc1033b3c5
|
@ -175,6 +175,7 @@ bool FileSourceGui::handleMessage(const Message& message)
|
||||||
else if (FileSourceInput::MsgReportFileSourceStreamData::match(message))
|
else if (FileSourceInput::MsgReportFileSourceStreamData::match(message))
|
||||||
{
|
{
|
||||||
m_sampleRate = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getSampleRate();
|
m_sampleRate = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getSampleRate();
|
||||||
|
m_sampleSize = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getSampleSize();
|
||||||
m_centerFrequency = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getCenterFrequency();
|
m_centerFrequency = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getCenterFrequency();
|
||||||
m_startingTimeStamp = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getStartingTimeStamp();
|
m_startingTimeStamp = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getStartingTimeStamp();
|
||||||
m_recordLength = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getRecordLength();
|
m_recordLength = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getRecordLength();
|
||||||
|
@ -312,6 +313,7 @@ void FileSourceGui::updateWithStreamData()
|
||||||
{
|
{
|
||||||
ui->centerFrequency->setValue(m_centerFrequency/1000);
|
ui->centerFrequency->setValue(m_centerFrequency/1000);
|
||||||
ui->sampleRateText->setText(tr("%1k").arg((float)m_sampleRate / 1000));
|
ui->sampleRateText->setText(tr("%1k").arg((float)m_sampleRate / 1000));
|
||||||
|
ui->sampleSizeText->setText(tr("%1b").arg(m_sampleSize));
|
||||||
ui->play->setEnabled(m_acquisition);
|
ui->play->setEnabled(m_acquisition);
|
||||||
QTime recordLength(0, 0, 0, 0);
|
QTime recordLength(0, 0, 0, 0);
|
||||||
recordLength = recordLength.addSecs(m_recordLength);
|
recordLength = recordLength.addSecs(m_recordLength);
|
||||||
|
|
|
@ -63,6 +63,7 @@ private:
|
||||||
bool m_acquisition;
|
bool m_acquisition;
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
int m_sampleRate;
|
int m_sampleRate;
|
||||||
|
quint32 m_sampleSize;
|
||||||
quint64 m_centerFrequency;
|
quint64 m_centerFrequency;
|
||||||
quint32 m_recordLength;
|
quint32 m_recordLength;
|
||||||
std::time_t m_startingTimeStamp;
|
std::time_t m_startingTimeStamp;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>246</width>
|
<width>300</width>
|
||||||
<height>190</height>
|
<height>190</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -231,16 +231,56 @@
|
||||||
<layout class="QHBoxLayout" name="rateTimeLayout">
|
<layout class="QHBoxLayout" name="rateTimeLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="sampleRateText">
|
<widget class="QLabel" name="sampleRateText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>8</pointsize>
|
<pointsize>8</pointsize>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Record sample rate</string>
|
<string>Record sample rate (kS/s)</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>0k</string>
|
<string>00000k</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="sampleSizeText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>22</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>8</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Record sample size (bits)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>00b</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -99,6 +99,7 @@ void FileSourceInput::openFileStream()
|
||||||
<< " length: " << m_recordLength << " seconds";
|
<< " length: " << m_recordLength << " seconds";
|
||||||
|
|
||||||
MsgReportFileSourceStreamData *report = MsgReportFileSourceStreamData::create(m_sampleRate,
|
MsgReportFileSourceStreamData *report = MsgReportFileSourceStreamData::create(m_sampleRate,
|
||||||
|
m_sampleSize,
|
||||||
m_centerFrequency,
|
m_centerFrequency,
|
||||||
m_startingTimeStamp,
|
m_startingTimeStamp,
|
||||||
m_recordLength); // file stream data
|
m_recordLength); // file stream data
|
||||||
|
|
|
@ -173,30 +173,35 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int getSampleRate() const { return m_sampleRate; }
|
int getSampleRate() const { return m_sampleRate; }
|
||||||
|
quint32 getSampleSize() const { return m_sampleSize; }
|
||||||
quint64 getCenterFrequency() const { return m_centerFrequency; }
|
quint64 getCenterFrequency() const { return m_centerFrequency; }
|
||||||
std::time_t getStartingTimeStamp() const { return m_startingTimeStamp; }
|
std::time_t getStartingTimeStamp() const { return m_startingTimeStamp; }
|
||||||
quint32 getRecordLength() const { return m_recordLength; }
|
quint32 getRecordLength() const { return m_recordLength; }
|
||||||
|
|
||||||
static MsgReportFileSourceStreamData* create(int sampleRate,
|
static MsgReportFileSourceStreamData* create(int sampleRate,
|
||||||
|
quint32 sampleSize,
|
||||||
quint64 centerFrequency,
|
quint64 centerFrequency,
|
||||||
std::time_t startingTimeStamp,
|
std::time_t startingTimeStamp,
|
||||||
quint32 recordLength)
|
quint32 recordLength)
|
||||||
{
|
{
|
||||||
return new MsgReportFileSourceStreamData(sampleRate, centerFrequency, startingTimeStamp, recordLength);
|
return new MsgReportFileSourceStreamData(sampleRate, sampleSize, centerFrequency, startingTimeStamp, recordLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int m_sampleRate;
|
int m_sampleRate;
|
||||||
|
quint32 m_sampleSize;
|
||||||
quint64 m_centerFrequency;
|
quint64 m_centerFrequency;
|
||||||
std::time_t m_startingTimeStamp;
|
std::time_t m_startingTimeStamp;
|
||||||
quint32 m_recordLength;
|
quint32 m_recordLength;
|
||||||
|
|
||||||
MsgReportFileSourceStreamData(int sampleRate,
|
MsgReportFileSourceStreamData(int sampleRate,
|
||||||
|
quint32 sampleSize,
|
||||||
quint64 centerFrequency,
|
quint64 centerFrequency,
|
||||||
std::time_t startingTimeStamp,
|
std::time_t startingTimeStamp,
|
||||||
quint32 recordLength) :
|
quint32 recordLength) :
|
||||||
Message(),
|
Message(),
|
||||||
m_sampleRate(sampleRate),
|
m_sampleRate(sampleRate),
|
||||||
|
m_sampleSize(sampleSize),
|
||||||
m_centerFrequency(centerFrequency),
|
m_centerFrequency(centerFrequency),
|
||||||
m_startingTimeStamp(startingTimeStamp),
|
m_startingTimeStamp(startingTimeStamp),
|
||||||
m_recordLength(recordLength)
|
m_recordLength(recordLength)
|
||||||
|
|
|
@ -136,7 +136,8 @@ void FileRecord::readHeader(std::ifstream& sampleFile, Header& header)
|
||||||
sampleFile.read((char *) &(header.centerFrequency), sizeof(quint64));
|
sampleFile.read((char *) &(header.centerFrequency), sizeof(quint64));
|
||||||
sampleFile.read((char *) &(header.startTimeStamp), sizeof(std::time_t));
|
sampleFile.read((char *) &(header.startTimeStamp), sizeof(std::time_t));
|
||||||
sampleFile.read((char *) &(header.sampleSize), sizeof(quint32));
|
sampleFile.read((char *) &(header.sampleSize), sizeof(quint32));
|
||||||
if ((header.sampleSize != 16) || (header.sampleSize != 24)) { // assume 16 bits if garbage (old I/Q file)
|
if ((header.sampleSize != 16) && (header.sampleSize != 24)) { // assume 16 bits if garbage (old I/Q file)
|
||||||
header.sampleSize = 16;
|
header.sampleSize = 16;
|
||||||
}
|
}
|
||||||
|
qDebug("FileRecord::readHeader: sampleSize: %u", header.sampleSize);
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue