| 551 | } |
| 552 | |
| 553 | int CSound::LoadOpus(const char *pFilename, int StorageType) |
| 554 | { |
| 555 | // no need to load sound when we are running with no sound |
| 556 | if(!m_SoundEnabled) |
| 557 | return -1; |
| 558 | |
| 559 | CSample *pSample = AllocSample(); |
| 560 | if(!pSample) |
| 561 | { |
| 562 | log_error("sound/opus", "Failed to allocate sample ID. Filename='%s'", pFilename); |
| 563 | return -1; |
| 564 | } |
| 565 | |
| 566 | void *pData; |
| 567 | unsigned DataSize; |
| 568 | if(!m_pStorage->ReadFile(pFilename, StorageType, &pData, &DataSize)) |
| 569 | { |
| 570 | UnloadSample(pSample->m_Index); |
| 571 | log_error("sound/opus", "Failed to open file. Filename='%s'", pFilename); |
| 572 | return -1; |
| 573 | } |
| 574 | |
| 575 | const bool DecodeSuccess = DecodeOpus(*pSample, pData, DataSize, pFilename); |
| 576 | free(pData); |
| 577 | if(!DecodeSuccess) |
| 578 | { |
| 579 | UnloadSample(pSample->m_Index); |
| 580 | return -1; |
| 581 | } |
| 582 | |
| 583 | if(g_Config.m_Debug) |
| 584 | log_trace("sound/opus", "Loaded '%s' (index %d)", pFilename, pSample->m_Index); |
| 585 | |
| 586 | RateConvert(*pSample); |
| 587 | return pSample->m_Index; |
| 588 | } |
| 589 | |
| 590 | int CSound::LoadWV(const char *pFilename, int StorageType) |
| 591 | { |
no test coverage detected