summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2012-03-05 19:28:02 -0800
committerJames Dong <jdong@google.com>2012-03-05 19:30:08 -0800
commit054a5a69374efae97924c83c2ee7ec7210bf3283 (patch)
treeccd1e4c1571bf8e00367601743780c15510f4f77 /media
parent985ed9a1a22ec7e6e245d3fb8e93d3a23bdc539b (diff)
downloadframeworks_av-054a5a69374efae97924c83c2ee7ec7210bf3283.zip
frameworks_av-054a5a69374efae97924c83c2ee7ec7210bf3283.tar.gz
frameworks_av-054a5a69374efae97924c83c2ee7ec7210bf3283.tar.bz2
Remove unused code - MediaSourceSplitter
Change-Id: Icf37832a1c234501ee3ff91ff13eece2242425ae
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/Android.mk1
-rw-r--r--media/libstagefright/MediaSourceSplitter.cpp234
2 files changed, 0 insertions, 235 deletions
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 21d6866..5aea8d0 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -34,7 +34,6 @@ LOCAL_SRC_FILES:= \
MediaDefs.cpp \
MediaExtractor.cpp \
MediaSource.cpp \
- MediaSourceSplitter.cpp \
MetaData.cpp \
NuCachedSource2.cpp \
NuMediaExtractor.cpp \
diff --git a/media/libstagefright/MediaSourceSplitter.cpp b/media/libstagefright/MediaSourceSplitter.cpp
deleted file mode 100644
index 3b64ded..0000000
--- a/media/libstagefright/MediaSourceSplitter.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-
-//#define LOG_NDEBUG 0
-#define LOG_TAG "MediaSourceSplitter"
-#include <utils/Log.h>
-
-#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/MediaSourceSplitter.h>
-#include <media/stagefright/MediaBuffer.h>
-#include <media/stagefright/MetaData.h>
-
-namespace android {
-
-MediaSourceSplitter::MediaSourceSplitter(sp<MediaSource> mediaSource) {
- mNumberOfClients = 0;
- mSource = mediaSource;
- mSourceStarted = false;
-
- mNumberOfClientsStarted = 0;
- mNumberOfCurrentReads = 0;
- mCurrentReadBit = 0;
- mLastReadCompleted = true;
-}
-
-MediaSourceSplitter::~MediaSourceSplitter() {
-}
-
-sp<MediaSource> MediaSourceSplitter::createClient() {
- Mutex::Autolock autoLock(mLock);
-
- sp<MediaSource> client = new Client(this, mNumberOfClients++);
- mClientsStarted.push(false);
- mClientsDesiredReadBit.push(0);
- return client;
-}
-
-status_t MediaSourceSplitter::start(int clientId, MetaData *params) {
- Mutex::Autolock autoLock(mLock);
-
- ALOGV("start client (%d)", clientId);
- if (mClientsStarted[clientId]) {
- return OK;
- }
-
- mNumberOfClientsStarted++;
-
- if (!mSourceStarted) {
- ALOGV("Starting real source from client (%d)", clientId);
- status_t err = mSource->start(params);
-
- if (err == OK) {
- mSourceStarted = true;
- mClientsStarted.editItemAt(clientId) = true;
- mClientsDesiredReadBit.editItemAt(clientId) = !mCurrentReadBit;
- }
-
- return err;
- } else {
- mClientsStarted.editItemAt(clientId) = true;
- if (mLastReadCompleted) {
- // Last read was completed. So join in the threads for the next read.
- mClientsDesiredReadBit.editItemAt(clientId) = !mCurrentReadBit;
- } else {
- // Last read is ongoing. So join in the threads for the current read.
- mClientsDesiredReadBit.editItemAt(clientId) = mCurrentReadBit;
- }
- return OK;
- }
-}
-
-status_t MediaSourceSplitter::stop(int clientId) {
- Mutex::Autolock autoLock(mLock);
-
- ALOGV("stop client (%d)", clientId);
- CHECK(clientId >= 0 && clientId < mNumberOfClients);
- CHECK(mClientsStarted[clientId]);
-
- if (--mNumberOfClientsStarted == 0) {
- ALOGV("Stopping real source from client (%d)", clientId);
- status_t err = mSource->stop();
- mSourceStarted = false;
- mClientsStarted.editItemAt(clientId) = false;
- return err;
- } else {
- mClientsStarted.editItemAt(clientId) = false;
- if (!mLastReadCompleted && (mClientsDesiredReadBit[clientId] == mCurrentReadBit)) {
- // !mLastReadCompleted implies that buffer has been read from source, but all
- // clients haven't read it.
- // mClientsDesiredReadBit[clientId] == mCurrentReadBit implies that this
- // client would have wanted to read from this buffer. (i.e. it has not yet
- // called read() for the current read buffer.)
- // Since other threads may be waiting for all the clients' reads to complete,
- // signal that this read has been aborted.
- signalReadComplete_lock(true);
- }
- return OK;
- }
-}
-
-sp<MetaData> MediaSourceSplitter::getFormat(int clientId) {
- Mutex::Autolock autoLock(mLock);
-
- ALOGV("getFormat client (%d)", clientId);
- return mSource->getFormat();
-}
-
-status_t MediaSourceSplitter::read(int clientId,
- MediaBuffer **buffer, const MediaSource::ReadOptions *options) {
- Mutex::Autolock autoLock(mLock);
-
- CHECK(clientId >= 0 && clientId < mNumberOfClients);
-
- ALOGV("read client (%d)", clientId);
- *buffer = NULL;
-
- if (!mClientsStarted[clientId]) {
- return OK;
- }
-
- if (mCurrentReadBit != mClientsDesiredReadBit[clientId]) {
- // Desired buffer has not been read from source yet.
-
- // If the current client is the special client with clientId = 0
- // then read from source, else wait until the client 0 has finished
- // reading from source.
- if (clientId == 0) {
- // Wait for all client's last read to complete first so as to not
- // corrupt the buffer at mLastReadMediaBuffer.
- waitForAllClientsLastRead_lock(clientId);
-
- readFromSource_lock(options);
- *buffer = mLastReadMediaBuffer;
- } else {
- waitForReadFromSource_lock(clientId);
-
- *buffer = mLastReadMediaBuffer;
- (*buffer)->add_ref();
- }
- CHECK(mCurrentReadBit == mClientsDesiredReadBit[clientId]);
- } else {
- // Desired buffer has already been read from source. Use the cached data.
- CHECK(clientId != 0);
-
- *buffer = mLastReadMediaBuffer;
- (*buffer)->add_ref();
- }
-
- mClientsDesiredReadBit.editItemAt(clientId) = !mClientsDesiredReadBit[clientId];
- signalReadComplete_lock(false);
-
- return mLastReadStatus;
-}
-
-void MediaSourceSplitter::readFromSource_lock(const MediaSource::ReadOptions *options) {
- mLastReadStatus = mSource->read(&mLastReadMediaBuffer , options);
-
- mCurrentReadBit = !mCurrentReadBit;
- mLastReadCompleted = false;
- mReadFromSourceCondition.broadcast();
-}
-
-void MediaSourceSplitter::waitForReadFromSource_lock(int32_t clientId) {
- mReadFromSourceCondition.wait(mLock);
-}
-
-void MediaSourceSplitter::waitForAllClientsLastRead_lock(int32_t clientId) {
- if (mLastReadCompleted) {
- return;
- }
- mAllReadsCompleteCondition.wait(mLock);
- CHECK(mLastReadCompleted);
-}
-
-void MediaSourceSplitter::signalReadComplete_lock(bool readAborted) {
- if (!readAborted) {
- mNumberOfCurrentReads++;
- }
-
- if (mNumberOfCurrentReads == mNumberOfClientsStarted) {
- mLastReadCompleted = true;
- mNumberOfCurrentReads = 0;
- mAllReadsCompleteCondition.broadcast();
- }
-}
-
-status_t MediaSourceSplitter::pause(int clientId) {
- return ERROR_UNSUPPORTED;
-}
-
-// Client
-
-MediaSourceSplitter::Client::Client(
- sp<MediaSourceSplitter> splitter,
- int32_t clientId) {
- mSplitter = splitter;
- mClientId = clientId;
-}
-
-status_t MediaSourceSplitter::Client::start(MetaData *params) {
- return mSplitter->start(mClientId, params);
-}
-
-status_t MediaSourceSplitter::Client::stop() {
- return mSplitter->stop(mClientId);
-}
-
-sp<MetaData> MediaSourceSplitter::Client::getFormat() {
- return mSplitter->getFormat(mClientId);
-}
-
-status_t MediaSourceSplitter::Client::read(
- MediaBuffer **buffer, const ReadOptions *options) {
- return mSplitter->read(mClientId, buffer, options);
-}
-
-status_t MediaSourceSplitter::Client::pause() {
- return mSplitter->pause(mClientId);
-}
-
-} // namespace android