diff --git a/Alc/backends/opensl.c b/Alc/backends/opensl.c index 405f66af..962cbef3 100644 --- a/Alc/backends/opensl.c +++ b/Alc/backends/opensl.c @@ -28,7 +28,7 @@ #include -#if 1 +#ifdef HAVE_ANDROID #include #else extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE; @@ -152,9 +152,11 @@ static const char *res_str(SLresult result) case SL_RESULT_UNKNOWN_ERROR: return "Unknown error"; case SL_RESULT_OPERATION_ABORTED: return "Operation aborted"; case SL_RESULT_CONTROL_LOST: return "Control lost"; +#ifdef HAVE_OPENSL_1_1 case SL_RESULT_READONLY: return "ReadOnly"; case SL_RESULT_ENGINEOPTION_UNSUPPORTED: return "Engine option unsupported"; case SL_RESULT_SOURCE_SINK_INCOMPATIBLE: return "Source/Sink incompatible"; +#endif } return "Unknown error code"; } @@ -292,7 +294,15 @@ static ALCboolean opensl_reset_playback(ALCdevice *Device) format_pcm.bitsPerSample = BytesFromDevFmt(Device->FmtType) * 8; format_pcm.containerSize = format_pcm.bitsPerSample; format_pcm.channelMask = GetChannelMask(Device->FmtChans); +#ifdef HAVE_OPENSL_1_1 format_pcm.endianness = SL_BYTEORDER_NATIVE; +#else +#if _BYTE_ORDER == _BIG_ENDIAN + format_pcm.endianness = SL_BYTEORDER_BIGENDIAN; +#else + format_pcm.endianness = SL_BYTEORDER_LITTLEENDIAN; +#endif +#endif audioSrc.pLocator = &loc_bufq; audioSrc.pFormat = &format_pcm; diff --git a/CMakeLists.txt b/CMakeLists.txt index bfa96788..5afeaef8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -612,6 +612,10 @@ IF(OPENSL) CHECK_SHARED_FUNCTION_EXISTS(slCreateEngine "SLES/OpenSLES.h" OpenSLES "" HAVE_LIBOPENSLES) IF(HAVE_LIBOPENSLES) SET(HAVE_OPENSL 1) + CHECK_SYMBOL_EXISTS(SL_BYTEORDER_NATIVE "SLES/OpenSLES.h" HAVE_OPENSLES_1_1) + IF (HAVE_OPENSLES_1_1) + SET(HAVE_OPENSL_1_1 1) + ENDIF() SET(ALC_OBJS ${ALC_OBJS} Alc/backends/opensl.c) SET(BACKENDS "${BACKENDS} OpenSL,") SET(EXTRA_LIBS OpenSLES ${EXTRA_LIBS}) diff --git a/config.h.in b/config.h.in index 34c4afa8..dabc9c60 100644 --- a/config.h.in +++ b/config.h.in @@ -38,6 +38,9 @@ /* Define if we have the OpenSL backend */ #cmakedefine HAVE_OPENSL +/* Define if we have the OpenSL 1.1 backend */ +#cmakedefine HAVE_OPENSL_1_1 + /* Define if we have the Android backend */ #cmakedefine HAVE_ANDROID