win32: Don't use __attribute__ on MSVC

Use MSVC-equivalents for alignment and packing compiler directives when building
on MSVC
This commit is contained in:
Nirbheek Chauhan 2016-02-25 05:17:51 +05:30 committed by Tim-Philipp Müller
parent 63803bfac0
commit bbde949e8e
3 changed files with 23 additions and 6 deletions

View file

@ -10,7 +10,11 @@
#include "dboolhuff.h"
#ifdef _MSC_VER
__declspec(align(16)) const unsigned char vp8_norm[256] = {
#else
const unsigned char vp8_norm[256] __attribute__ ((aligned (16))) = {
#endif
0, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

View file

@ -31,7 +31,11 @@ typedef struct
unsigned int range;
} BOOL_DECODER;
#ifdef _MSC_VER
__declspec(align(16)) extern const unsigned char vp8_norm[256];
#else
extern const unsigned char vp8_norm[256] __attribute__((aligned(16)));
#endif
int vp8dx_start_decode(BOOL_DECODER *br,
const unsigned char *source,

View file

@ -33,8 +33,12 @@
#define DEFAULT_MIN_FRAMES 0
#define RTP_SBC_HEADER_TOTAL (12 + RTP_SBC_PAYLOAD_HEADER_SIZE)
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
/* BEGIN: Packing for rtp_payload */
#ifdef _MSC_VER
#pragma pack(push, 1)
#endif
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
/* FIXME: this seems all a bit over the top for a single byte.. */
struct rtp_payload
{
@ -43,10 +47,8 @@ struct rtp_payload
guint8 is_last_fragment:1;
guint8 is_first_fragment:1;
guint8 is_fragmented:1;
} __attribute__ ((packed));
}
#elif G_BYTE_ORDER == G_BIG_ENDIAN
struct rtp_payload
{
guint8 is_fragmented:1;
@ -54,12 +56,19 @@ struct rtp_payload
guint8 is_last_fragment:1;
guint8 rfa0:1;
guint8 frame_count:4;
} __attribute__ ((packed));
}
#else
#error "Unknown byte order"
#endif
#ifdef _MSC_VER
;
#pragma pack(pop)
#else
__attribute__ ((packed));
#endif
/* END: Packing for rtp_payload */
enum
{
PROP_0,