mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 09:48:45 -05:00
Windows: MSVC2017: adapt decimators.h to handle packing with MSVC
This commit is contained in:
parent
7574cb23d4
commit
222aa9f40d
@ -13,6 +13,8 @@ TARGET = inputairspy
|
|||||||
|
|
||||||
CONFIG(MINGW32):LIBAIRSPYSRC = "C:\softs\libairspy"
|
CONFIG(MINGW32):LIBAIRSPYSRC = "C:\softs\libairspy"
|
||||||
CONFIG(MINGW64):LIBAIRSPYSRC = "C:\softs\libairspy"
|
CONFIG(MINGW64):LIBAIRSPYSRC = "C:\softs\libairspy"
|
||||||
|
CONFIG(MSVC):LIBAIRSPYSRC = "C:\softs\libairspy"
|
||||||
|
|
||||||
INCLUDEPATH += $$PWD
|
INCLUDEPATH += $$PWD
|
||||||
INCLUDEPATH += ../../../exports
|
INCLUDEPATH += ../../../exports
|
||||||
INCLUDEPATH += ../../../sdrbase
|
INCLUDEPATH += ../../../sdrbase
|
||||||
|
@ -184,6 +184,42 @@ struct decimation_shifts<24, 8>
|
|||||||
static const uint post64 = 0;
|
static const uint post64 = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(push,1)
|
||||||
|
template<typename T>
|
||||||
|
struct TripleByteLE
|
||||||
|
{
|
||||||
|
uint8_t b0;
|
||||||
|
uint8_t b1;
|
||||||
|
uint8_t b2;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
#pragma pack(push,1)
|
||||||
|
struct {
|
||||||
|
int32_t i;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct {
|
||||||
|
uint8_t i0;
|
||||||
|
uint8_t i1;
|
||||||
|
uint8_t i2;
|
||||||
|
uint8_t i3;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
} isample;
|
||||||
|
|
||||||
|
operator T() const {
|
||||||
|
isample s;
|
||||||
|
s.i0 = 0;
|
||||||
|
s.i1 = b0;
|
||||||
|
s.i2 = b1;
|
||||||
|
s.i3 = b2;
|
||||||
|
return s.i;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#else
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct TripleByteLE
|
struct TripleByteLE
|
||||||
{
|
{
|
||||||
@ -212,7 +248,44 @@ struct TripleByteLE
|
|||||||
return s.i;
|
return s.i;
|
||||||
}
|
}
|
||||||
} __attribute__((__packed__));
|
} __attribute__((__packed__));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
template<>
|
||||||
|
struct TripleByteLE<qint32>
|
||||||
|
{
|
||||||
|
uint8_t b0;
|
||||||
|
uint8_t b1;
|
||||||
|
uint8_t b2;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct {
|
||||||
|
qint32 i;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct {
|
||||||
|
uint8_t i0;
|
||||||
|
uint8_t i1;
|
||||||
|
uint8_t i2;
|
||||||
|
uint8_t i3;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
} isample;
|
||||||
|
|
||||||
|
operator qint32() const {
|
||||||
|
isample s;
|
||||||
|
s.i0 = 0;
|
||||||
|
s.i1 = b0;
|
||||||
|
s.i2 = b1;
|
||||||
|
s.i3 = b2;
|
||||||
|
return s.i >> 8;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#else
|
||||||
template<>
|
template<>
|
||||||
struct TripleByteLE<qint32>
|
struct TripleByteLE<qint32>
|
||||||
{
|
{
|
||||||
@ -241,7 +314,46 @@ struct TripleByteLE<qint32>
|
|||||||
return s.i >> 8;
|
return s.i >> 8;
|
||||||
}
|
}
|
||||||
} __attribute__((__packed__));
|
} __attribute__((__packed__));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
template<>
|
||||||
|
struct TripleByteLE<qint64>
|
||||||
|
{
|
||||||
|
uint8_t b0;
|
||||||
|
uint8_t b1;
|
||||||
|
uint8_t b2;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct {
|
||||||
|
qint64 i;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct {
|
||||||
|
uint32_t ia;
|
||||||
|
uint8_t i0;
|
||||||
|
uint8_t i1;
|
||||||
|
uint8_t i2;
|
||||||
|
uint8_t i3;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
} isample;
|
||||||
|
|
||||||
|
operator qint64() const {
|
||||||
|
isample s;
|
||||||
|
s.ia = 0;
|
||||||
|
s.i0 = 0;
|
||||||
|
s.i1 = b0;
|
||||||
|
s.i2 = b1;
|
||||||
|
s.i3 = b2;
|
||||||
|
return s.i >> 40;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
#else
|
||||||
template<>
|
template<>
|
||||||
struct TripleByteLE<qint64>
|
struct TripleByteLE<qint64>
|
||||||
{
|
{
|
||||||
@ -272,7 +384,7 @@ struct TripleByteLE<qint64>
|
|||||||
return s.i >> 40;
|
return s.i >> 40;
|
||||||
}
|
}
|
||||||
} __attribute__((__packed__));
|
} __attribute__((__packed__));
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Decimators with integer input and integer output */
|
/** Decimators with integer input and integer output */
|
||||||
template<typename StorageType, typename T, uint SdrBits, uint InputBits>
|
template<typename StorageType, typename T, uint SdrBits, uint InputBits>
|
||||||
|
Loading…
Reference in New Issue
Block a user