diff --git a/plugins/samplesink/fileoutput/fileoutput.cpp b/plugins/samplesink/fileoutput/fileoutput.cpp index 718aed34d..cba8e6407 100644 --- a/plugins/samplesink/fileoutput/fileoutput.cpp +++ b/plugins/samplesink/fileoutput/fileoutput.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "SWGDeviceSettings.h" #include "SWGDeviceState.h" @@ -74,8 +75,8 @@ void FileOutput::openFileStream() int actualSampleRate = m_settings.m_sampleRate * (1<relTimeText->setText(s_timems); - qint64 startingTimeStampMsec = m_startingTimeStamp * 1000LL; - QDateTime dt = QDateTime::fromMSecsSinceEpoch(startingTimeStampMsec); + qint64 startingTimeStampMsec = m_startingTimeStamp; + QDateTime dt = QDateTime::fromMSecsSinceEpoch(startingTimeStampMsec); dt = dt.addSecs(t_sec); dt = dt.addMSecs(t_msec); QString s_date = dt.toString("yyyy-MM-dd HH:mm:ss.zzz"); diff --git a/rescuesdriq/readme.md b/rescuesdriq/readme.md index 6d2092bc0..ece09cd91 100644 --- a/rescuesdriq/readme.md +++ b/rescuesdriq/readme.md @@ -8,7 +8,7 @@ The header is composed as follows: - Sample rate in S/s (4 bytes, 32 bits) - Center frequency in Hz (8 bytes, 64 bits) - - Start time Unix timestamp epoch in seconds (8 bytes, 64 bits) + - Start time Unix timestamp epoch in milliseconds (8 bytes, 64 bits) - Sample size as 16 or 24 bits (4 bytes, 32 bits) - filler with all zeroes (4 bytes, 32 bits) - CRC32 (IEEE) of the 28 bytes above (4 bytes, 32 bits) diff --git a/rescuesdriq/rescuesdriq.go b/rescuesdriq/rescuesdriq.go index a2dbd9048..a4e629cce 100644 --- a/rescuesdriq/rescuesdriq.go +++ b/rescuesdriq/rescuesdriq.go @@ -71,7 +71,7 @@ func printHeader(header *HeaderStd) { fmt.Println("Sample rate:", header.SampleRate) fmt.Println("Frequency :", header.CenterFrequency) fmt.Println("Sample Size:", header.SampleSize) - tm := time.Unix(header.StartTimestamp, 0) + tm := time.Unix(header.StartTimestamp / 1000, header.StartTimestamp % 1000) fmt.Println("Start :", tm) fmt.Println("CRC32 :", header.CRC32) fmt.Println("CRC32 OK :", GetCRC(header)) @@ -152,13 +152,13 @@ func main() { if flagSeen["ts"] { t, err := time.Parse(time.RFC3339, *timeStr) if err == nil { - headerOrigin.StartTimestamp = t.Unix() + headerOrigin.StartTimestamp = t.UnixNano() / int64(time.Millisecond) } else { fmt.Println("Incorrect time specified. Defaulting to now") - headerOrigin.StartTimestamp = int64(time.Now().Unix()) + headerOrigin.StartTimestamp = int64(time.Now().UnixNano() / int64(time.Millisecond)) } } else if *timeNow { - headerOrigin.StartTimestamp = int64(time.Now().Unix()) + headerOrigin.StartTimestamp = int64(time.Now().Unix() * 1000) } fmt.Println("\nHeader is now") diff --git a/sdrbase/dsp/filerecord.cpp b/sdrbase/dsp/filerecord.cpp index 899eed818..84b05052b 100644 --- a/sdrbase/dsp/filerecord.cpp +++ b/sdrbase/dsp/filerecord.cpp @@ -183,8 +183,8 @@ void FileRecord::writeHeader() Header header; header.sampleRate = m_sampleRate; header.centerFrequency = m_centerFrequency; - std::time_t ts = time(0); - header.startTimeStamp = ts + (m_msShift / 1000); + qint64 ts = QDateTime::currentMSecsSinceEpoch(); + header.startTimeStamp = (quint64)(ts + m_msShift); header.sampleSize = SDR_RX_SAMP_SZ; header.filler = 0;