summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-03-09 17:01:47 -0700
committerWei Jia <wjia@google.com>2015-03-09 17:01:47 -0700
commit5833b6aad2c46ba516bdc8262f4fc4667e8018ed (patch)
treeff4014a0c9a409d1849bf9d2c7583a361ff9637b /media/libmediaplayerservice/nuplayer
parente8c9a8f78a9f9213060e5d54a15cde364df3e0d0 (diff)
downloadframeworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.zip
frameworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.tar.gz
frameworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.tar.bz2
mediaplayer: move MediaClock from NuPlayer to libstagefright.
Bug: 19666434 Change-Id: I86865e594226419bbbbee217098f96434e43afbe
Diffstat (limited to 'media/libmediaplayerservice/nuplayer')
-rw-r--r--media/libmediaplayerservice/nuplayer/Android.mk1
-rw-r--r--media/libmediaplayerservice/nuplayer/MediaClock.cpp139
-rw-r--r--media/libmediaplayerservice/nuplayer/MediaClock.h77
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp3
4 files changed, 1 insertions, 219 deletions
diff --git a/media/libmediaplayerservice/nuplayer/Android.mk b/media/libmediaplayerservice/nuplayer/Android.mk
index e2c72ed..6609874 100644
--- a/media/libmediaplayerservice/nuplayer/Android.mk
+++ b/media/libmediaplayerservice/nuplayer/Android.mk
@@ -4,7 +4,6 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
GenericSource.cpp \
HTTPLiveSource.cpp \
- MediaClock.cpp \
NuPlayer.cpp \
NuPlayerCCDecoder.cpp \
NuPlayerDecoder.cpp \
diff --git a/media/libmediaplayerservice/nuplayer/MediaClock.cpp b/media/libmediaplayerservice/nuplayer/MediaClock.cpp
deleted file mode 100644
index 9152da1..0000000
--- a/media/libmediaplayerservice/nuplayer/MediaClock.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2015 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 "MediaClock"
-#include <utils/Log.h>
-
-#include "MediaClock.h"
-
-#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/foundation/ALooper.h>
-
-namespace android {
-
-MediaClock::MediaClock()
- : mAnchorTimeMediaUs(-1),
- mAnchorTimeRealUs(-1),
- mMaxTimeMediaUs(INT64_MAX),
- mStartingTimeMediaUs(-1),
- mPlaybackRate(1.0) {
-}
-
-MediaClock::~MediaClock() {
-}
-
-void MediaClock::setStartingTimeMedia(int64_t startingTimeMediaUs) {
- Mutex::Autolock autoLock(mLock);
- mStartingTimeMediaUs = startingTimeMediaUs;
-}
-
-void MediaClock::clearAnchor() {
- Mutex::Autolock autoLock(mLock);
- mAnchorTimeMediaUs = -1;
- mAnchorTimeRealUs = -1;
-}
-
-void MediaClock::updateAnchor(
- int64_t anchorTimeMediaUs,
- int64_t anchorTimeRealUs,
- int64_t maxTimeMediaUs) {
- if (anchorTimeMediaUs < 0 || anchorTimeRealUs < 0) {
- ALOGW("reject anchor time since it is negative.");
- return;
- }
-
- Mutex::Autolock autoLock(mLock);
- int64_t nowUs = ALooper::GetNowUs();
- int64_t nowMediaUs =
- anchorTimeMediaUs + (nowUs - anchorTimeRealUs) * (double)mPlaybackRate;
- if (nowMediaUs < 0) {
- ALOGW("reject anchor time since it leads to negative media time.");
- return;
- }
- mAnchorTimeRealUs = nowUs;
- mAnchorTimeMediaUs = nowMediaUs;
- mMaxTimeMediaUs = maxTimeMediaUs;
-}
-
-void MediaClock::updateMaxTimeMedia(int64_t maxTimeMediaUs) {
- Mutex::Autolock autoLock(mLock);
- mMaxTimeMediaUs = maxTimeMediaUs;
-}
-
-void MediaClock::setPlaybackRate(float rate) {
- CHECK_GE(rate, 0.0);
- Mutex::Autolock autoLock(mLock);
- if (mAnchorTimeRealUs == -1) {
- mPlaybackRate = rate;
- return;
- }
-
- int64_t nowUs = ALooper::GetNowUs();
- mAnchorTimeMediaUs += (nowUs - mAnchorTimeRealUs) * (double)mPlaybackRate;
- if (mAnchorTimeMediaUs < 0) {
- ALOGW("setRate: anchor time should not be negative, set to 0.");
- mAnchorTimeMediaUs = 0;
- }
- mAnchorTimeRealUs = nowUs;
- mPlaybackRate = rate;
-}
-
-status_t MediaClock::getMediaTime(
- int64_t realUs, int64_t *outMediaUs, bool allowPastMaxTime) {
- Mutex::Autolock autoLock(mLock);
- return getMediaTime_l(realUs, outMediaUs, allowPastMaxTime);
-}
-
-status_t MediaClock::getMediaTime_l(
- int64_t realUs, int64_t *outMediaUs, bool allowPastMaxTime) {
- if (mAnchorTimeRealUs == -1) {
- return NO_INIT;
- }
-
- int64_t mediaUs = mAnchorTimeMediaUs
- + (realUs - mAnchorTimeRealUs) * (double)mPlaybackRate;
- if (mediaUs > mMaxTimeMediaUs && !allowPastMaxTime) {
- mediaUs = mMaxTimeMediaUs;
- }
- if (mediaUs < mStartingTimeMediaUs) {
- mediaUs = mStartingTimeMediaUs;
- }
- if (mediaUs < 0) {
- mediaUs = 0;
- }
- *outMediaUs = mediaUs;
- return OK;
-}
-
-status_t MediaClock::getRealTimeFor(int64_t targetMediaUs, int64_t *outRealUs) {
- Mutex::Autolock autoLock(mLock);
- if (mPlaybackRate == 0.0) {
- return NO_INIT;
- }
-
- int64_t nowUs = ALooper::GetNowUs();
- int64_t nowMediaUs;
- status_t status =
- getMediaTime_l(nowUs, &nowMediaUs, true /* allowPastMaxTime */);
- if (status != OK) {
- return status;
- }
- *outRealUs = (targetMediaUs - nowMediaUs) / (double)mPlaybackRate + nowUs;
- return OK;
-}
-
-} // namespace android
diff --git a/media/libmediaplayerservice/nuplayer/MediaClock.h b/media/libmediaplayerservice/nuplayer/MediaClock.h
deleted file mode 100644
index 660764f..0000000
--- a/media/libmediaplayerservice/nuplayer/MediaClock.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2015 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 MEDIA_CLOCK_H_
-
-#define MEDIA_CLOCK_H_
-
-#include <media/stagefright/foundation/ABase.h>
-#include <utils/Mutex.h>
-#include <utils/RefBase.h>
-
-namespace android {
-
-struct AMessage;
-
-struct MediaClock : public RefBase {
- MediaClock();
-
- void setStartingTimeMedia(int64_t startingTimeMediaUs);
-
- void clearAnchor();
- // It's required to use timestamp of just rendered frame as
- // anchor time in paused state.
- void updateAnchor(
- int64_t anchorTimeMediaUs,
- int64_t anchorTimeRealUs,
- int64_t maxTimeMediaUs = INT64_MAX);
-
- void updateMaxTimeMedia(int64_t maxTimeMediaUs);
-
- void setPlaybackRate(float rate);
-
- // query media time corresponding to real time |realUs|, and save the
- // result in |outMediaUs|.
- status_t getMediaTime(int64_t realUs,
- int64_t *outMediaUs,
- bool allowPastMaxTime = false);
- // query real time corresponding to media time |targetMediaUs|.
- // The result is saved in |outRealUs|.
- status_t getRealTimeFor(int64_t targetMediaUs, int64_t *outRealUs);
-
-protected:
- virtual ~MediaClock();
-
-private:
- status_t getMediaTime_l(int64_t realUs,
- int64_t *outMediaUs,
- bool allowPastMaxTime);
-
- Mutex mLock;
-
- int64_t mAnchorTimeMediaUs;
- int64_t mAnchorTimeRealUs;
- int64_t mMaxTimeMediaUs;
- int64_t mStartingTimeMediaUs;
-
- float mPlaybackRate;
-
- DISALLOW_EVIL_CONSTRUCTORS(MediaClock);
-};
-
-} // namespace android
-
-#endif // MEDIA_CLOCK_H_
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index e491a31..6f19ba5 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -20,13 +20,12 @@
#include "NuPlayerRenderer.h"
-#include "MediaClock.h"
-
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/AUtils.h>
#include <media/stagefright/foundation/AWakeLock.h>
+#include <media/stagefright/MediaClock.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/Utils.h>