Anne Marije v/d Meer
11 years ago
committed by
Florian Meißner
9 changed files with 304 additions and 31 deletions
@ -0,0 +1,69 @@ |
|||||||
|
#include <iostream> |
||||||
|
#include <fstream> |
||||||
|
|
||||||
|
#include "hsResMgr.h" |
||||||
|
#include "plFormat.h" |
||||||
|
|
||||||
|
#include "plDSoundBuffer.h" |
||||||
|
|
||||||
|
#include "plWin32VideoSound.h" |
||||||
|
|
||||||
|
static int uniqueID = 0; |
||||||
|
plWin32VideoSound::plWin32VideoSound() : plWin32Sound() |
||||||
|
{ |
||||||
|
plWAVHeader header; |
||||||
|
header.fFormatTag = 0x1; |
||||||
|
header.fNumChannels = 1; |
||||||
|
header.fBitsPerSample = 16; |
||||||
|
fDSoundBuffer = new plDSoundBuffer(0, header, false, false, false, true); |
||||||
|
fDSoundBuffer->SetupVoiceSource(); |
||||||
|
uniqueID++; |
||||||
|
hsgResMgr::ResMgr()->NewKey(plFormat("videosound#{}", uniqueID), this, plLocation::kGlobalFixedLoc); |
||||||
|
fSoftVolume = 1.0f; |
||||||
|
} |
||||||
|
|
||||||
|
plWin32VideoSound::~plWin32VideoSound() |
||||||
|
{ |
||||||
|
delete fDSoundBuffer; |
||||||
|
} |
||||||
|
|
||||||
|
void plWin32VideoSound::UpdateSoundBuffer(unsigned char* buffer, size_t size) |
||||||
|
{ |
||||||
|
unsigned int bufferID = 0; |
||||||
|
|
||||||
|
if (fDSoundBuffer->GetAvailableBufferId(&bufferID)) |
||||||
|
{ |
||||||
|
fDSoundBuffer->VoiceFillBuffer(buffer, size, bufferID); |
||||||
|
IActuallyPlay(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void plWin32VideoSound::IDerivedActuallyPlay() |
||||||
|
{ |
||||||
|
if (!fDSoundBuffer->IsPlaying()) |
||||||
|
fDSoundBuffer->Play(); |
||||||
|
} |
||||||
|
|
||||||
|
bool plWin32VideoSound::LoadSound(bool is3D) |
||||||
|
{ |
||||||
|
hsAssert(false, "unimplemented cause unnecessary for this class"); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
void plWin32VideoSound::SetStartPos(unsigned bytes) |
||||||
|
{ |
||||||
|
|
||||||
|
//do nothing
|
||||||
|
hsAssert(false, "unimplemented cause unnecessary for this class"); |
||||||
|
} |
||||||
|
|
||||||
|
float plWin32VideoSound::GetActualTimeSec() |
||||||
|
{ |
||||||
|
hsAssert(false, "unimplemented cause unnecessary for this class"); |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
void plWin32VideoSound::ISetActualTime(double t) |
||||||
|
{ |
||||||
|
hsAssert(false, "unimplemented cause unnecessary for this class"); |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
/*==LICENSE==*
|
||||||
|
|
||||||
|
CyanWorlds.com Engine - MMOG client, server and tools |
||||||
|
Copyright (C) 2011 Cyan Worlds, Inc. |
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify |
||||||
|
it under the terms of the GNU General Public License as published by |
||||||
|
the Free Software Foundation, either version 3 of the License, or |
||||||
|
(at your option) any later version. |
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, |
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
GNU General Public License for more details. |
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License |
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Additional permissions under GNU GPL version 3 section 7 |
||||||
|
|
||||||
|
If you modify this Program, or any covered work, by linking or |
||||||
|
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, |
||||||
|
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent |
||||||
|
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK |
||||||
|
(or a modified version of those libraries), |
||||||
|
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, |
||||||
|
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG |
||||||
|
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the |
||||||
|
licensors of this Program grant you additional |
||||||
|
permission to convey the resulting work. Corresponding Source for a |
||||||
|
non-source form of such a combination shall include the source code for |
||||||
|
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered |
||||||
|
work. |
||||||
|
|
||||||
|
You can contact Cyan Worlds, Inc. by email legal@cyan.com |
||||||
|
or by snail mail at: |
||||||
|
Cyan Worlds, Inc. |
||||||
|
14617 N Newport Hwy |
||||||
|
Mead, WA 99021 |
||||||
|
|
||||||
|
*==LICENSE==*/ |
||||||
|
#ifndef plWin32VideoSound_h |
||||||
|
#define plWin32VideoSound_h |
||||||
|
|
||||||
|
#include "plWin32Sound.h" |
||||||
|
|
||||||
|
class plWin32VideoSound : public plWin32Sound |
||||||
|
{ |
||||||
|
public: |
||||||
|
plWin32VideoSound(); |
||||||
|
virtual ~plWin32VideoSound(); |
||||||
|
|
||||||
|
void UpdateSoundBuffer(unsigned char* buffer, size_t size); |
||||||
|
|
||||||
|
protected: |
||||||
|
void IDerivedActuallyPlay(void); |
||||||
|
bool LoadSound(bool is3D); |
||||||
|
void SetStartPos(unsigned bytes); |
||||||
|
float GetActualTimeSec(); |
||||||
|
void ISetActualTime(double t); |
||||||
|
|
||||||
|
}; |
||||||
|
#endif |
@ -0,0 +1,38 @@ |
|||||||
|
if(Opus_INCLUDE_DIR AND Opus_LIBRARY) |
||||||
|
set(Opus_FIND_QUIETLY TRUE) |
||||||
|
endif() |
||||||
|
|
||||||
|
|
||||||
|
find_path(Opus_INCLUDE_DIR opus.h |
||||||
|
/usr/local/include |
||||||
|
/usr/include |
||||||
|
) |
||||||
|
|
||||||
|
find_library(Opus_LIBRARY NAMES opus |
||||||
|
PATHS /usr/local/lib /usr/lib) |
||||||
|
|
||||||
|
find_library(Celt_LIBRARY NAMES celt |
||||||
|
PATHS /usr/local/lib /usr/lib) |
||||||
|
|
||||||
|
find_library(Silk_LIBRARY NAMES silk_common |
||||||
|
PATHS /usr/local/lib /usr/lib) |
||||||
|
|
||||||
|
set(Opus_LIBRARIES |
||||||
|
${Opus_LIBRARY} |
||||||
|
${Celt_LIBRARY} |
||||||
|
${Silk_LIBRARY}) |
||||||
|
|
||||||
|
|
||||||
|
if(Opus_INCLUDE_DIR AND Opus_LIBRARY) |
||||||
|
set(Opus_FOUND TRUE) |
||||||
|
endif() |
||||||
|
|
||||||
|
if (Opus_FOUND) |
||||||
|
if(NOT Opus_FIND_QUIETLY) |
||||||
|
message(STATUS "Found libopus: ${Opus_INCLUDE_DIR}") |
||||||
|
endif() |
||||||
|
else() |
||||||
|
if(Opus_FIND_REQUIRED) |
||||||
|
message(FATAL_ERROR "Could not find libopus") |
||||||
|
endif() |
||||||
|
endif() |
Loading…
Reference in new issue