Changeset 89456 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Jun 2, 2021 8:43:16 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144810
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioTestService.cpp
r89431 r89456 588 588 589 589 /** 590 * Verifies and processes a "T ONE PLAY" request.590 * Verifies and processes a "TN PLY" request. 591 591 * 592 592 * @returns IPRT status code. … … 610 610 PATSPKTREQTONEPLAY pReq = (PATSPKTREQTONEPLAY)pPktHdr; 611 611 rc = pThis->Callbacks.pfnTonePlay(pThis->Callbacks.pvUser, &pReq->StreamCfg, &pReq->ToneParms); 612 613 int rc2 = atsReplyAck(pThis, pClient, pPktHdr); 614 if (RT_SUCCESS(rc)) 615 rc = rc2; 616 617 return rc; 618 } 619 620 /** 621 * Verifies and processes a "TN REC" request. 622 * 623 * @returns IPRT status code. 624 * @param pThis The ATS instance. 625 * @param pClient The ATS client structure. 626 * @param pPktHdr The packet header. 627 */ 628 static int atsDoToneRecord(PATSSERVER pThis, PATSCLIENTINST pClient, PCATSPKTHDR pPktHdr) 629 { 630 int rc = VINF_SUCCESS; 631 632 if (pPktHdr->cb < sizeof(ATSPKTREQTONEREC)) 633 return atsReplyBadSize(pThis, pClient, pPktHdr, sizeof(ATSPKTREQTONEREC)); 634 635 if (pClient->enmState != ATSCLIENTSTATE_READY) 636 return atsReplyInvalidState(pThis, pClient, pPktHdr); 637 638 if (!pThis->Callbacks.pfnToneRecord) 639 return atsReplyRC(pThis, pClient, pPktHdr, VERR_NOT_SUPPORTED, "Recording tones not supported"); 640 641 PATSPKTREQTONEREC pReq = (PATSPKTREQTONEREC)pPktHdr; 642 rc = pThis->Callbacks.pfnToneRecord(pThis->Callbacks.pvUser, &pReq->StreamCfg, &pReq->ToneParms); 612 643 613 644 int rc2 = atsReplyAck(pThis, pClient, pPktHdr); … … 651 682 else if (atsIsSameOpcode(pPktHdr, ATSPKT_OPCODE_TONE_PLAY)) 652 683 rc = atsDoTonePlay(pThis, pClient, pPktHdr); 684 else if (atsIsSameOpcode(pPktHdr, ATSPKT_OPCODE_TONE_RECORD)) 685 rc = atsDoToneRecord(pThis, pClient, pPktHdr); 653 686 /* Misc: */ 654 687 else -
trunk/src/VBox/Devices/Audio/AudioTestService.h
r89431 r89456 60 60 */ 61 61 DECLR3CALLBACKMEMBER(int, pfnTonePlay, (void const *pvUser, PPDMAUDIOSTREAMCFG pStreamCfg, PAUDIOTESTTONEPARMS pToneParms)); 62 63 /** 64 * Records a test tone. 65 * 66 * @returns VBox status code. 67 * @param pvUser User-supplied pointer to context data. Optional. 68 * @param pStreamCfg Audio stream configuration to use for stream to play tone on. 69 * @param cMsDelay Delay (in ms) before start recording. 70 * @param cMsDuration Duration (in ms) to record. 71 */ 72 DECLR3CALLBACKMEMBER(int, pfnToneRecord, (void const *pvUser, PPDMAUDIOSTREAMCFG pStreamCfg, PAUDIOTESTTONEPARMS pToneParms)); 73 62 74 /** Pointer to opaque user-provided context data. */ 63 75 void const *pvUser; -
trunk/src/VBox/Devices/Audio/AudioTestServiceClient.cpp
r89431 r89456 376 376 377 377 /** 378 * Tells the server to record a (test) tone. 379 * 380 * @returns VBox status code. 381 * @param pClient Client to issue command for. 382 * @param pStreamCfg Audio stream configuration to use. 383 * @param pToneParms Tone parameters to use. 384 * @note How (and if) the server plays a tone depends on the actual implementation side. 385 */ 386 int AudioTestSvcClientToneRecord(PATSCLIENT pClient, PPDMAUDIOSTREAMCFG pStreamCfg, PAUDIOTESTTONEPARMS pToneParms) 387 { 388 ATSPKTREQTONEREC Req; 389 390 memcpy(&Req.StreamCfg, pStreamCfg, sizeof(PDMAUDIOSTREAMCFG)); 391 memcpy(&Req.ToneParms, pToneParms, sizeof(AUDIOTESTTONEPARMS)); 392 393 audioTestSvcClientReqHdrInit(&Req.Hdr, sizeof(Req), ATSPKT_OPCODE_TONE_RECORD, 0); 394 395 int rc = audioTestSvcClientSendMsg(pClient, &Req, sizeof(Req), NULL, 0); 396 if (RT_SUCCESS(rc)) 397 rc = audioTestSvcClientRecvAck(pClient); 398 399 return rc; 400 } 401 402 /** 378 403 * Disconnects from an ATS server. 379 404 * -
trunk/src/VBox/Devices/Audio/AudioTestServiceClient.h
r89431 r89456 34 34 int AudioTestSvcClientTestSetEnd(PATSCLIENT pClient, const char *pszTag); 35 35 int AudioTestSvcClientTonePlay(PATSCLIENT pClient, PPDMAUDIOSTREAMCFG pStreamCfg, PAUDIOTESTTONEPARMS pToneParms); 36 int AudioTestSvcClientToneRecord(PATSCLIENT pClient, PPDMAUDIOSTREAMCFG pStreamCfg, PAUDIOTESTTONEPARMS pToneParms); 36 37 int AudioTestSvcClientClose(PATSCLIENT pClient); 37 38 -
trunk/src/VBox/Devices/Audio/AudioTestServiceProtocol.h
r89431 r89456 153 153 typedef ATSPKTREQTSETEND *PATSPKTREQTSETEND; 154 154 155 #define ATSPKT_OPCODE_TONE_PLAY "TN PLY"156 157 /** 158 * The T ONE PLAY request structure.155 #define ATSPKT_OPCODE_TONE_PLAY "TN PLY " 156 157 /** 158 * The TN PLY request structure. 159 159 */ 160 160 typedef struct ATSPKTREQTONEPLAY … … 177 177 typedef ATSPKTREQTONEPLAY *PATSPKTREQTONEPLAY; 178 178 179 #define ATSPKT_OPCODE_TONE_RECORD "TN REC " 180 181 /** 182 * The TN REC request structure. 183 */ 184 typedef struct ATSPKTREQTONEREC 185 { 186 /** Embedded packet header. */ 187 ATSPKTHDR Hdr; 188 /** Stream configuration to use for recording the tone. 189 * Note: Depending on the actual implementation this configuration might or might not be available / supported. */ 190 PDMAUDIOSTREAMCFG StreamCfg; 191 /** Test tone parameters for playback. */ 192 AUDIOTESTTONEPARMS ToneParms; 193 #if HC_ARCH_BITS == 64 194 uint8_t aPadding[4+8]; 195 #else 196 uint8_t aPadding[6+8]; 197 #endif 198 } ATSPKTREQTONEREC; 199 AssertCompileSizeAlignment(ATSPKTREQTONEREC, ATSPKT_ALIGNMENT); 200 /** Pointer to a ATSPKTREQTONEREC structure. */ 201 typedef ATSPKTREQTONEREC *PATSPKTREQTONEREC; 202 179 203 /* No additional structure for the reply (just standard STATUS packet). */ 180 204
Note:
See TracChangeset
for help on using the changeset viewer.