Changeset 65739 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Feb 10, 2017 4:12:36 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 113454
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp
r65694 r65739 199 199 if (pcSamplesRead) 200 200 *pcSamplesRead = cRead; 201 202 return rc; 203 } 204 205 /** 206 * Returns a mutable pointer to the mixing buffer's audio sample buffer for writing raw 207 * audio samples. 208 * 209 * @return IPRT status code. VINF_TRY_AGAIN for getting next pointer at beginning (circular). 210 * @param pMixBuf Mixing buffer to acquire audio samples from. 211 * @param cSamples Number of requested audio samples to write. 212 * @param ppvSamples Returns a mutable pointer to the buffer's audio sample data. 213 * @param pcSamplesToWrite Number of available audio samples to write. 214 * 215 * @remark This function is not thread safe! 216 */ 217 int AudioMixBufPeekMutable(PPDMAUDIOMIXBUF pMixBuf, uint32_t cSamples, 218 PPDMAUDIOSAMPLE *ppvSamples, uint32_t *pcSamplesToWrite) 219 { 220 AssertPtrReturn(pMixBuf, VERR_INVALID_POINTER); 221 AssertPtrReturn(ppvSamples, VERR_INVALID_POINTER); 222 AssertPtrReturn(pcSamplesToWrite, VERR_INVALID_POINTER); 223 224 int rc; 225 226 if (!cSamples) 227 { 228 *pcSamplesToWrite = 0; 229 return VINF_SUCCESS; 230 } 231 232 uint32_t cSamplesToWrite; 233 if (pMixBuf->offWrite + cSamples > pMixBuf->cSamples) 234 { 235 cSamplesToWrite = pMixBuf->cSamples - pMixBuf->offWrite; 236 rc = VINF_TRY_AGAIN; 237 } 238 else 239 { 240 cSamplesToWrite = cSamples; 241 rc = VINF_SUCCESS; 242 } 243 244 *ppvSamples = &pMixBuf->pSamples[pMixBuf->offWrite]; 245 AssertPtr(ppvSamples); 246 247 pMixBuf->offWrite = (pMixBuf->offWrite + cSamplesToWrite) % pMixBuf->cSamples; 248 Assert(pMixBuf->offWrite <= pMixBuf->cSamples); 249 pMixBuf->cUsed += RT_MIN(cSamplesToWrite, pMixBuf->cUsed); 250 251 *pcSamplesToWrite = cSamplesToWrite; 201 252 202 253 return rc; -
trunk/src/VBox/Devices/Audio/AudioMixBuffer.h
r65630 r65739 61 61 int AudioMixBufMixToParent(PPDMAUDIOMIXBUF pMixBuf, uint32_t cSamples, uint32_t *pcProcessed); 62 62 int AudioMixBufPeek(PPDMAUDIOMIXBUF pMixBuf, uint32_t cSamplesToRead, PPDMAUDIOSAMPLE paSampleBuf, uint32_t cSampleBuf, uint32_t *pcSamplesRead); 63 int AudioMixBufPeekMutable(PPDMAUDIOMIXBUF pMixBuf, uint32_t cSamplesToRead, PPDMAUDIOSAMPLE *ppvSamples, uint32_t *pcSamplesRead); 63 64 uint32_t AudioMixBufUsed(PPDMAUDIOMIXBUF pMixBuf); 64 65 int AudioMixBufReadAt(PPDMAUDIOMIXBUF pMixBuf, uint32_t offSamples, void *pvBuf, uint32_t cbBuf, uint32_t *pcbRead);
Note:
See TracChangeset
for help on using the changeset viewer.