Index: /trunk/src/VBox/Devices/Audio/AudioTest.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/AudioTest.h	(revision 91654)
+++ /trunk/src/VBox/Devices/Audio/AudioTest.h	(revision 91655)
@@ -32,4 +32,10 @@
 /** Prefix for audio test (set) directories. */
 #define AUDIOTEST_PATH_PREFIX_STR       "vkat"
+/** Audio beacon data (single byte) to use for the post beacon (intro). */
+#define AUDIOTEST_BEACON_BYTE_PRE       0x42
+/** Audio beacon data (single byte) to use for the post beacon (outro). */
+#define AUDIOTEST_BEACON_BYTE_POST      0x24
+/** Pre / post audio beacon size (in audio frames). */
+#define AUDIOTEST_BEACON_SIZE_FRAMES    1024
 
 /**
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp	(revision 91654)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp	(revision 91655)
@@ -312,4 +312,11 @@
     Assert(pThis->cTestsRec == 0);
     Assert(pThis->cTestsPlay == 0);
+
+    if (pThis->cbPlayedNoTest)
+    {
+        LogRel2(("ValKit: Warning: Guest was playing back audio when no playback test is active (%RU64 bytes total)\n",
+                 pThis->cbPlayedNoTest));
+        pThis->cbPlayedNoTest = 0;
+    }
 }
 
@@ -517,6 +524,10 @@
     AssertReturn(PDMAudioPropsAreValid(&pTestData->t.TestTone.Parms.Props), VERR_INVALID_PARAMETER);
 
-    pTestData->t.TestTone.u.Play.cbToRead = PDMAudioPropsMilliToBytes(&pTestData->t.TestTone.Parms.Props,
-                                                                      pTestData->t.TestTone.Parms.msDuration);
+    pTestData->t.TestTone.u.Play.cbToRead  = PDMAudioPropsMilliToBytes(&pTestData->t.TestTone.Parms.Props,
+                                                                       pTestData->t.TestTone.Parms.msDuration);
+    uint32_t const cbBeacons = PDMAudioPropsFramesToBytes(&pTestData->t.TestTone.Parms.Props,
+                                                          AUDIOTEST_BEACON_SIZE_FRAMES * 2 /* Pre + post beacon */);
+    pTestData->t.TestTone.u.Play.cbToRead += cbBeacons;
+
     int rc = RTCritSectEnter(&pThis->CritSect);
     if (RT_SUCCESS(rc))
@@ -921,6 +932,4 @@
     if (pTst == NULL) /* Empty list? */
     {
-        LogRel2(("ValKit: Warning: Guest is playing back audio when no playback test is active\n"));
-
         pThis->cbPlayedNoTest += cbBuf;
 
@@ -931,5 +940,5 @@
     if (pThis->cbPlayedNoTest)
     {
-        LogRel(("ValKit: Warning: Guest was playing back audio (%RU32 bytes, %RU64ms) when no playback test is active\n",
+        LogRel(("ValKit: Warning: Guest was playing back audio (%RU64 bytes, %RU64ms) when no playback test is active\n",
                 pThis->cbPlayedNoTest, PDMAudioPropsBytesToMilli(&pStream->pStream->Cfg.Props, pThis->cbPlayedNoTest)));
         pThis->cbPlayedNoTest = 0;
@@ -943,5 +952,5 @@
     {
         if (pThis->cbPlayedSilence)
-            LogRel(("ValKit: Guest was playing back %RU32 bytes (%RU64ms) of silence\n",
+            LogRel(("ValKit: Guest was playing back %RU64 bytes (%RU64ms) of silence\n",
                     pThis->cbPlayedSilence, PDMAudioPropsBytesToMilli(&pStream->pStream->Cfg.Props, pThis->cbPlayedSilence)));
         pThis->cbPlayedSilence = 0;
Index: /trunk/src/VBox/ValidationKit/utils/audio/vkatCommon.cpp
===================================================================
--- /trunk/src/VBox/ValidationKit/utils/audio/vkatCommon.cpp	(revision 91654)
+++ /trunk/src/VBox/ValidationKit/utils/audio/vkatCommon.cpp	(revision 91655)
@@ -524,6 +524,7 @@
         uint32_t cbPlayedTotal  = 0;
 
-        /* We play a pre + post beacon before + after the actual test tone with exactly 1024 audio frames. */
-        uint32_t const cbBeacon       = PDMAudioPropsFramesToBytes(&pStream->Cfg.Props, 1024);
+        /* We play a pre + post beacon before + after the actual test tone
+         * with exactly AUDIOTEST_BEACON_SIZE_FRAMES audio frames. */
+        uint32_t const cbBeacon       = PDMAudioPropsFramesToBytes(&pStream->Cfg.Props, AUDIOTEST_BEACON_SIZE_FRAMES);
         uint32_t       cbBeaconToPlay = cbBeacon;
         uint32_t       cbBeaconPlayed = 0;
@@ -588,5 +589,7 @@
                     /* Limit to exactly one beacon (pre or post). */
                     cbToPlay = RT_MIN(sizeof(abBuf), RT_MIN(cbCanWrite, cbBeaconToPlay - cbBeaconPlayed));
-                    memset(abBuf, 0x42 /* Our actual beacon data, hopefully the answer to all ... */, cbToPlay);
+                    memset(abBuf,
+                           cbPlayedTotal >= cbToPlayTotal - cbBeaconToPlay ? AUDIOTEST_BEACON_BYTE_POST : AUDIOTEST_BEACON_BYTE_PRE,
+                           cbToPlay);
 
                     rc = AudioTestMixStreamPlay(&pStream->Mix, abBuf, cbToPlay, &cbPlayed);
