diff --git a/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj b/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj
index 481f0293d..910adf689 100644
--- a/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj
+++ b/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj
@@ -523,14 +523,6 @@
RelativePath="..\..\src\audio_provider_ram.h"
>
-
-
-
-
Stop();
- player->SetProvider(provider);
- delete scrubProvider;
- }
-
- // Start scrubbing
- if (!scrubbing && scrubButton && provider->GetChannels() == 1) {
- // Get mouse
- CaptureMouse();
- scrubbing = true;
-
- // Initialize provider
- player->Stop();
- scrubProvider = new StreamAudioProvider();
- scrubProvider->SetParams(provider->GetChannels(),provider->GetSampleRate(),provider->GetBytesPerSample());
- player->SetProvider(scrubProvider);
-
- // Set variables
- scrubLastPos = GetSampleAtX(x);
- scrubTime = clock();
- scrubLastRate = provider->GetSampleRate();
- }
-
- // Scrub
- if (scrubbing && scrubButton) {
- // Get current data
- int64_t exactPos = MAX(0,GetSampleAtX(x));
- int curScrubTime = clock();
- int scrubDeltaTime = curScrubTime - scrubTime;
- bool invert = exactPos < scrubLastPos;
- int64_t curScrubPos = exactPos;
-
- if (scrubDeltaTime > 0) {
- // Get derived data
- int rateChange = provider->GetSampleRate()/20;
- int curRate = MID(int(scrubLastRate-rateChange),abs(int(exactPos - scrubLastPos)) * CLOCKS_PER_SEC / scrubDeltaTime,int(scrubLastRate+rateChange));
- if (abs(curRate-scrubLastRate) < rateChange) curRate = scrubLastRate;
- curScrubPos = scrubLastPos + (curRate * scrubDeltaTime / CLOCKS_PER_SEC * (invert ? -1 : 1));
- int64_t scrubDelta = curScrubPos - scrubLastPos;
- scrubLastRate = curRate;
-
- // Copy data to buffer
- if (scrubDelta != 0) {
- // Create buffer
- int bufSize = scrubDeltaTime * scrubProvider->GetSampleRate() / CLOCKS_PER_SEC;
- short *buf = new short[bufSize];
-
- // Flag as inverted, if necessary
- if (invert) scrubDelta = -scrubDelta;
-
- // Copy data from original provider to temp buffer
- short *temp = new short[scrubDelta];
- provider->GetAudio(temp,MIN(curScrubPos,scrubLastPos),scrubDelta);
-
- // Scale
- float scale = float(double(scrubDelta) / double(bufSize));
- float start,end;
- int istart,iend;
- float tempfinal;
- for (int i=0;iAppend(buf,bufSize);
- if (!player->IsPlaying()) player->Play(0,~0ULL);
- delete buf;
- }
- }
-
- // Update last pos and time
- scrubLastPos = curScrubPos;
- scrubTime = curScrubTime;
-
- // Return
- return;
- }
-
-*/
-
/// @brief Size event
/// @param event
void AudioDisplay::OnSize(wxSizeEvent &event) {
diff --git a/aegisub/src/audio_display.h b/aegisub/src/audio_display.h
index 9ea9c630d..fd971de7b 100644
--- a/aegisub/src/audio_display.h
+++ b/aegisub/src/audio_display.h
@@ -49,7 +49,6 @@
#include "audio_renderer_spectrum.h"
class AssDialogue;
-class StreamAudioProvider;
class SubtitlesGrid;
class AudioBox;
class AudioKaraoke;
@@ -179,18 +178,6 @@ private:
/// DOCME
int *min;
- /// DOCME
- int scrubTime;
-
- /// DOCME
- int64_t scrubLastPos;
-
- /// DOCME
- bool scrubbing;
-
- /// DOCME
- int scrubLastRate;
-
void OnPaint(wxPaintEvent &event);
void OnMouseEvent(wxMouseEvent &event);
void OnSize(wxSizeEvent &event);
@@ -218,9 +205,6 @@ public:
/// DOCME
AudioProvider *provider;
- /// DOCME
- StreamAudioProvider *scrubProvider;
-
/// DOCME
AudioPlayer *player;
diff --git a/aegisub/src/audio_provider_stream.cpp b/aegisub/src/audio_provider_stream.cpp
deleted file mode 100644
index c6a09ed95..000000000
--- a/aegisub/src/audio_provider_stream.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (c) 2006, Rodrigo Braz Monteiro
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// * Neither the name of the Aegisub Group nor the names of its contributors
-// may be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Aegisub Project http://www.aegisub.org/
-//
-// $Id$
-
-/// @file audio_provider_stream.cpp
-/// @brief Unused aggregate audio provider, intended to be used for audio scrubbing feature
-/// @ingroup audio_input
-///
-
-
-///////////
-// Headers
-#include "config.h"
-
-#include "audio_provider_stream.h"
-#include "utils.h"
-
-
-/// DOCME
-#define BUFSIZE 65536
-
-
-
-/// @brief Constructor
-///
-StreamAudioProvider::StreamAudioProvider() {
- bufLen = 8192;
- startPos = 0;
- endPos = BUFSIZE;
- buffered = 0;
- hasBuf = false;
- num_samples = ~0ULL;
-}
-
-
-
-/// @brief Destructor
-///
-StreamAudioProvider::~StreamAudioProvider() {
- for (std::list::iterator cur=buffer.begin();cur!=buffer.end();cur++) {
- delete *cur;
- }
- buffer.clear();
-}
-
-
-
-/// @brief Get audio
-/// @param buf
-/// @param start
-/// @param count
-///
-void StreamAudioProvider::GetAudio(void *buf, int64_t start, int64_t count) {
- // Write
- int64_t left = count;
- int written = 0;
- int toWrite;
- short *dst = (short*) buf;
- while (hasBuf && left > 0) {
- // Discard done
- if (startPos == BUFSIZE) {
- delete buffer.front();
- buffer.pop_front();
- startPos = 0;
- }
-
- // Is last?
- bool isLast = buffer.size() == 1;
- int size = BUFSIZE;
- if (isLast) size = endPos;
-
- // Write
- toWrite = MIN(size-startPos,int(left));
- memcpy(dst+written,&(buffer.front()->buf[startPos]),toWrite*2);
- startPos += toWrite;
- written += toWrite;
- left -= toWrite;
- buffered -= toWrite;
-
- // Last
- if (isLast) break;
- }
-
- // Still left, fill with zero
- if (left > 0) {
- hasBuf = false;
- for (int64_t i=written;i 0) {
- // Check space
- if (endPos == BUFSIZE) {
- buffer.push_back(new BufferChunk);
- endPos = 0;
- }
-
- // Read
- toRead = MIN(int(BUFSIZE-endPos),int(left));
- memcpy(&(buffer.back()->buf[endPos]),src+read,toRead*2);
- endPos += toRead;
- read += toRead;
- buffered += toRead;
- left -= toRead;
- }
-
- // Set buffered status
- if (buffered > bufLen) hasBuf = true;
-}
-
-
-
-/// @brief Set parameters
-/// @param chan
-/// @param rate
-/// @param bps
-///
-void StreamAudioProvider::SetParams(int chan,int rate,int bps) {
- channels = chan;
- sample_rate = rate;
- bytes_per_sample = bps;
-}
-
-
-
-/// @brief Buffer chunk constructor
-///
-StreamAudioProvider::BufferChunk::BufferChunk() {
- buf.resize(BUFSIZE);
- isFree = true;
-}
-
-
diff --git a/aegisub/src/audio_provider_stream.h b/aegisub/src/audio_provider_stream.h
deleted file mode 100644
index ef3904d93..000000000
--- a/aegisub/src/audio_provider_stream.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2006, Rodrigo Braz Monteiro
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// * Neither the name of the Aegisub Group nor the names of its contributors
-// may be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Aegisub Project http://www.aegisub.org/
-//
-// $Id$
-
-/// @file audio_provider_stream.h
-/// @see audio_provider_stream.cpp
-/// @ingroup audio_input
-///
-
-
-///////////
-// Headers
-#ifndef AGI_PRE
-#include
-#include
-#endif
-
-#include "include/aegisub/audio_provider.h"
-
-
-/// DOCME
-/// @class StreamAudioProvider
-/// @brief DOCME
-///
-/// DOCME
-class StreamAudioProvider : public AudioProvider {
-private:
-
- /// DOCME
- /// @class BufferChunk
- /// @brief DOCME
- ///
- /// DOCME
- class BufferChunk {
- public:
-
- /// DOCME
- std::vector buf;
-
- /// DOCME
- bool isFree;
- BufferChunk();
- };
-
-
- /// DOCME
- std::list buffer;
-
- /// DOCME
- int startPos;
-
- /// DOCME
- int endPos;
-
- /// DOCME
- int bufLen;
-
-
- /// DOCME
- int buffered;
-
- /// DOCME
- bool hasBuf;
-
-public:
- StreamAudioProvider();
- ~StreamAudioProvider();
-
- // The AreSamplesNativeEndian() method is intentionally missing.
- // This class was used with the experimental scrubbing code but never
- // used outside that.
- // The method is left out to make it break compilation in case it does
- // get used again, so it can get a review and stuff.
-
- void GetAudio(void *buf, int64_t start, int64_t count);
- void Append(void *buf, int64_t count);
- void SetParams(int channels,int rate,int bps);
-};
-
-