Alexandre Julliard : faudio: Import upstream release 21.11.

Alexandre Julliard julliard at winehq.org
Tue Nov 2 17:27:45 CDT 2021


Module: wine
Branch: master
Commit: da89825f98e4f0cb3875735345a455512b36b665
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=da89825f98e4f0cb3875735345a455512b36b665

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Nov  2 10:25:12 2021 +0100

faudio: Import upstream release 21.11.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/faudio/include/FAudio.h            |  2 +-
 libs/faudio/src/FACT.c                  | 17 +++--------------
 libs/faudio/src/FAudio.c                |  4 +++-
 libs/faudio/src/FAudioFX_reverb.c       |  6 ++++--
 libs/faudio/src/FAudio_platform_win32.c | 10 ++++++----
 5 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/libs/faudio/include/FAudio.h b/libs/faudio/include/FAudio.h
index 046e7f4098c..6f68013d79f 100644
--- a/libs/faudio/include/FAudio.h
+++ b/libs/faudio/include/FAudio.h
@@ -485,7 +485,7 @@ extern FAudioGUID DATAFORMAT_SUBTYPE_IEEE_FLOAT;
 
 #define FAUDIO_ABI_VERSION	 0
 #define FAUDIO_MAJOR_VERSION	21
-#define FAUDIO_MINOR_VERSION	10
+#define FAUDIO_MINOR_VERSION	11
 #define FAUDIO_PATCH_VERSION	 0
 
 #define FAUDIO_COMPILED_VERSION ( \
diff --git a/libs/faudio/src/FACT.c b/libs/faudio/src/FACT.c
index 5eca83b389f..bca46d38824 100644
--- a/libs/faudio/src/FACT.c
+++ b/libs/faudio/src/FACT.c
@@ -2415,20 +2415,7 @@ uint32_t FACTCue_Destroy(FACTCue *pCue)
 	FAudio_assert(cue != NULL && "Could not find Cue reference!");
 
 	pCue->parentBank->parentEngine->pFree(pCue->variableValues);
-	if (pCue->notifyOnDestroy || pCue->parentBank->parentEngine->notifications & NOTIFY_CUEDESTROY)
-	{
-		note.type = FACTNOTIFICATIONTYPE_CUEDESTROYED;
-		note.cue.pCue = pCue;
-		if (pCue->parentBank->parentEngine->notifications & NOTIFY_CUEDESTROY)
-		{
-			note.pvContext = pCue->parentBank->parentEngine->cue_context;
-		}
-		else
-		{
-			note.pvContext = pCue->usercontext;
-		}
-		pCue->parentBank->parentEngine->notificationCallback(&note);
-	}
+	FACT_INTERNAL_SendCueNotification(pCue, NOTIFY_CUEDESTROY, FACTNOTIFICATIONTYPE_CUEDESTROYED);
 
 	mutex = pCue->parentBank->parentEngine->apiLock;
 	pCue->parentBank->parentEngine->pFree(pCue);
@@ -2679,6 +2666,8 @@ uint32_t FACTCue_Stop(FACTCue *pCue, uint32_t dwFlags)
 		}
 	}
 
+	FACT_INTERNAL_SendCueNotification(pCue, NOTIFY_CUESTOP, FACTNOTIFICATIONTYPE_CUESTOP);
+
 	FAudio_PlatformUnlockMutex(pCue->parentBank->parentEngine->apiLock);
 	return 0;
 }
