summaryrefslogtreecommitdiffstats
path: root/variablespeed/jni/variablespeed.h
diff options
context:
space:
mode:
Diffstat (limited to 'variablespeed/jni/variablespeed.h')
-rw-r--r--variablespeed/jni/variablespeed.h167
1 files changed, 0 insertions, 167 deletions
diff --git a/variablespeed/jni/variablespeed.h b/variablespeed/jni/variablespeed.h
deleted file mode 100644
index 74710e5..0000000
--- a/variablespeed/jni/variablespeed.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FRAMEWORKS_EX_VARIABLESPEED_JNI_VARIABLESPEED_H_
-#define FRAMEWORKS_EX_VARIABLESPEED_JNI_VARIABLESPEED_H_
-
-#include <jni.h>
-
-#include <SLES/OpenSLES.h>
-#include <SLES/OpenSLES_Android.h>
-#include <SLES/OpenSLES_AndroidConfiguration.h>
-
-#include <integral_types.h>
-#include <utils/threads.h>
-
-#include <profile_timer.h>
-#include <decode_buffer.h>
-
-#include <queue>
-#include <stack>
-
-namespace video_editing {
- class SolaTimeScaler;
-}
-
-// This is the audio engine class.
-// It forms the bulk of the variablespeed library.
-// It should not be used directly, but rather used indirectly from the java
-// native methods.
-class AudioEngine {
- public:
- AudioEngine(size_t targetFrames, float windowDuration,
- float windowOverlapDuration, size_t maxPlayBufferCount,
- float initialRate, size_t decodeInitialSize, size_t decodeMaxSize,
- size_t startPositionMillis, int audioStreamType);
- virtual ~AudioEngine();
-
- bool PlayUri(const char* uri);
- bool PlayFileDescriptor(int fd, int64 offset, int64 length);
- void SetVariableSpeed(float speed);
- void RequestStart();
- void RequestStop();
- int GetCurrentPosition();
- int GetTotalDuration();
-
- void DecodingBufferQueueCallback(
- SLAndroidSimpleBufferQueueItf queueItf, void *context);
- void DecodingEventCallback(SLPlayItf caller, SLuint32 event);
- void PrefetchEventCallback(SLPrefetchStatusItf caller, SLuint32 event);
- void PlayingBufferQueueCallback();
-
- static AudioEngine* GetEngine();
- static void SetEngine(AudioEngine* engine);
- static bool CompareAndSetEngine(AudioEngine* expect, AudioEngine* update);
- static void DeleteEngine();
-
- private:
- bool PlayFromThisSource(const SLDataSource& audioSrc);
- void EnqueueMoreAudioIfNecessary(SLAndroidSimpleBufferQueueItf bufferQueue);
- bool EnqueueNextBufferOfAudio(SLAndroidSimpleBufferQueueItf bufferQueue);
- void PrefetchDurationSampleRateAndChannels(
- SLPlayItf playItf, SLPrefetchStatusItf prefetchItf);
- video_editing::SolaTimeScaler* GetTimeScaler();
- bool Finished();
- bool GetWasStartRequested();
- bool GetWasStopRequested();
- void ClearRequestStart();
- void SetEndOfDecoderReached();
- bool GetEndOfDecoderReached();
- bool DecodeBufferTooFull();
- void ClearDecodeBuffer();
- bool IsDecodeBufferEmpty();
- bool GetHasReachedPlayingBuffersLimit();
- bool HasSampleRateAndChannels();
- SLuint32 GetSLSampleRate();
- SLuint32 GetSLChannels();
- SLuint32 GetChannelCount();
-
- // The single global audio engine instance.
- static AudioEngine* audioEngine_;
-
- // Protects access to the shared decode buffer.
- android::Mutex decodeBufferLock_;
- // Buffer into which we put the audio data as we decode.
- // Protected by decodeBufferLock_.
- DecodeBuffer decodeBuffer_;
-
- // Protects access to the playingBuffers_ and freeBuffers_.
- android::Mutex playBufferLock_;
- // The buffers we're using for playback.
- std::queue<int16*> playingBuffers_;
- std::stack<int16*> freeBuffers_;
-
- // The time scaler.
- video_editing::SolaTimeScaler* timeScaler_;
-
- // The frame buffer, used for converting between PCM data and float for
- // time scaler.
- float* floatBuffer_;
- float* injectBuffer_;
-
- // Required when we create the audio player.
- // Set during the first callback from the decoder.
- // Guarded by callbackLock_.
- SLuint32 mSampleRate;
- SLuint32 mChannels;
-
- size_t targetFrames_;
- float windowDuration_;
- float windowOverlapDuration_;
- size_t maxPlayBufferCount_;
- float initialRate_;
- size_t startPositionMillis_;
- // The type of audio stream as defined by the STREAM_XXX constants in
- // android.media.AudioManager. These constant values actually match the
- // corresponding SL_ANDROID_STREAM_XXX constants defined by
- // include/SLES/OpenSLES_AndroidConfiguration.h
- int audioStreamType_;
-
- // The prefetch callback signal, for letting the prefetch callback method
- // indicate when it is done.
- android::Mutex prefetchLock_;
- android::Condition prefetchCondition_;
-
- // Protects access to the CallbackContext object.
- // I don't believe this to be necessary, I think that it's thread-confined,
- // but it also won't do any harm.
- android::Mutex callbackLock_;
-
- // Protects access to the shared member variables below.
- android::Mutex lock_;
- // Protected by lock_.
- // Stores the total duration of the track.
- SLmillisecond totalDurationMs_;
- // Protected by lock_.
- // Stores the current position of the decoder head.
- SLmillisecond decoderCurrentPosition_;
- // Protected by lock_.
- // Set externally via RequestStart(), this determines when we begin to
- // playback audio.
- // Until this is set to true, our audio player will remain stopped.
- bool startRequested_;
- // Protected by lock_.
- // Set externally via RequestStop(), this tells us top stop playing
- // and therefore shut everything down.
- bool stopRequested_;
- // Protected by lock_.
- // This is set to true once we reach the end of the decoder stream.
- bool finishedDecoding_;
-
- DISALLOW_COPY_AND_ASSIGN(AudioEngine);
-};
-
-#endif // FRAMEWORKS_EX_VARIABLESPEED_JNI_VARIABLESPEED_H_