diff --git a/MacOSX/codecs/include/opus/opus_defines.h b/MacOSX/codecs/include/opus/opus_defines.h
index 0b8d8bb8..d2b260e8 100644
--- a/MacOSX/codecs/include/opus/opus_defines.h
+++ b/MacOSX/codecs/include/opus/opus_defines.h
@@ -64,14 +64,14 @@ extern "C" {
/**Export control for opus functions */
#ifndef OPUS_EXPORT
-# if defined(__GNUC__) && defined(OPUS_BUILD)
-# define OPUS_EXPORT __attribute__ ((visibility ("default")))
-# elif defined(WIN32) && !defined(__MINGW32__)
+# if defined(WIN32)
# ifdef OPUS_BUILD
# define OPUS_EXPORT __declspec(dllexport)
# else
# define OPUS_EXPORT
# endif
+# elif defined(__GNUC__) && defined(OPUS_BUILD)
+# define OPUS_EXPORT __attribute__ ((visibility ("default")))
# else
# define OPUS_EXPORT
# endif
diff --git a/MacOSX/codecs/include/opus/opus_multistream.h b/MacOSX/codecs/include/opus/opus_multistream.h
index 64427870..965d54ab 100644
--- a/MacOSX/codecs/include/opus/opus_multistream.h
+++ b/MacOSX/codecs/include/opus/opus_multistream.h
@@ -205,6 +205,12 @@ OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size
int coupled_streams
);
+OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size(
+ int channels,
+ int mapping_family
+);
+
+
/** Allocates and initializes a multistream encoder state.
* Call opus_multistream_encoder_destroy() to release
* this object when finished.
@@ -258,6 +264,17 @@ OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_crea
int *error
) OPUS_ARG_NONNULL(5);
+OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create(
+ opus_int32 Fs,
+ int channels,
+ int mapping_family,
+ int *streams,
+ int *coupled_streams,
+ unsigned char *mapping,
+ int application,
+ int *error
+) OPUS_ARG_NONNULL(5);
+
/** Initialize a previously allocated multistream encoder state.
* The memory pointed to by \a st must be at least the size returned by
* opus_multistream_encoder_get_size().
@@ -316,6 +333,17 @@ OPUS_EXPORT int opus_multistream_encoder_init(
int application
) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
+OPUS_EXPORT int opus_multistream_surround_encoder_init(
+ OpusMSEncoder *st,
+ opus_int32 Fs,
+ int channels,
+ int mapping_family,
+ int *streams,
+ int *coupled_streams,
+ unsigned char *mapping,
+ int application
+) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
+
/** Encodes a multistream Opus frame.
* @param st OpusMSEncoder*: Multistream encoder state.
* @param[in] pcm const opus_int16*: The input signal as interleaved
diff --git a/MacOSX/codecs/lib/libopus.dylib b/MacOSX/codecs/lib/libopus.dylib
index d73c7a0e..b02f49d2 100755
Binary files a/MacOSX/codecs/lib/libopus.dylib and b/MacOSX/codecs/lib/libopus.dylib differ
diff --git a/Windows/codecs/include/opus/opus_defines.h b/Windows/codecs/include/opus/opus_defines.h
index 0b8d8bb8..d2b260e8 100644
--- a/Windows/codecs/include/opus/opus_defines.h
+++ b/Windows/codecs/include/opus/opus_defines.h
@@ -64,14 +64,14 @@ extern "C" {
/**Export control for opus functions */
#ifndef OPUS_EXPORT
-# if defined(__GNUC__) && defined(OPUS_BUILD)
-# define OPUS_EXPORT __attribute__ ((visibility ("default")))
-# elif defined(WIN32) && !defined(__MINGW32__)
+# if defined(WIN32)
# ifdef OPUS_BUILD
# define OPUS_EXPORT __declspec(dllexport)
# else
# define OPUS_EXPORT
# endif
+# elif defined(__GNUC__) && defined(OPUS_BUILD)
+# define OPUS_EXPORT __attribute__ ((visibility ("default")))
# else
# define OPUS_EXPORT
# endif
diff --git a/Windows/codecs/include/opus/opus_multistream.h b/Windows/codecs/include/opus/opus_multistream.h
index 64427870..965d54ab 100644
--- a/Windows/codecs/include/opus/opus_multistream.h
+++ b/Windows/codecs/include/opus/opus_multistream.h
@@ -205,6 +205,12 @@ OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size
int coupled_streams
);
+OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size(
+ int channels,
+ int mapping_family
+);
+
+
/** Allocates and initializes a multistream encoder state.
* Call opus_multistream_encoder_destroy() to release
* this object when finished.
@@ -258,6 +264,17 @@ OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_crea
int *error
) OPUS_ARG_NONNULL(5);
+OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create(
+ opus_int32 Fs,
+ int channels,
+ int mapping_family,
+ int *streams,
+ int *coupled_streams,
+ unsigned char *mapping,
+ int application,
+ int *error
+) OPUS_ARG_NONNULL(5);
+
/** Initialize a previously allocated multistream encoder state.
* The memory pointed to by \a st must be at least the size returned by
* opus_multistream_encoder_get_size().
@@ -316,6 +333,17 @@ OPUS_EXPORT int opus_multistream_encoder_init(
int application
) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
+OPUS_EXPORT int opus_multistream_surround_encoder_init(
+ OpusMSEncoder *st,
+ opus_int32 Fs,
+ int channels,
+ int mapping_family,
+ int *streams,
+ int *coupled_streams,
+ unsigned char *mapping,
+ int application
+) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
+
/** Encodes a multistream Opus frame.
* @param st OpusMSEncoder*: Multistream encoder state.
* @param[in] pcm const opus_int16*: The input signal as interleaved
diff --git a/Windows/codecs/x64/libopus-0.dll b/Windows/codecs/x64/libopus-0.dll
index 8725f430..c16fea30 100644
Binary files a/Windows/codecs/x64/libopus-0.dll and b/Windows/codecs/x64/libopus-0.dll differ
diff --git a/Windows/codecs/x64/libopus.dll.a b/Windows/codecs/x64/libopus.dll.a
index 263d3d76..7a345dab 100644
Binary files a/Windows/codecs/x64/libopus.dll.a and b/Windows/codecs/x64/libopus.dll.a differ
diff --git a/Windows/codecs/x64/libopus.lib b/Windows/codecs/x64/libopus.lib
index 656f8abe..e382314c 100644
Binary files a/Windows/codecs/x64/libopus.lib and b/Windows/codecs/x64/libopus.lib differ
diff --git a/Windows/codecs/x86/libopus-0.dll b/Windows/codecs/x86/libopus-0.dll
index 9c3e6e29..a918850e 100644
Binary files a/Windows/codecs/x86/libopus-0.dll and b/Windows/codecs/x86/libopus-0.dll differ
diff --git a/Windows/codecs/x86/libopus.dll.a b/Windows/codecs/x86/libopus.dll.a
index f2bb7b20..035b8d89 100644
Binary files a/Windows/codecs/x86/libopus.dll.a and b/Windows/codecs/x86/libopus.dll.a differ
diff --git a/Windows/codecs/x86/libopus.lib b/Windows/codecs/x86/libopus.lib
index e51d8ae6..3aaa6dbb 100644
Binary files a/Windows/codecs/x86/libopus.lib and b/Windows/codecs/x86/libopus.lib differ