diff --git a/libs/faudio/src/FAudio.c b/libs/faudio/src/FAudio.c
index 81363b983c7..ff373ef8dbb 100644
--- a/libs/faudio/src/FAudio.c
+++ b/libs/faudio/src/FAudio.c
@@ -2453,7 +2453,9 @@ uint32_t FAudioSourceVoice_SubmitSourceBuffer(
 
 	FAudio_assert(voice->type == FAUDIO_VOICE_SOURCE);
 #ifdef HAVE_WMADEC
-	FAudio_assert(	(voice->src.wmadec != NULL && (pBufferWMA != NULL || voice->src.format->wFormatTag == FAUDIO_FORMAT_XMAUDIO2)) ||
+	FAudio_assert(	(voice->src.wmadec != NULL && (pBufferWMA != NULL ||
+					(voice->src.format->wFormatTag == FAUDIO_FORMAT_XMAUDIO2 ||
+					 voice->src.format->wFormatTag == FAUDIO_FORMAT_EXTENSIBLE))) ||
 			(voice->src.wmadec == NULL && (pBufferWMA == NULL && voice->src.format->wFormatTag != FAUDIO_FORMAT_XMAUDIO2))	);
 #endif /* HAVE_WMADEC */
 
diff --git a/libs/faudio/src/FAudioFX_reverb.c b/libs/faudio/src/FAudioFX_reverb.c
index 4d43fa4e76c..79c4151c2d9 100644
--- a/libs/faudio/src/FAudioFX_reverb.c
+++ b/libs/faudio/src/FAudioFX_reverb.c
@@ -507,7 +507,8 @@ static FAudio_ChannelPositionFlags FAudio_GetChannelPositionFlags(int32_t total_
 				case 3:
 					return Position_Right | Position_Rear;
 			}
-
+			FAudio_assert(0 && "Unsupported channel count");
+			break;
 		case 5:
 			switch (channel)
 			{
@@ -522,7 +523,8 @@ static FAudio_ChannelPositionFlags FAudio_GetChannelPositionFlags(int32_t total_
 				case 4:
 					return Position_Right | Position_Rear;
 			}
-
+			FAudio_assert(0 && "Unsupported channel count");
+			break;
 		default:
 			FAudio_assert(0 && "Unsupported channel count");
 			break;
diff --git a/libs/faudio/src/FAudio_platform_win32.c b/libs/faudio/src/FAudio_platform_win32.c
index f70e260c542..ccb8d8abbbf 100644
--- a/libs/faudio/src/FAudio_platform_win32.c
+++ b/libs/faudio/src/FAudio_platform_win32.c
@@ -228,8 +228,8 @@ void FAudio_PlatformInit(
 	FAudio_assert(!FAILED(hr) && "Failed to create audio client!");
 	IMMDevice_Release(device);
 
-	if (flags & FAUDIO_1024_QUANTUM) duration = 21330;
-	else duration = 30000;
+	if (flags & FAUDIO_1024_QUANTUM) duration = 213333;
+	else duration = 100000;
 
 	hr = IAudioClient_IsFormatSupported(
 		data->client,
@@ -250,7 +250,7 @@ void FAudio_PlatformInit(
 		data->client,
 		AUDCLNT_SHAREMODE_SHARED,
 		AUDCLNT_STREAMFLAGS_EVENTCALLBACK,
-		duration,
+		duration * 3,
 		0,
 		&args->format.Format,
 		&GUID_NULL
@@ -287,7 +287,8 @@ void FAudio_PlatformInit(
 	args->events[0] = audioEvent;
 	args->events[1] = data->stopEvent;
 	args->audio = audio;
-	args->updateSize = args->format.Format.nSamplesPerSec / 100;
+	if (flags & FAUDIO_1024_QUANTUM) args->updateSize = args->format.Format.nSamplesPerSec / (1000.0 / (64.0 / 3.0));
+	else args->updateSize = args->format.Format.nSamplesPerSec / 100;
 
 	data->audioThread = CreateThread(NULL, 0, &FAudio_AudioClientThread, args, 0, NULL);
 	FAudio_assert(!!data->audioThread && "Failed to create audio client thread!");
@@ -622,6 +623,7 @@ static int FAUDIOCALL FAudio_mem_close(void *data)
 {
 	if (!data) return 0;
 	FAudio_free(data);
+	return 0;
 }
 
 FAudioIOStream* FAudio_memopen(void *mem, int len)




More information about the wine-cvs mailing list