- Timestamp:
- Jul 4, 2021 8:26:51 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 145500
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioHlp.cpp
r90010 r90011 242 242 * @param pszPath Base path to use. If NULL or empty, the user's 243 243 * temporary directory will be used. 244 * @param pszName A name for better identifying the file. 244 * @param pszNameFmt A name for better identifying the file. 245 * @param va Arguments for @a pszNameFmt. 245 246 * @param uInstance Device / driver instance which is using this file. 246 247 * @param enmType Audio file type to construct file name for. … … 248 249 * @param chTweak Retry tweak character. 249 250 */ 250 static int audioHlpConstructPathWorker(char *pszDst, size_t cbDst, const char *pszPath, const char *pszName ,251 static int audioHlpConstructPathWorker(char *pszDst, size_t cbDst, const char *pszPath, const char *pszNameFmt, va_list va, 251 252 uint32_t uInstance, AUDIOHLPFILETYPE enmType, uint32_t fFlags, char chTweak) 252 253 { … … 255 256 */ 256 257 AssertPtrNullReturn(pszPath, VERR_INVALID_POINTER); 257 AssertPtrReturn(pszName , VERR_INVALID_POINTER);258 AssertPtrReturn(pszNameFmt, VERR_INVALID_POINTER); 258 259 AssertReturn(!(fFlags & ~AUDIOHLPFILENAME_FLAGS_VALID_MASK), VERR_INVALID_FLAGS); 259 260 … … 319 320 320 321 /* Append the filename, instance, retry-tweak and suffix. */ 322 va_list vaCopy; 323 va_copy(vaCopy, va); 321 324 ssize_t cchTail; 322 325 if (chTweak == '\0') 323 cchTail = RTStrPrintf2(&pszDst[offDst], cbDst - offDst, "% s-%u%s", pszName, uInstance, pszSuffix);326 cchTail = RTStrPrintf2(&pszDst[offDst], cbDst - offDst, "%N-%u%s", pszNameFmt, &vaCopy, uInstance, pszSuffix); 324 327 else 325 cchTail = RTStrPrintf2(&pszDst[offDst], cbDst - offDst, "%s-%u%c%s", pszName, uInstance, chTweak, pszSuffix); 328 cchTail = RTStrPrintf2(&pszDst[offDst], cbDst - offDst, "%N-%u%c%s", pszNameFmt, &vaCopy, uInstance, chTweak, pszSuffix); 329 va_end(vaCopy); 326 330 AssertReturn(cchTail > 0, VERR_BUFFER_OVERFLOW); 327 331 … … 329 333 } 330 334 331 /** 332 * Constructs an unique file name, based on the given path and the audio file type. 335 336 /** 337 * Worker for AudioHlpFileCreateF and AudioHlpFileCreateAndOpenEx that allocates 338 * and initializes a AUDIOHLPFILE instance. 339 */ 340 static int audioHlpFileCreateWorker(PAUDIOHLPFILE *ppFile, uint32_t fFlags, AUDIOHLPFILETYPE enmType, const char *pszPath) 341 { 342 AssertReturn(!(fFlags & ~AUDIOHLPFILE_FLAGS_VALID_MASK), VERR_INVALID_FLAGS); 343 344 size_t const cbPath = strlen(pszPath) + 1; 345 PAUDIOHLPFILE pFile = (PAUDIOHLPFILE)RTMemAllocVar(RT_UOFFSETOF_DYN(AUDIOHLPFILE, szName[cbPath])); 346 AssertPtrReturn(pFile, VERR_NO_MEMORY); 347 348 pFile->enmType = enmType; 349 pFile->fFlags = fFlags; 350 pFile->hFile = NIL_RTFILE; 351 pFile->pvData = NULL; 352 pFile->cbData = 0; 353 memcpy(pFile->szName, pszPath, cbPath); 354 355 *ppFile = pFile; 356 return VINF_SUCCESS; 357 } 358 359 360 /** 361 * Creates an instance of AUDIOHLPFILE with the given filename and type. 362 * 363 * @note This does <b>NOT</b> create the file, see AudioHlpFileOpen for that. 333 364 * 334 365 * @returns VBox status code. 335 * @param pszDst Where to store the constructed file name. 336 * @param cbDst Size of the destination buffer (bytes; incl terminator). 337 * @param pszPath Base path to use. If NULL or empty, the user's 338 * temporary directory will be used. 339 * @param pszName A name for better identifying the file. 340 * @param uInstance Device / driver instance which is using this file. 341 * @param enmType Audio file type to construct file name for. 342 * @param fFlags File naming flags, AUDIOHLPFILENAME_FLAGS_XXX. 343 */ 344 int AudioHlpFileNameGet(char *pszDst, size_t cbDst, const char *pszPath, const char *pszName, 345 uint32_t uInstance, AUDIOHLPFILETYPE enmType, uint32_t fFlags) 346 { 347 return audioHlpConstructPathWorker(pszDst, cbDst, pszPath, pszName, uInstance, enmType, fFlags, '\0'); 348 } 349 350 /** 351 * Creates an audio file. 352 * 353 * @returns VBox status code. 354 * @param enmType Audio file type to open / create. 355 * @param pszFile File path of file to open or create. 356 * @param fFlags Audio file flags, AUDIOHLPFILE_FLAGS_XXX. 357 * @param ppFile Where to store the created audio file handle. 358 * Needs to be destroyed with AudioHlpFileDestroy(). 359 */ 360 int AudioHlpFileCreate(AUDIOHLPFILETYPE enmType, const char *pszFile, uint32_t fFlags, PAUDIOHLPFILE *ppFile) 361 { 362 AssertPtrReturn(pszFile, VERR_INVALID_POINTER); 363 /** @todo Validate fFlags. */ 364 365 PAUDIOHLPFILE pFile = (PAUDIOHLPFILE)RTMemAlloc(sizeof(AUDIOHLPFILE)); 366 if (!pFile) 367 return VERR_NO_MEMORY; 368 369 int rc = VINF_SUCCESS; 370 371 switch (enmType) 372 { 373 case AUDIOHLPFILETYPE_RAW: 374 case AUDIOHLPFILETYPE_WAV: 375 pFile->enmType = enmType; 376 break; 377 378 default: 379 rc = VERR_INVALID_PARAMETER; 380 break; 381 } 382 383 if (RT_SUCCESS(rc)) 384 { 385 RTStrPrintf(pFile->szName, RT_ELEMENTS(pFile->szName), "%s", pszFile); 386 pFile->hFile = NIL_RTFILE; 387 pFile->fFlags = fFlags; 388 pFile->pvData = NULL; 389 pFile->cbData = 0; 390 } 391 392 if (RT_FAILURE(rc)) 393 { 394 RTMemFree(pFile); 395 pFile = NULL; 396 } 397 else 398 *ppFile = pFile; 399 400 return rc; 401 } 366 * @param ppFile Where to return the pointer to the audio debug file 367 * instance on success. 368 * @param fFlags AUDIOHLPFILE_FLAGS_XXX. 369 * @param enmType The audio file type to produce. 370 * @param pszPath The directory path. The temporary directory will be 371 * used if NULL or empty. 372 * @param fFilename AUDIOHLPFILENAME_FLAGS_XXX. 373 * @param uInstance The instance number (will be appended to the filename 374 * with a dash inbetween). 375 * @param pszNameFmt The filename format string. 376 * @param ... Arguments to the filename format string. 377 */ 378 int AudioHlpFileCreateF(PAUDIOHLPFILE *ppFile, uint32_t fFlags, AUDIOHLPFILETYPE enmType, 379 const char *pszPath, uint32_t fFilename, uint32_t uInstance, const char *pszNameFmt, ...) 380 { 381 *ppFile = NULL; 382 383 /* 384 * Construct the filename first. 385 */ 386 char szPath[RTPATH_MAX]; 387 va_list va; 388 va_start(va, pszNameFmt); 389 int rc = audioHlpConstructPathWorker(szPath, sizeof(szPath), pszPath, pszNameFmt, va, uInstance, enmType, fFilename, '\0'); 390 va_end(va); 391 AssertRCReturn(rc, rc); 392 393 /* 394 * Allocate and initializes a debug file instance with that filename path. 395 */ 396 return audioHlpFileCreateWorker(ppFile, fFlags, enmType, szPath); 397 } 398 402 399 403 400 /** … … 416 413 pFile = NULL; 417 414 } 415 418 416 419 417 /** … … 436 434 437 435 if (pFile->enmType == AUDIOHLPFILETYPE_RAW) 438 {439 436 rc = RTFileOpen(&pFile->hFile, pFile->szName, fOpen); 440 }441 437 else if (pFile->enmType == AUDIOHLPFILETYPE_WAV) 442 438 { … … 499 495 } 500 496 497 501 498 /** 502 499 * Creates a debug file structure and opens a file for it, extended version. … … 506 503 * @param enmType The file type. 507 504 * @param pszDir The directory to open the file in. 508 * @param pszName The base filename.509 505 * @param iInstance The device/driver instance. 510 506 * @param fFilename AUDIOHLPFILENAME_FLAGS_XXX. … … 512 508 * @param pProps PCM audio properties for the file. 513 509 * @param fOpen RTFILE_O_XXX or AUDIOHLPFILE_DEFAULT_OPEN_FLAGS. 514 */ 515 int AudioHlpFileCreateAndOpenEx(PAUDIOHLPFILE *ppFile, AUDIOHLPFILETYPE enmType, const char *pszDir, const char *pszName, 510 * @param pszNameFmt The base filename. 511 * @param ... Filename format arguments. 512 */ 513 int AudioHlpFileCreateAndOpenEx(PAUDIOHLPFILE *ppFile, AUDIOHLPFILETYPE enmType, const char *pszDir, 516 514 uint32_t iInstance, uint32_t fFilename, uint32_t fCreate, 517 PCPDMAUDIOPCMPROPS pProps, uint64_t fOpen )515 PCPDMAUDIOPCMPROPS pProps, uint64_t fOpen, const char *pszNameFmt, ...) 518 516 { 519 517 *ppFile = NULL; … … 521 519 for (uint32_t iTry = 0; ; iTry++) 522 520 { 521 /* Format the path to the filename. */ 523 522 char szFile[RTPATH_MAX]; 524 int rc = audioHlpConstructPathWorker(szFile, sizeof(szFile), pszDir, pszName, iInstance, enmType, fFilename, 523 va_list va; 524 va_start(va, pszNameFmt); 525 int rc = audioHlpConstructPathWorker(szFile, sizeof(szFile), pszDir, pszNameFmt, va, iInstance, enmType, fFilename, 525 526 iTry == 0 ? '\0' : iTry + 'a'); 527 va_end(va); 526 528 AssertRCReturn(rc, rc); 527 529 530 /* Create an debug audio file instance with the filename path. */ 528 531 PAUDIOHLPFILE pFile = NULL; 529 rc = AudioHlpFileCreate(enmType, szFile, fCreate, &pFile);532 rc = audioHlpFileCreateWorker(&pFile, fCreate, enmType, szFile); 530 533 AssertRCReturn(rc, rc); 531 534 535 /* Try open it. */ 532 536 rc = AudioHlpFileOpen(pFile, fOpen, pProps); 533 537 if (RT_SUCCESS(rc)) … … 542 546 } 543 547 548 544 549 /** 545 550 * Creates a debug wav-file structure and opens a file for it, default flags. … … 555 560 uint32_t iInstance, PCPDMAUDIOPCMPROPS pProps) 556 561 { 557 return AudioHlpFileCreateAndOpenEx(ppFile, AUDIOHLPFILETYPE_WAV, pszDir, pszName,iInstance,562 return AudioHlpFileCreateAndOpenEx(ppFile, AUDIOHLPFILETYPE_WAV, pszDir, iInstance, 558 563 AUDIOHLPFILENAME_FLAGS_NONE, AUDIOHLPFILE_FLAGS_NONE, 559 pProps, AUDIOHLPFILE_DEFAULT_OPEN_FLAGS );564 pProps, AUDIOHLPFILE_DEFAULT_OPEN_FLAGS, "%s", pszName); 560 565 } 561 566 … … 607 612 && !cbSize 608 613 && !(pFile->fFlags & AUDIOHLPFILE_FLAGS_KEEP_IF_EMPTY)) 609 {610 614 rc = AudioHlpFileDelete(pFile); 611 }612 615 613 616 pFile->cbData = 0; … … 624 627 } 625 628 629 626 630 /** 627 631 * Deletes an audio file. 628 632 * 629 633 * @returns VBox status code. 630 * @param pFile Audio file handleto delete.634 * @param pFile Audio file to delete. 631 635 */ 632 636 int AudioHlpFileDelete(PAUDIOHLPFILE pFile) … … 636 640 int rc = RTFileDelete(pFile->szName); 637 641 if (RT_SUCCESS(rc)) 638 {639 642 LogRel2(("Audio: Deleted file '%s'\n", pFile->szName)); 640 } 641 else if (rc == VERR_FILE_NOT_FOUND) /* Don't bitch if the file is not around (anymore). */ 643 else if (rc == VERR_FILE_NOT_FOUND) /* Don't bitch if the file is not around anymore. */ 642 644 rc = VINF_SUCCESS; 643 645 … … 648 650 } 649 651 652 650 653 /** 651 654 * Returns the raw audio data size of an audio file. 652 655 * 653 * Note: This does *not* include file headers and other data which does654 * notbelong to the actual PCM audio data.656 * @note This does *not* include file headers and other data which does not 657 * belong to the actual PCM audio data. 655 658 * 656 659 * @returns Size (in bytes) of the raw PCM audio data. … … 664 667 665 668 if (pFile->enmType == AUDIOHLPFILETYPE_RAW) 666 {667 669 cbSize = RTFileTell(pFile->hFile); 668 }669 670 else if (pFile->enmType == AUDIOHLPFILETYPE_WAV) 670 671 { … … 677 678 } 678 679 680 679 681 /** 680 682 * Returns whether the given audio file is open and in use or not. 681 683 * 682 * @return boolTrue if open, false if not.683 * @param pFile Audio file handleto check open status for.684 * @returnd True if open, false if not. 685 * @param pFile Audio file to check open status for. 684 686 */ 685 687 bool AudioHlpFileIsOpen(PAUDIOHLPFILE pFile) … … 691 693 } 692 694 695 693 696 /** 694 697 * Write PCM data to a wave (.WAV) file. 695 698 * 696 699 * @returns VBox status code. 697 * @param pFile Audio file handleto write PCM data to.700 * @param pFile Audio file to write PCM data to. 698 701 * @param pvBuf Audio data to write. 699 702 * @param cbBuf Size (in bytes) of audio data to write. … … 715 718 716 719 if (pFile->enmType == AUDIOHLPFILETYPE_RAW) 717 {718 720 rc = RTFileWrite(pFile->hFile, pvBuf, cbBuf, NULL); 719 }720 721 else if (pFile->enmType == AUDIOHLPFILETYPE_WAV) 721 722 { -
trunk/src/VBox/Devices/Audio/AudioHlp.h
r90010 r90011 75 75 } AUDIOHLPFILETYPE; 76 76 77 /** @name Audio file (name) helper methods.78 * @{ */79 int AudioHlpFileNameGet(char *pszFile, size_t cchFile, const char *pszPath, const char *pszName,80 uint32_t uInstance, AUDIOHLPFILETYPE enmType, uint32_t fFlags);81 /** @} */82 83 77 /** @name AUDIOHLPFILENAME_FLAGS_XXX 84 78 * @{ */ … … 108 102 size_t cbData; 109 103 /** File name and path. */ 110 char szName[RTPATH_MAX]; 104 RT_FLEXIBLE_ARRAY_EXTENSION 105 char szName[RT_FLEXIBLE_ARRAY]; 111 106 } AUDIOHLPFILE; 112 107 /** Pointer to an audio file handle. */ … … 117 112 int AudioHlpFileCreateAndOpen(PAUDIOHLPFILE *ppFile, const char *pszDir, const char *pszName, 118 113 uint32_t iInstance, PCPDMAUDIOPCMPROPS pProps); 119 int AudioHlpFileCreateAndOpenEx(PAUDIOHLPFILE *ppFile, AUDIOHLPFILETYPE enmType, const char *pszDir, const char *pszName,114 int AudioHlpFileCreateAndOpenEx(PAUDIOHLPFILE *ppFile, AUDIOHLPFILETYPE enmType, const char *pszDir, 120 115 uint32_t iInstance, uint32_t fFilename, uint32_t fCreate, 121 PCPDMAUDIOPCMPROPS pProps, uint64_t fOpen); 122 int AudioHlpFileCreate(AUDIOHLPFILETYPE enmType, const char *pszFile, uint32_t fFlags, PAUDIOHLPFILE *ppFile); 116 PCPDMAUDIOPCMPROPS pProps, uint64_t fOpen, const char *pszName, ...); 117 int AudioHlpFileCreateF(PAUDIOHLPFILE *ppFile, uint32_t fFlags, AUDIOHLPFILETYPE enmType, 118 const char *pszPath, uint32_t fFilename, uint32_t uInstance, const char *pszFileFmt, ...); 119 123 120 void AudioHlpFileDestroy(PAUDIOHLPFILE pFile); 124 121 int AudioHlpFileOpen(PAUDIOHLPFILE pFile, uint32_t fOpen, PCPDMAUDIOPCMPROPS pProps); -
trunk/src/VBox/Devices/Audio/DevHdaStream.cpp
r89887 r90011 108 108 if (pStreamR3->Dbg.Runtime.fEnabled) 109 109 { 110 char szFile[64]; 111 char szPath[RTPATH_MAX]; 112 113 /* pFileStream */ 114 if (fIsInput) 115 RTStrPrintf(szFile, sizeof(szFile), "hdaStreamWriteSD%RU8", uSD); 116 else 117 RTStrPrintf(szFile, sizeof(szFile), "hdaStreamReadSD%RU8", uSD); 118 119 int rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThisCC->Dbg.pszOutPath, szFile, 120 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE); 110 int rc2 = AudioHlpFileCreateF(&pStreamR3->Dbg.Runtime.pFileStream, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 111 pThisCC->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 112 fIsInput ? "hdaStreamWriteSD%RU8" : "hdaStreamReadSD%RU8", uSD); 121 113 AssertRC(rc2); 122 114 123 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStreamR3->Dbg.Runtime.pFileStream); 115 /* pFileDMARaw */ 116 rc2 = AudioHlpFileCreateF(&pStreamR3->Dbg.Runtime.pFileDMARaw, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 117 pThisCC->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 118 fIsInput ? "hdaDMARawWriteSD%RU8" : "hdaDMARawReadSD%RU8", uSD); 124 119 AssertRC(rc2); 125 120 126 /* pFileDMARaw */127 if (fIsInput)128 RTStrPrintf(szFile, sizeof(szFile), "hdaDMARawWriteSD%RU8", uSD);129 else130 RTStrPrintf(szFile, sizeof(szFile), "hdaDMARawReadSD%RU8", uSD);131 132 rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThisCC->Dbg.pszOutPath, szFile,133 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE);134 AssertRC(rc2);135 136 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStreamR3->Dbg.Runtime.pFileDMARaw);137 AssertRC(rc2);138 139 121 /* pFileDMAMapped */ 140 if (fIsInput) 141 RTStrPrintf(szFile, sizeof(szFile), "hdaDMAWriteMappedSD%RU8", uSD); 142 else 143 RTStrPrintf(szFile, sizeof(szFile), "hdaDMAReadMappedSD%RU8", uSD); 144 145 rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThisCC->Dbg.pszOutPath, szFile, 146 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE); 147 AssertRC(rc2); 148 149 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStreamR3->Dbg.Runtime.pFileDMAMapped); 122 rc2 = AudioHlpFileCreateF(&pStreamR3->Dbg.Runtime.pFileDMAMapped, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 123 pThisCC->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 124 fIsInput ? "hdaDMAWriteMappedSD%RU8" : "hdaDMAReadMappedSD%RU8", uSD); 150 125 AssertRC(rc2); 151 126 -
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r90006 r90011 2411 2411 else 2412 2412 { 2413 char szFile[64]; 2414 if (ichac97R3GetDirFromSD(pStream->u8SD) == PDMAUDIODIR_IN) 2415 RTStrPrintf(szFile, sizeof(szFile), "ac97StreamWriteSD%RU8", pStream->u8SD); 2416 else 2417 RTStrPrintf(szFile, sizeof(szFile), "ac97StreamReadSD%RU8", pStream->u8SD); 2418 2419 char szPath[RTPATH_MAX]; 2420 int rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThisCC->Dbg.pszOutPath, szFile, 2421 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE); 2413 int rc2 = AudioHlpFileCreateF(&pStreamCC->Dbg.Runtime.pFileStream, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 2414 pThisCC->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 2415 ichac97R3GetDirFromSD(pStream->u8SD) == PDMAUDIODIR_IN 2416 ? "ac97StreamWriteSD%RU8" : "ac97StreamReadSD%RU8", pStream->u8SD); 2422 2417 AssertRC(rc2); 2423 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStreamCC->Dbg.Runtime.pFileStream); 2424 AssertRC(rc2); 2425 2426 if (ichac97R3GetDirFromSD(pStream->u8SD) == PDMAUDIODIR_IN) 2427 RTStrPrintf(szFile, sizeof(szFile), "ac97DMAWriteSD%RU8", pStream->u8SD); 2428 else 2429 RTStrPrintf(szFile, sizeof(szFile), "ac97DMAReadSD%RU8", pStream->u8SD); 2430 2431 rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThisCC->Dbg.pszOutPath, szFile, 2432 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE); 2433 AssertRC(rc2); 2434 2435 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStreamCC->Dbg.Runtime.pFileDMA); 2418 2419 rc2 = AudioHlpFileCreateF(&pStreamCC->Dbg.Runtime.pFileDMA, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 2420 pThisCC->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 2421 ichac97R3GetDirFromSD(pStream->u8SD) == PDMAUDIODIR_IN 2422 ? "ac97DMAWriteSD%RU8" : "ac97DMAReadSD%RU8", pStream->u8SD); 2436 2423 AssertRC(rc2); 2437 2424 -
trunk/src/VBox/Devices/Audio/DevSB16.cpp
r89822 r90011 2065 2065 else 2066 2066 { 2067 char szFile[64]; 2068 2069 if (sb16GetDirFromIndex(pStream->uIdx) == PDMAUDIODIR_IN) 2070 RTStrPrintf(szFile, sizeof(szFile), "sb16StreamWriteSD%RU8", pStream->uIdx); 2071 else 2072 RTStrPrintf(szFile, sizeof(szFile), "sb16StreamReadSD%RU8", pStream->uIdx); 2073 2074 char szPath[RTPATH_MAX]; 2075 int rc2 = AudioHlpFileNameGet(szPath, sizeof(szPath), pThis->Dbg.pszOutPath, szFile, 2076 0 /* uInst */, AUDIOHLPFILETYPE_WAV, AUDIOHLPFILENAME_FLAGS_NONE); 2077 AssertRC(rc2); 2078 rc2 = AudioHlpFileCreate(AUDIOHLPFILETYPE_WAV, szPath, AUDIOHLPFILE_FLAGS_NONE, &pStream->Dbg.Runtime.pFileDMA); 2067 int rc2 = AudioHlpFileCreateF(&pStream->Dbg.Runtime.pFileDMA, AUDIOHLPFILE_FLAGS_NONE, AUDIOHLPFILETYPE_WAV, 2068 pThis->Dbg.pszOutPath, AUDIOHLPFILENAME_FLAGS_NONE, 0 /*uInstance*/, 2069 sb16GetDirFromIndex(pStream->uIdx) == PDMAUDIODIR_IN 2070 ? "sb16StreamWriteSD%RU8" : "sb16StreamReadSD%RU8", pStream->uIdx); 2079 2071 AssertRC(rc2); 2080 2072 -
trunk/src/VBox/Devices/Audio/DrvHostAudioDebug.cpp
r89510 r90011 118 118 119 119 int rc = AudioHlpFileCreateAndOpenEx(&pStreamDbg->pFile, AUDIOHLPFILETYPE_WAV, NULL /*use temp dir*/, 120 pCfgReq->enmDir == PDMAUDIODIR_IN ? "DebugAudioIn" : "DebugAudioOut",121 120 pThis->pDrvIns->iInstance, AUDIOHLPFILENAME_FLAGS_NONE, AUDIOHLPFILE_FLAGS_NONE, 122 &pCfgReq->Props, RTFILE_O_WRITE | RTFILE_O_DENY_WRITE | RTFILE_O_CREATE_REPLACE); 121 &pCfgReq->Props, RTFILE_O_WRITE | RTFILE_O_DENY_WRITE | RTFILE_O_CREATE_REPLACE, 122 pCfgReq->enmDir == PDMAUDIODIR_IN ? "DebugAudioIn" : "DebugAudioOut"); 123 123 if (RT_FAILURE(rc)) 124 124 LogRel(("DebugAudio: Failed to creating debug file for %s stream '%s' in the temp directory: %Rrc\n",
Note:
See TracChangeset
for help on using the changeset viewer.