diff options
author | Juan Linietsky <reduzio@gmail.com> | 2015-09-26 14:50:42 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2015-09-26 14:50:42 -0300 |
commit | c858515785e2406bfc07da587ffc3bb353b7504c (patch) | |
tree | fcde74c2f42288dc95c1c7d3680f78f6398929c2 /drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp | |
parent | ce6fefced8b0ac6d3be886db5ee1234dba7ec544 (diff) |
Fixed theora playback. Removed theoraplayer.
Still need to get proper audio output latency in some platforms.
Diffstat (limited to 'drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp')
-rw-r--r-- | drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp b/drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp deleted file mode 100644 index be5e1018f9..0000000000 --- a/drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/************************************************************************************ -This source file is part of the Theora Video Playback Library -For latest info, see http://libtheoraplayer.googlecode.com -************************************************************************************* -Copyright (c) 2008-2014 Kresimir Spes (kspes@cateia.com) -This program is free software; you can redistribute it and/or modify it under -the terms of the BSD license: http://opensource.org/licenses/BSD-3-Clause -*************************************************************************************/ -#include <stdlib.h> -#include "TheoraAudioPacketQueue.h" -#include "TheoraAudioInterface.h" - -TheoraAudioPacketQueue::TheoraAudioPacketQueue() -{ - mTheoraAudioPacketQueue = NULL; -} - -TheoraAudioPacketQueue::~TheoraAudioPacketQueue() -{ - destroyAllAudioPackets(); -} - -float TheoraAudioPacketQueue::getAudioPacketQueueLength() -{ - float len = 0; - for (TheoraAudioPacket* p = mTheoraAudioPacketQueue; p != NULL; p = p->next) - len += p->numSamples; - - return len / (mAudioFrequency * mNumAudioChannels); -} - -void TheoraAudioPacketQueue::_addAudioPacket(float* data, int numSamples) -{ - TheoraAudioPacket* packet = new TheoraAudioPacket; - packet->pcm = data; - packet->numSamples = numSamples; - packet->next = NULL; - - - if (mTheoraAudioPacketQueue == NULL) mTheoraAudioPacketQueue = packet; - else - { - TheoraAudioPacket* last = mTheoraAudioPacketQueue; - for (TheoraAudioPacket* p = last; p != NULL; p = p->next) - last = p; - last->next = packet; - } -} - -void TheoraAudioPacketQueue::addAudioPacket(float** buffer, int numSamples, float gain) -{ - float* data = new float[numSamples * mNumAudioChannels]; - float* dataptr = data; - int i; - unsigned int j; - - if (gain < 1.0f) - { - // apply gain, let's attenuate the samples - for (i = 0; i < numSamples; ++i) - for (j = 0; j < mNumAudioChannels; j++, ++dataptr) - *dataptr = buffer[i][j] * gain; - } - else - { - // do a simple copy, faster then the above method, when gain is 1.0f - for (i = 0; i < numSamples; ++i) - for (j = 0; j < mNumAudioChannels; j++, ++dataptr) - *dataptr = buffer[j][i]; - } - - _addAudioPacket(data, numSamples * mNumAudioChannels); -} - -void TheoraAudioPacketQueue::addAudioPacket(float* buffer, int numSamples, float gain) -{ - float* data = new float[numSamples * mNumAudioChannels]; - float* dataptr = data; - int i, numFloats = numSamples * mNumAudioChannels; - - if (gain < 1.0f) - { - // apply gain, let's attenuate the samples - for (i = 0; i < numFloats; ++i, dataptr++) - *dataptr = buffer[i] * gain; - } - else - { - // do a simple copy, faster then the above method, when gain is 1.0f - for (i = 0; i < numFloats; ++i, dataptr++) - *dataptr = buffer[i]; - } - - _addAudioPacket(data, numFloats); -} - -TheoraAudioPacket* TheoraAudioPacketQueue::popAudioPacket() -{ - if (mTheoraAudioPacketQueue == NULL) return NULL; - TheoraAudioPacket* p = mTheoraAudioPacketQueue; - mTheoraAudioPacketQueue = mTheoraAudioPacketQueue->next; - return p; -} - -void TheoraAudioPacketQueue::destroyAudioPacket(TheoraAudioPacket* p) -{ - if (p == NULL) return; - delete [] p->pcm; - delete p; -} - -void TheoraAudioPacketQueue::destroyAllAudioPackets() -{ - for (TheoraAudioPacket* p = popAudioPacket(); p != NULL; p = popAudioPacket()) - destroyAudioPacket(p); -} - -void TheoraAudioPacketQueue::flushAudioPackets(TheoraAudioInterface* audioInterface) -{ - - for (TheoraAudioPacket* p = popAudioPacket(); p != NULL; p = popAudioPacket()) - { - audioInterface->insertData(p->pcm, p->numSamples); - destroyAudioPacket(p); - } -}
\ No newline at end of file |