summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-02-25 05:17:51 +0530
committerTim-Philipp Müller <tim@centricular.com>2016-03-10 10:01:19 +0000
commitbbde949e8eb89586f2a3fd2e788133340750cb42 (patch)
tree6f97a92f3a195ec28dc6d8fa603eb02db093c727
parent63803bfac086035368ecd3314439bb7321769ce2 (diff)
downloadgstreamer-plugins-good-bbde949e8eb89586f2a3fd2e788133340750cb42.tar.gz
win32: Don't use __attribute__ on MSVC
Use MSVC-equivalents for alignment and packing compiler directives when building on MSVC
-rw-r--r--gst/rtp/dboolhuff.c4
-rw-r--r--gst/rtp/dboolhuff.h4
-rw-r--r--gst/rtp/gstrtpsbcpay.c21
3 files changed, 23 insertions, 6 deletions
diff --git a/gst/rtp/dboolhuff.c b/gst/rtp/dboolhuff.c
index 0e1fd6e2f..6c9450487 100644
--- a/gst/rtp/dboolhuff.c
+++ b/gst/rtp/dboolhuff.c
@@ -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,
diff --git a/gst/rtp/dboolhuff.h b/gst/rtp/dboolhuff.h
index 41b0f5d9a..e0a45a223 100644
--- a/gst/rtp/dboolhuff.h
+++ b/gst/rtp/dboolhuff.h
@@ -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,
diff --git a/gst/rtp/gstrtpsbcpay.c b/gst/rtp/gstrtpsbcpay.c
index 70cde0915..b01240759 100644
--- a/gst/rtp/gstrtpsbcpay.c
+++ b/gst/rtp/gstrtpsbcpay.c
@@ -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,