summaryrefslogtreecommitdiff
path: root/drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2015-09-26 14:50:42 -0300
committerJuan Linietsky <reduzio@gmail.com>2015-09-26 14:50:42 -0300
commitc858515785e2406bfc07da587ffc3bb353b7504c (patch)
treefcde74c2f42288dc95c1c7d3680f78f6398929c2 /drivers/theoraplayer/src/TheoraAudioPacketQueue.cpp
parentce6fefced8b0ac6d3be886db5ee1234dba7ec544 (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.cpp126
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