本文整理汇总了C++中AudioDecoder::Open方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioDecoder::Open方法的具体用法?C++ AudioDecoder::Open怎么用?C++ AudioDecoder::Open使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioDecoder
的用法示例。
在下文中一共展示了AudioDecoder::Open方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Open
void Open(std::string filename)
{
stream_->Open(filename);
audio_decoder_->Open(stream_->getHandle());
video_decoder_->Open();
audio_renderer_->Open();
video_renderer_->Open();
}
示例2: FLACDecoder
AudioDecoder * AudioDecoder::CreateDecoderForInputSource(InputSource *inputSource, CFStringRef mimeType, CFErrorRef *error)
{
if(NULL == inputSource)
return NULL;
AudioDecoder *decoder = NULL;
// Open the input source if it isn't already
if(AutomaticallyOpenDecoders() && !inputSource->IsOpen() && !inputSource->Open(error))
return NULL;
// As a factory this class has knowledge of its subclasses
// It would be possible (and perhaps preferable) to switch to a generic
// plugin interface at a later date
#if 0
// If the input is an instance of HTTPInputSource, use the MIME type from the server
// This code is disabled because most HTTP servers don't send the correct MIME types
HTTPInputSource *httpInputSource = dynamic_cast<HTTPInputSource *>(inputSource);
bool releaseMIMEType = false;
if(!mimeType && httpInputSource && httpInputSource->IsOpen()) {
mimeType = httpInputSource->CopyContentMIMEType();
if(mimeType)
releaseMIMEType = true;
}
#endif
// The MIME type takes precedence over the file extension
if(mimeType) {
#if BUILD_FOR_MAC_OSX
if(FLACDecoder::HandlesMIMEType(mimeType)) {
decoder = new FLACDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && WavPackDecoder::HandlesMIMEType(mimeType)) {
decoder = new WavPackDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && MPEGDecoder::HandlesMIMEType(mimeType)) {
decoder = new MPEGDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && OggVorbisDecoder::HandlesMIMEType(mimeType)) {
decoder = new OggVorbisDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && MusepackDecoder::HandlesMIMEType(mimeType)) {
decoder = new MusepackDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && MonkeysAudioDecoder::HandlesMIMEType(mimeType)) {
decoder = new MonkeysAudioDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && OggSpeexDecoder::HandlesMIMEType(mimeType)) {
decoder = new OggSpeexDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && MODDecoder::HandlesMIMEType(mimeType)) {
decoder = new MODDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
if(NULL == decoder && LibsndfileDecoder::HandlesMIMEType(mimeType)) {
decoder = new LibsndfileDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
}
#endif
if(NULL == decoder && CoreAudioDecoder::HandlesMIMEType(mimeType)) {
decoder = new CoreAudioDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = NULL;
delete decoder, decoder = NULL;
}
//.........这里部分代码省略.........
示例3: FLACDecoder
AudioDecoder * AudioDecoder::CreateDecoderForInputSource(InputSource *inputSource, CFStringRef mimeType, CFErrorRef *error)
{
if(nullptr == inputSource)
return nullptr;
AudioDecoder *decoder = nullptr;
// Open the input source if it isn't already
if(AutomaticallyOpenDecoders() && !inputSource->IsOpen() && !inputSource->Open(error))
return nullptr;
// As a factory this class has knowledge of its subclasses
// It would be possible (and perhaps preferable) to switch to a generic
// plugin interface at a later date
#if 0
// If the input is an instance of HTTPInputSource, use the MIME type from the server
// This code is disabled because most HTTP servers don't send the correct MIME types
HTTPInputSource *httpInputSource = dynamic_cast<HTTPInputSource *>(inputSource);
bool releaseMIMEType = false;
if(!mimeType && httpInputSource && httpInputSource->IsOpen()) {
mimeType = httpInputSource->CopyContentMIMEType();
if(mimeType)
releaseMIMEType = true;
}
#endif
// The MIME type takes precedence over the file extension
if(mimeType) {
if(FLACDecoder::HandlesMIMEType(mimeType)) {
decoder = new FLACDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && WavPackDecoder::HandlesMIMEType(mimeType)) {
decoder = new WavPackDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && MPEGDecoder::HandlesMIMEType(mimeType)) {
decoder = new MPEGDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && OggVorbisDecoder::HandlesMIMEType(mimeType)) {
decoder = new OggVorbisDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && OggSpeexDecoder::HandlesMIMEType(mimeType)) {
decoder = new OggSpeexDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
#if !TARGET_OS_IPHONE
if(nullptr == decoder && MusepackDecoder::HandlesMIMEType(mimeType)) {
decoder = new MusepackDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && MonkeysAudioDecoder::HandlesMIMEType(mimeType)) {
decoder = new MonkeysAudioDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && MODDecoder::HandlesMIMEType(mimeType)) {
decoder = new MODDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && TrueAudioDecoder::HandlesMIMEType(mimeType)) {
decoder = new TrueAudioDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
if(nullptr == decoder && LibsndfileDecoder::HandlesMIMEType(mimeType)) {
decoder = new LibsndfileDecoder(inputSource);
if(AutomaticallyOpenDecoders() && !decoder->Open(error)) {
decoder->mInputSource = nullptr;
delete decoder, decoder = nullptr;
}
}
//.........这里部分代码省略.........
示例4: available
void Psp2Audio::SE_Play(std::string const& file, int volume, int pitch) {
// Opening file
FILE* stream = FileFinder::fopenUTF8(file, "rb");
if (!stream) {
Output::Warning("Couldn't open sound file %s", file.c_str());
return;
}
// Pick the next free SE slot.
// Does not need synchronisation
int idx = -1;
for (int i = 0; i < AUDIO_CHANNELS; ++i) {
if (sfx_sounds[i].isPlaying && sfx_sounds[i].isFinished) {
idx = i;
break;
}
}
if (idx == -1) {
fclose(stream);
Output::Warning("SE: No free channels available (%s)", file.c_str());
return;
}
DecodedSound& sfx = sfx_sounds[idx];
sfx.decoder = AudioDecoder::Create(stream, file);
if (sfx.decoder == nullptr){
fclose(stream);
Output::Warning("Unsupported sound format (%s)", file.c_str());
return;
}
// Initializing internal audio decoder
int audiotype;
AudioDecoder* decoder = sfx.decoder.get();
if (!decoder->Open(stream)) {
Output::Warning("Error occured in audio decoder (%s)", audio_decoder->GetError().c_str());
return;
}
decoder->SetLooping(false);
AudioDecoder::Format int_format;
int samplerate;
decoder->SetFormat(48000, AudioDecoder::Format::S16, 2);
decoder->GetFormat(samplerate, int_format, audiotype);
if (samplerate != 48000) Output::Warning("Cannot resample sound file. Sound will be distorted.");
// Check for file audiocodec
sfx.isStereo = audiotype == 2;
// Setting default streaming values
sfx.cur_audiobuf = sfx.audiobuf;
decoder->SetPitch(pitch);
decoder->SetVolume(volume);
// Wait and signal is required to prevent reordering
sceKernelWaitSema(SFX_Mutex_ID, 1, NULL);
sfx.isPlaying = false;
sfx.isFinished = false;
sceKernelSignalSema(SFX_Mutex_ID, 1);
// Start one SE thread
sceKernelSignalSema(SFX_Mutex, 1);
}