summaryrefslogtreecommitdiffstats
path: root/variablespeed/jni/ring_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'variablespeed/jni/ring_buffer.h')
-rw-r--r--variablespeed/jni/ring_buffer.h117
1 files changed, 0 insertions, 117 deletions
diff --git a/variablespeed/jni/ring_buffer.h b/variablespeed/jni/ring_buffer.h
deleted file mode 100644
index 8afe436..0000000
--- a/variablespeed/jni/ring_buffer.h
+++ /dev/null
@@ -1,117 +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_RING_BUFFER_H_
-#define FRAMEWORKS_EX_VARIABLESPEED_JNI_RING_BUFFER_H_
-
-#include <vector>
-
-#include "integral_types.h"
-#include "macros.h"
-
-// Circular buffer of multichannel audio, maintaining the position of the
-// writing head and several reading head, and providing a method for
-// accessing a contiguous block (through direct reference or the copy in a
-// temporary read buffer in case the requested block crosses the buffer
-// boundaries).
-//
-// This code is not thread-safe.
-
-namespace video_editing {
-
-class RingBuffer {
- public:
- RingBuffer();
- virtual ~RingBuffer();
-
- // Initializes a RingBuffer.
- // @param size: size of the buffer in frames.
- // @param num_channels: number of channels of the original audio.
- // @param num_readers: number of reading heads.
- void Init(int size, int num_channels, int num_readers);
-
- // Gets the position of a reading head.
- // @param reader reading head index.
- // @returns position pointed to by the #reader reading head.
- int64 Tell(int reader) const;
-
- // Moves a reading head.
- // @param reader reading head index.
- // @param position target position.
- void Seek(int reader, int64 position);
-
- // Reads samples for a reading head.
- // @param reader reading head index.
- // @param num_frames number of frames to read.
- // @param destination float buffer to which the samples will be written.
- void Copy(int reader, float* destination, int num_frames) const;
-
- // Writes samples.
- // @param samples float buffer containing the samples.
- // @param num_frames number of frames to write.
- void Write(const float* samples, int num_frames);
-
- // Flushes the content of the buffer and reset the position of the heads.
- void Reset();
-
- // Returns the number of frames we can still write.
- int overhead() const;
-
- // Returns the number of frames we can read for a given reader.
- // @param reader reading head index.
- int available(int reader) const;
-
- // Returns a pointer to num_frames x num_channels contiguous samples for
- // a given reader. In most cases this directly returns a pointer to the
- // data in the ring buffer. However, if the required block wraps around the
- // boundaries of the ring buffer, the data is copied to a temporary buffer
- // owned by the RingBuffer object.
- // @param reader reading head index.
- // @param num_frames number of frames to read.
- // @returns pointer to a continuous buffer containing num_frames.
- float* GetPointer(int reader, int num_frames);
-
- // Merges updated data back into the ring buffer, if it was updated in
- // the temporary buffer. This operation follows a GetPointer() that
- // was used to obtain data to rewrite. The buffer address supplied
- // here must match the one returned by GetPointer().
- // @param reader reading head index.
- // @param source pointer to a continuous buffer containing num_frames.
- // @param num_frames number of frames to copy back to the ring buffer.
- void MergeBack(int reader, const float* source, int num_frames);
-
- private:
- // Returns the position of the laziest reader.
- int64 GetTail() const;
-
- bool initialized_;
- float* samples_;
- std::vector<int64> readers_;
- int size_;
- int num_channels_;
- int num_readers_;
- int64 head_logical_;
- int head_;
-
- float* temp_read_buffer_;
- int temp_read_buffer_size_;
-
- DISALLOW_COPY_AND_ASSIGN(RingBuffer);
-};
-
-} // namespace video_editing
-
-#endif // FRAMEWORKS_EX_VARIABLESPEED_JNI_RING_BUFFER_H_